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](8cbce684d4/libs/langchain/langchain/retrievers/self_query/base.py (L73))
points to the
[deprecated](acaf214a45/libs/community/langchain_community/vectorstores/mongodb_atlas.py (L36))
vectorstore.

**Issue:** 
#22272

---------

Co-authored-by: Bagatur <baskaryan@gmail.com>
Co-authored-by: Bagatur <22008038+baskaryan@users.noreply.github.com>
This commit is contained in:
bhardwaj-vipul 2024-06-04 03:40:15 +05:30 committed by GitHub
parent afe89a1411
commit f397a84a59
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -64,13 +64,11 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
from langchain_community.query_constructors.weaviate import WeaviateTranslator from langchain_community.query_constructors.weaviate import WeaviateTranslator
from langchain_community.vectorstores import ( from langchain_community.vectorstores import (
AstraDB, AstraDB,
Chroma,
DashVector, DashVector,
DatabricksVectorSearch, DatabricksVectorSearch,
DeepLake, DeepLake,
Dingo, Dingo,
Milvus, Milvus,
MongoDBAtlasVectorSearch,
MyScale, MyScale,
OpenSearchVectorSearch, OpenSearchVectorSearch,
PGVector, PGVector,
@ -82,9 +80,15 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
Vectara, Vectara,
Weaviate, Weaviate,
) )
from langchain_community.vectorstores import (
Chroma as CommunityChroma,
)
from langchain_community.vectorstores import ( from langchain_community.vectorstores import (
ElasticsearchStore as ElasticsearchStoreCommunity, ElasticsearchStore as ElasticsearchStoreCommunity,
) )
from langchain_community.vectorstores import (
MongoDBAtlasVectorSearch as CommunityMongoDBAtlasVectorSearch,
)
from langchain_community.vectorstores import ( from langchain_community.vectorstores import (
Pinecone as CommunityPinecone, Pinecone as CommunityPinecone,
) )
@ -93,7 +97,7 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
AstraDB: AstraDBTranslator, AstraDB: AstraDBTranslator,
PGVector: PGVectorTranslator, PGVector: PGVectorTranslator,
CommunityPinecone: PineconeTranslator, CommunityPinecone: PineconeTranslator,
Chroma: ChromaTranslator, CommunityChroma: ChromaTranslator,
DashVector: DashvectorTranslator, DashVector: DashvectorTranslator,
Dingo: DingoDBTranslator, Dingo: DingoDBTranslator,
Weaviate: WeaviateTranslator, Weaviate: WeaviateTranslator,
@ -106,7 +110,7 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
SupabaseVectorStore: SupabaseVectorTranslator, SupabaseVectorStore: SupabaseVectorTranslator,
TimescaleVector: TimescaleVectorTranslator, TimescaleVector: TimescaleVectorTranslator,
OpenSearchVectorSearch: OpenSearchTranslator, OpenSearchVectorSearch: OpenSearchTranslator,
MongoDBAtlasVectorSearch: MongoDBAtlasTranslator, CommunityMongoDBAtlasVectorSearch: MongoDBAtlasTranslator,
} }
if isinstance(vectorstore, DatabricksVectorSearch): if isinstance(vectorstore, DatabricksVectorSearch):
return DatabricksVectorSearchTranslator() return DatabricksVectorSearchTranslator()
@ -148,6 +152,22 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
if isinstance(vectorstore, PineconeVectorStore): if isinstance(vectorstore, PineconeVectorStore):
return PineconeTranslator() 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( raise ValueError(
f"Self query retriever with Vector Store type {vectorstore.__class__}" f"Self query retriever with Vector Store type {vectorstore.__class__}"
f" not supported." f" not supported."