Browse Source

fix weaviate metadata filter (#16230)

Jyong 1 month ago
parent
commit
81325df368
1 changed files with 8 additions and 2 deletions
  1. 8 2
      api/core/rag/datasource/vdb/weaviate/weaviate_vector.py

+ 8 - 2
api/core/rag/datasource/vdb/weaviate/weaviate_vector.py

@@ -189,7 +189,10 @@ class WeaviateVector(BaseVector):
         vector = {"vector": query_vector}
         document_ids_filter = kwargs.get("document_ids_filter")
         if document_ids_filter:
-            where_filter = {"operator": "ContainsAny", "path": ["document_id"], "valueTextArray": document_ids_filter}
+            operands = []
+            for document_id_filter in document_ids_filter:
+                operands.append({"path": ["document_id"], "operator": "Equal", "valueText": document_id_filter})
+            where_filter = {"operator": "Or", "operands": operands}
             query_obj = query_obj.with_where(where_filter)
         result = (
             query_obj.with_near_vector(vector)
@@ -237,7 +240,10 @@ class WeaviateVector(BaseVector):
         query_obj = self._client.query.get(collection_name, properties)
         document_ids_filter = kwargs.get("document_ids_filter")
         if document_ids_filter:
-            where_filter = {"operator": "ContainsAny", "path": ["document_id"], "valueTextArray": document_ids_filter}
+            operands = []
+            for document_id_filter in document_ids_filter:
+                operands.append({"path": ["document_id"], "operator": "Equal", "valueText": document_id_filter})
+            where_filter = {"operator": "Or", "operands": operands}
             query_obj = query_obj.with_where(where_filter)
         query_obj = query_obj.with_additional(["vector"])
         properties = ["text"]