Skip to content

Commit

Permalink
Fix empty results issue in full-text search with Milvus vector databa…
Browse files Browse the repository at this point in the history
…se (#14885)

Co-authored-by: liusurong.lsr <[email protected]>
  • Loading branch information
llinvokerl and liusurong.lsr authored Mar 5, 2025
1 parent 9ab4f35 commit d04f40c
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions api/core/rag/datasource/vdb/milvus/milvus_vector.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,18 @@ def __init__(self, collection_name: str, config: MilvusConfig):
self._client = self._init_client(config)
self._consistency_level = "Session" # Consistency level for Milvus operations
self._fields: list[str] = [] # List of fields in the collection
if self._client.has_collection(collection_name):
self._load_collection_fields()
self._hybrid_search_enabled = self._check_hybrid_search_support() # Check if hybrid search is supported

def _load_collection_fields(self, fields: Optional[list[str]] = None) -> None:
if fields is None:
# Load collection fields from remote server
collection_info = self._client.describe_collection(self._collection_name)
fields = [field["name"] for field in collection_info["fields"]]
# Since primary field is auto-id, no need to track it
self._fields = [f for f in fields if f != Field.PRIMARY_KEY.value]

def _check_hybrid_search_support(self) -> bool:
"""
Check if the current Milvus version supports hybrid search.
Expand Down Expand Up @@ -306,10 +316,7 @@ def create_collection(
)
schema.add_function(bm25_function)

for x in schema.fields:
self._fields.append(x.name)
# Since primary field is auto-id, no need to track it
self._fields.remove(Field.PRIMARY_KEY.value)
self._load_collection_fields([f.name for f in schema.fields])

# Create Index params for the collection
index_params_obj = IndexParams()
Expand Down

0 comments on commit d04f40c

Please sign in to comment.