langchain-ai / langchain

🦜🔗 Build context-aware reasoning applications
https://python.langchain.com
MIT License
92.3k stars 14.75k forks source link

MMR NotImplimented in Neo4jVector.But the documentation says otherwise with an example implimentation of MMR #24768

Open AkashBais opened 1 month ago

AkashBais commented 1 month ago

Checked other resources

Example Code

  # model = SentenceTransformer(config.EMBEDDING_MODEL_NAME)
  KG_vector_store = Neo4jVector.from_existing_index(
      embedding=SentenceTransformerEmbeddings(model_name = config.EMBEDDING_MODEL_NAME),
      url=NEO4J_URI,
      username=NEO4J_USERNAME,
      password=NEO4J_PASSWORD,
      database="neo4j",
      index_name=VECTOR_INDEX_NAME,
      text_node_property=VECTOR_SOURCE_PROPERTY,
      retrieval_query=retrieval_query_extra_text, 
  )

  # Create a retriever from the vector store
  retriever_extra_text = KG_vector_store.as_retriever(
        search_type="mmr",
        search_kwargs={'k': 6, 'fetch_k': 50} #,'lambda_mult': 0.25
  )

image

Error Message and Stack Trace (if applicable)


NotImplementedError Traceback (most recent call last) in <cell line: 1>() ----> 1 rag.query("Please describe in detail what is the evidence report about?")['answer']

8 frames /content/RAG/KG_for_RAG/src/execute_rag.py in query(self, query) 318 self.init_graph_for_query() 319 --> 320 answer = self.QA_CHAIN.invoke( 321 {"question": query}, 322 return_only_outputs=True,

/usr/local/lib/python3.10/dist-packages/langchain/chains/base.py in invoke(self, input, config, **kwargs) 164 except BaseException as e: 165 run_manager.on_chain_error(e) --> 166 raise e 167 run_manager.on_chain_end(outputs) 168

/usr/local/lib/python3.10/dist-packages/langchain/chains/base.py in invoke(self, input, config, **kwargs) 154 self._validate_inputs(inputs) 155 outputs = ( --> 156 self._call(inputs, run_manager=run_manager) 157 if new_arg_supported 158 else self._call(inputs)

/usr/local/lib/python3.10/dist-packages/langchain/chains/qa_with_sources/base.py in _call(self, inputs, run_manager) 150 ) 151 if accepts_run_manager: --> 152 docs = self._get_docs(inputs, run_manager=_run_manager) 153 else: 154 docs = self._get_docs(inputs) # type: ignore[call-arg]

/usr/local/lib/python3.10/dist-packages/langchain/chains/qa_with_sources/retrieval.py in _get_docs(self, inputs, run_manager) 47 ) -> List[Document]: 48 question = inputs[self.question_key] ---> 49 docs = self.retriever.invoke( 50 question, config={"callbacks": run_manager.get_child()} 51 )

/usr/local/lib/python3.10/dist-packages/langchain_core/retrievers.py in invoke(self, input, config, **kwargs) 219 except Exception as e: 220 run_manager.on_retriever_error(e) --> 221 raise e 222 else: 223 run_manager.on_retriever_end(

/usr/local/lib/python3.10/dist-packages/langchain_core/retrievers.py in invoke(self, input, config, kwargs) 212 _kwargs = kwargs if self._expects_other_args else {} 213 if self._new_arg_supported: --> 214 result = self._get_relevant_documents( 215 input, run_manager=run_manager, _kwargs 216 )

/usr/local/lib/python3.10/dist-packages/langchain_core/vectorstores/base.py in _get_relevant_documents(self, query, runmanager) 1255 docs = [doc for doc, in docs_and_similarities] 1256 elif self.search_type == "mmr": -> 1257 docs = self.vectorstore.max_marginal_relevance_search( 1258 query, **self.search_kwargs 1259 )

/usr/local/lib/python3.10/dist-packages/langchain_core/vectorstores/base.py in max_marginal_relevance_search(self, query, k, fetch_k, lambda_mult, **kwargs) 929 List of Documents selected by maximal marginal relevance. 930 """ --> 931 raise NotImplementedError 932 933 async def amax_marginal_relevance_search(

NotImplementedError:

Description

MMR NotImplimented in Neo4jVector despite the documentation saying otherwise.

System Info

System Information

OS: Linux OS Version: #1 SMP PREEMPT_DYNAMIC Thu Jun 27 21:05:47 UTC 2024 Python Version: 3.10.12 (main, Mar 22 2024, 16:50:05) [GCC 11.4.0]

Package Information

langchain_core: 0.2.24 langchain: 0.2.11 langchain_community: 0.2.0 langsmith: 0.1.93 langchain_google_genai: 1.0.8 langchain_openai: 0.1.7 langchain_text_splitters: 0.2.2

baskaryan commented 1 month ago

cc @tomasonjo

tomasonjo commented 1 month ago

Where is this MMR example and documentation? MMR is not implemented with Neo4j

AkashBais commented 1 month ago

@tomasonjo I have attached a screenshot of the documentation