From 27370b679e574c98bc4e210e002bdb5473daf981 Mon Sep 17 00:00:00 2001 From: Tomaz Bratanic Date: Thu, 18 Apr 2024 22:15:45 +0200 Subject: [PATCH] community[patch]: Ignore null and invalid embedding values for neo4j metadata filtering (#20558) --- .../vectorstores/neo4j_vector.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libs/community/langchain_community/vectorstores/neo4j_vector.py b/libs/community/langchain_community/vectorstores/neo4j_vector.py index 8cb51d7f2b..30897a5cc9 100644 --- a/libs/community/langchain_community/vectorstores/neo4j_vector.py +++ b/libs/community/langchain_community/vectorstores/neo4j_vector.py @@ -956,8 +956,17 @@ class Neo4jVector(VectorStore): "Metadata filtering can't be use in combination with " "a hybrid search approach" ) - parallel_query = "CYPHER runtime = parallel " if self._is_enterprise else "" - base_index_query = parallel_query + f"MATCH (n:`{self.node_label}`) WHERE " + parallel_query = ( + "CYPHER runtime = parallel parallelRuntimeSupport=all " + if self._is_enterprise + else "" + ) + base_index_query = parallel_query + ( + f"MATCH (n:`{self.node_label}`) WHERE " + f"n.`{self.embedding_node_property}` IS NOT NULL AND " + f"size(n.`{self.embedding_node_property}`) = " + f"toInteger({self.embedding_dimension}) AND " + ) base_cosine_query = ( " WITH n as node, vector.similarity.cosine(" f"n.`{self.embedding_node_property}`, "