From 63a38a8be721cda99c3aa24239f1a285c160ec4b Mon Sep 17 00:00:00 2001 From: Luo Peng <luopeng.he@gmail.com> Date: Tue, 21 May 2024 03:58:54 +0800 Subject: [PATCH] Fix the expression construction of Milvus vector store (#13591) --- .../llama_index/vector_stores/milvus/base.py | 9 +++++---- .../llama-index-vector-stores-milvus/pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/llama_index/vector_stores/milvus/base.py b/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/llama_index/vector_stores/milvus/base.py index 2655abb4d..71cdff444 100644 --- a/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/llama_index/vector_stores/milvus/base.py +++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/llama_index/vector_stores/milvus/base.py @@ -50,7 +50,7 @@ def extract_host_port(url): return host, port -def _to_milvus_filter(standard_filters: MetadataFilters) -> List[str]: +def _to_milvus_filter(standard_filters: MetadataFilters) -> str: """Translate standard metadata filters to Milvus specific spec.""" filters = [] for filter in standard_filters.legacy_filters(): @@ -58,7 +58,8 @@ def _to_milvus_filter(standard_filters: MetadataFilters) -> List[str]: filters.append(str(filter.key) + " == " + '"' + str(filter.value) + '"') else: filters.append(str(filter.key) + " == " + str(filter.value)) - return filters + joined_filters = f" {standard_filters.condition.value} ".join(filters) + return f"({joined_filters})" if len(filters) > 1 else joined_filters class MilvusVectorStore(BasePydanticVectorStore): @@ -385,7 +386,7 @@ class MilvusVectorStore(BasePydanticVectorStore): # Parse the filter if query.filters is not None: - expr.extend(_to_milvus_filter(query.filters)) + expr.append(_to_milvus_filter(query.filters)) # Parse any docs we are filtering on if query.doc_ids is not None and len(query.doc_ids) != 0: @@ -406,7 +407,7 @@ class MilvusVectorStore(BasePydanticVectorStore): # Convert to string expression string_expr = "" if len(expr) != 0: - string_expr = f" {query.filters.condition.value} ".join(expr) + string_expr = f" and ".join(expr) # Perform the search if query.mode == VectorStoreQueryMode.DEFAULT: diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/pyproject.toml index d83ef5813..e2d18caaa 100644 --- a/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/pyproject.toml +++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/pyproject.toml @@ -27,7 +27,7 @@ exclude = ["**/BUILD"] license = "MIT" name = "llama-index-vector-stores-milvus" readme = "README.md" -version = "0.1.13" +version = "0.1.14" [tool.poetry.dependencies] python = ">=3.8.1,<4.0" -- GitLab