diff --git a/libs/community/langchain_community/vectorstores/neo4j_vector.py b/libs/community/langchain_community/vectorstores/neo4j_vector.py index 5e9057c533d..2ce1366ba60 100644 --- a/libs/community/langchain_community/vectorstores/neo4j_vector.py +++ b/libs/community/langchain_community/vectorstores/neo4j_vector.py @@ -549,6 +549,7 @@ class Neo4jVector(VectorStore): self, query: str, k: int = 4, + params: Dict[str, Any] = {}, **kwargs: Any, ) -> List[Document]: """Run similarity search with Neo4jVector. @@ -562,13 +563,15 @@ class Neo4jVector(VectorStore): """ embedding = self.embedding.embed_query(text=query) return self.similarity_search_by_vector( - embedding=embedding, - k=k, - query=query, + embedding=embedding, k=k, query=query, params=params, **kwargs ) def similarity_search_with_score( - self, query: str, k: int = 4 + self, + query: str, + k: int = 4, + params: Dict[str, Any] = {}, + **kwargs: Any, ) -> List[Tuple[Document, float]]: """Return docs most similar to query. @@ -581,12 +584,16 @@ class Neo4jVector(VectorStore): """ embedding = self.embedding.embed_query(query) docs = self.similarity_search_with_score_by_vector( - embedding=embedding, k=k, query=query + embedding=embedding, k=k, query=query, params=params, **kwargs ) return docs def similarity_search_with_score_by_vector( - self, embedding: List[float], k: int = 4, **kwargs: Any + self, + embedding: List[float], + k: int = 4, + params: Dict[str, Any] = {}, + **kwargs: Any, ) -> List[Tuple[Document, float]]: """ Perform a similarity search in the Neo4j database using a @@ -623,6 +630,7 @@ class Neo4jVector(VectorStore): "embedding": embedding, "keyword_index": self.keyword_index_name, "query": remove_lucene_chars(kwargs["query"]), + **params, } results = self.query(read_query, params=parameters) diff --git a/libs/community/tests/integration_tests/vectorstores/test_neo4jvector.py b/libs/community/tests/integration_tests/vectorstores/test_neo4jvector.py index 13aef52a408..ffa340398f5 100644 --- a/libs/community/tests/integration_tests/vectorstores/test_neo4jvector.py +++ b/libs/community/tests/integration_tests/vectorstores/test_neo4jvector.py @@ -721,3 +721,23 @@ def test_index_fetching() -> None: index_0_store = fetch_store(index_0_str) assert index_0_store.index_name == index_0_str + + +def test_retrieval_params() -> None: + """Test if we use parameters in retrieval query""" + docsearch = Neo4jVector.from_texts( + texts=texts, + embedding=FakeEmbeddings(), + pre_delete_collection=True, + retrieval_query=""" + RETURN $test as text, score, {test: $test1} AS metadata + """, + ) + + output = docsearch.similarity_search( + "Foo", k=2, params={"test": "test", "test1": "test1"} + ) + assert output == [ + Document(page_content="test", metadata={"test": "test1"}), + Document(page_content="test", metadata={"test": "test1"}), + ]