{"record":{"id":"f74a7d1c75f199bf","repo":"mem0ai/mem0","slug":"provided-langchain-client-does-not-appear-to-be","errorCode":null,"errorMessage":"Provided Langchain 'client' does not appear to be a valid Langchain VectorStore (missing addVectors or similaritySearchVectorWithScore method).","messagePattern":"Provided Langchain 'client' does not appear to be a valid Langchain VectorStore \\(missing addVectors or similaritySearchVectorWithScore method\\)\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"mem0-ts/src/oss/src/vector_stores/langchain.ts","lineNumber":27,"sourceCode":"}\n\nexport class LangchainVectorStore implements VectorStore {\n  private lcStore: LangchainVectorStoreInterface;\n  private dimension?: number;\n  private storeUserId: string = \"anonymous-langchain-user\"; // Simple in-memory user ID\n\n  constructor(config: LangchainStoreConfig) {\n    if (!config.client || typeof config.client !== \"object\") {\n      throw new Error(\n        \"Langchain vector store provider requires an initialized Langchain VectorStore instance passed via the 'client' field.\",\n      );\n    }\n    // Basic checks for core methods\n    if (\n      typeof config.client.addVectors !== \"function\" ||\n      typeof config.client.similaritySearchVectorWithScore !== \"function\"\n    ) {\n      throw new Error(\n        \"Provided Langchain 'client' does not appear to be a valid Langchain VectorStore (missing addVectors or similaritySearchVectorWithScore method).\",\n      );\n    }\n\n    this.lcStore = config.client;\n    this.dimension = config.dimension;\n\n    // Attempt to get dimension from the underlying store if not provided\n    if (\n      !this.dimension &&\n      (this.lcStore as any).embeddings?.embeddingDimension\n    ) {\n      this.dimension = (this.lcStore as any).embeddings.embeddingDimension;\n    }\n    if (\n      !this.dimension &&\n      (this.lcStore as any).embedding?.embeddingDimension\n    ) {","sourceCodeStart":9,"sourceCodeEnd":45,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0-ts/src/oss/src/vector_stores/langchain.ts#L9-L45","documentation":"The Langchain adapter duck-types the provided client: it requires addVectors and similaritySearchVectorWithScore to be functions, since those are the two methods the wrapper's insert and search depend on. If either is missing, the object is judged not to be a valid Langchain VectorStore and construction fails.","triggerScenarios":"Passing an arbitrary object, a mock without the required methods, a partial adapter, or a Langchain retriever/embeddings object instead of a VectorStore instance as config.client.","commonSituations":"Wrapping a custom store that implements search but not addVectors; passing a Langchain Retriever (retrievers have getRelevantDocuments, not similaritySearchVectorWithScore); version drift where an @langchain/community store renames methods.","solutions":["Pass a genuine Langchain VectorStore subclass instance (MemoryVectorStore, FAISS, Chroma, PGVectorStore, etc.).","If wrapping a custom store, implement addVectors(vectors, documents) and similaritySearchVectorWithScore(query, k) on it.","Check the installed @langchain/community version's VectorStore interface for method renames."],"exampleFix":"// before\nnew Memory({\n  vectorStore: { provider: 'langchain', config: { client: retriever } }, // wrong: retriever\n});\n\n// after\nnew Memory({\n  vectorStore: { provider: 'langchain', config: { client: new MemoryVectorStore(embeddings) } },\n});","handlingStrategy":"type-guard","validationCode":"const c: any = config.client;\nif (typeof c?.addVectors !== 'function' ||\n    typeof c?.similaritySearchVectorWithScore !== 'function') {\n  throw new Error('client must be a Langchain VectorStore with addVectors and similaritySearchVectorWithScore');\n}","typeGuard":"interface LangchainVectorStoreLike {\n  addVectors(vectors: number[][], documents: any[]): Promise<void>;\n  similaritySearchVectorWithScore(query: number[], k: number): Promise<[any, number][]>;\n  delete?(opts: any): Promise<void>;\n}\nconst isLangchainVectorStore = (c: unknown): c is LangchainVectorStoreLike =>\n  typeof c === 'object' && c !== null &&\n  typeof (c as any).addVectors === 'function' &&\n  typeof (c as any).similaritySearchVectorWithScore === 'function';","tryCatchPattern":null,"preventionTips":["Pass real Langchain VectorStore subclass instances, not retrievers or ad-hoc objects.","Custom stores must implement addVectors and similaritySearchVectorWithScore.","Check the installed @langchain/community version for interface changes."],"tags":["langchain","duck-typing","config","vector-store","typescript"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}