From f397a84a599c2c3c2d9d9c72bbee5589b4348475 Mon Sep 17 00:00:00 2001 From: bhardwaj-vipul <80268362+bhardwaj-vipul@users.noreply.github.com> Date: Tue, 4 Jun 2024 03:40:15 +0530 Subject: [PATCH] langchain[patch]: Fix MongoDBAtlasVectorSearch reference in self query retriever (#22401) **Description:** SelfQuery Retriever with MongoDBAtlasVectorSearch (from langchain_mongodb import MongoDBAtlasVectorSearch) and Chroma (from langchain_chroma import Chroma) is not supported. The imports in the [builtin translators](https://github.com/langchain-ai/langchain/blob/8cbce684d4ec861cfd45edc4585365db81b93afd/libs/langchain/langchain/retrievers/self_query/base.py#L73) points to the [deprecated](https://github.com/langchain-ai/langchain/blob/acaf214a4516a2ffbd2817f553f4d48e6a908695/libs/community/langchain_community/vectorstores/mongodb_atlas.py#L36) vectorstore. **Issue:** #22272 --------- Co-authored-by: Bagatur Co-authored-by: Bagatur <22008038+baskaryan@users.noreply.github.com> --- .../langchain/retrievers/self_query/base.py | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/libs/langchain/langchain/retrievers/self_query/base.py b/libs/langchain/langchain/retrievers/self_query/base.py index ce6dc6b68d8..092478f840b 100644 --- a/libs/langchain/langchain/retrievers/self_query/base.py +++ b/libs/langchain/langchain/retrievers/self_query/base.py @@ -64,13 +64,11 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor: from langchain_community.query_constructors.weaviate import WeaviateTranslator from langchain_community.vectorstores import ( AstraDB, - Chroma, DashVector, DatabricksVectorSearch, DeepLake, Dingo, Milvus, - MongoDBAtlasVectorSearch, MyScale, OpenSearchVectorSearch, PGVector, @@ -82,9 +80,15 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor: Vectara, Weaviate, ) + from langchain_community.vectorstores import ( + Chroma as CommunityChroma, + ) from langchain_community.vectorstores import ( ElasticsearchStore as ElasticsearchStoreCommunity, ) + from langchain_community.vectorstores import ( + MongoDBAtlasVectorSearch as CommunityMongoDBAtlasVectorSearch, + ) from langchain_community.vectorstores import ( Pinecone as CommunityPinecone, ) @@ -93,7 +97,7 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor: AstraDB: AstraDBTranslator, PGVector: PGVectorTranslator, CommunityPinecone: PineconeTranslator, - Chroma: ChromaTranslator, + CommunityChroma: ChromaTranslator, DashVector: DashvectorTranslator, Dingo: DingoDBTranslator, Weaviate: WeaviateTranslator, @@ -106,7 +110,7 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor: SupabaseVectorStore: SupabaseVectorTranslator, TimescaleVector: TimescaleVectorTranslator, OpenSearchVectorSearch: OpenSearchTranslator, - MongoDBAtlasVectorSearch: MongoDBAtlasTranslator, + CommunityMongoDBAtlasVectorSearch: MongoDBAtlasTranslator, } if isinstance(vectorstore, DatabricksVectorSearch): return DatabricksVectorSearchTranslator() @@ -148,6 +152,22 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor: if isinstance(vectorstore, PineconeVectorStore): return PineconeTranslator() + try: + from langchain_mongodb import MongoDBAtlasVectorSearch + except ImportError: + pass + else: + if isinstance(vectorstore, MongoDBAtlasVectorSearch): + return MongoDBAtlasTranslator() + + try: + from langchain_chroma import Chroma + except ImportError: + pass + else: + if isinstance(vectorstore, Chroma): + return ChromaTranslator() + raise ValueError( f"Self query retriever with Vector Store type {vectorstore.__class__}" f" not supported."