From fb7bcb50e50b7e0038e8545c762c2c4ded5dc96f Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 23 Jun 2023 13:20:02 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20feat(loading.py):=20add=20suppor?= =?UTF-8?q?t=20for=20MongoDBAtlasVectorSearch=20vector=20store=20The=20`in?= =?UTF-8?q?stantiate=5Fvectorstore`=20function=20now=20supports=20the=20`M?= =?UTF-8?q?ongoDBAtlasVectorSearch`=20vector=20store.=20This=20allows=20fo?= =?UTF-8?q?r=20the=20use=20of=20MongoDB=20Atlas=20as=20a=20vector=20store?= =?UTF-8?q?=20for=20Langflow.=20The=20`search=5Fkwargs`=20parameter=20is?= =?UTF-8?q?=20now=20supported=20for=20all=20vector=20stores=20that=20have?= =?UTF-8?q?=20a=20`as=5Fretriever`=20method.=20This=20allows=20for=20the?= =?UTF-8?q?=20configuration=20of=20the=20vector=20store's=20search=20param?= =?UTF-8?q?eters.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../langflow/interface/initialize/loading.py | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/backend/langflow/interface/initialize/loading.py b/src/backend/langflow/interface/initialize/loading.py index cf29b01b5..41e4e9488 100644 --- a/src/backend/langflow/interface/initialize/loading.py +++ b/src/backend/langflow/interface/initialize/loading.py @@ -9,6 +9,7 @@ from langchain.agents.tools import BaseTool from langflow.interface.initialize.vector_store import ( initialize_chroma, initialize_faiss, + initialize_mongodb, initialize_pinecone, initialize_qdrant, initialize_supabase, @@ -149,29 +150,37 @@ def instantiate_embedding(class_object, params): def instantiate_vectorstore(class_object, params): + search_kwargs = params.pop("search_kwargs", {}) # could be documents or texts if class_object.__name__ == "Pinecone": - return initialize_pinecone(class_object, params) + vecstore = initialize_pinecone(class_object, params) # Chroma requires all metadata values to not be None elif class_object.__name__ == "Chroma": - return initialize_chroma(class_object, params) + vecstore = initialize_chroma(class_object, params) elif class_object.__name__ == "Qdrant": - return initialize_qdrant(class_object, params) + vecstore = initialize_qdrant(class_object, params) elif class_object.__name__ == "Weaviate": - return initialize_weaviate(class_object, params) + vecstore = initialize_weaviate(class_object, params) elif class_object.__name__ == "FAISS": - return initialize_faiss(class_object, params) + vecstore = initialize_faiss(class_object, params) elif class_object.__name__ == "SupabaseVectorStore": - return initialize_supabase(class_object, params) + vecstore = initialize_supabase(class_object, params) + elif class_object.__name__ == "MongoDBAtlasVectorSearch": + vecstore = initialize_mongodb(class_object, params) else: if "texts" in params: params["documents"] = params.pop("texts") - vector_store = class_object.from_documents(**params) - return vector_store + vecstore = class_object.from_documents(**params) + + # ! This might not work. Need to test + if search_kwargs and hasattr(vecstore, "as_retriever"): + vecstore = vecstore.as_retriever(search_kwargs=search_kwargs) + + return vecstore def instantiate_documentloader(class_object, params):