fix(vector-stores): improve milvus wildcard search (#6187)

This commit is contained in:
Qun
2026-07-10 23:06:22 +08:00
committed by GitHub
parent 8488abe603
commit 1d383c4ee2
2 changed files with 12 additions and 1 deletions
+4 -1
View File
@@ -159,7 +159,10 @@ class MilvusDB(VectorStoreBase):
for key, value in filters.items():
if not self._SAFE_FILTER_KEY.match(key):
raise ValueError(f"Invalid filter key: {key!r}")
if isinstance(value, str):
if value == "*":
# Wildcard - match any value (MilvusDB doesn't have direct wildcard, so we skip this filter)
continue
elif isinstance(value, str):
escaped = value.replace("\\", "\\\\").replace('"', '\\"')
operands.append(f'(metadata["{key}"] == "{escaped}")')
elif isinstance(value, (int, float, bool)):
+8
View File
@@ -107,6 +107,14 @@ class TestMilvusDB:
assert 'metadata["category"] == "work"' in filter_str
assert ' and ' in filter_str
def test_create_filter_wildcard_conditions(self, milvus_db):
"""Test filter creation with wildcard conditions."""
filters = {"user_id": "alice", "run_id": "*"}
filter_str = milvus_db._create_filter(filters)
assert 'metadata["user_id"] == "alice"' in filter_str
assert 'metadata["run_id"] == "*"' not in filter_str
def test_search_with_filters(self, milvus_db, mock_milvus_client):
"""Test search with metadata filters (reproduces user's bug scenario)."""
# Setup mock return value