From dd7f88d6fa0231ba1003ceff0625a18eb69c58d2 Mon Sep 17 00:00:00 2001 From: martsforever Date: Sun, 7 Sep 2025 16:21:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=87=86=E5=A4=87=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E7=AE=A1=E7=90=86=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/add_knowledge_route.py | 2 +- app/utils/milvus_utils.py | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/controller/add_knowledge_route.py b/app/controller/add_knowledge_route.py index 2972f29..33cd544 100644 --- a/app/controller/add_knowledge_route.py +++ b/app/controller/add_knowledge_route.py @@ -21,7 +21,7 @@ def add_knowledge_route(app): Document( text=text, id=id_list[index], - metadata={"kb_id": "abc"} + metadata={"kb_id": "cde"} ) for index, text in enumerate(text_list) ] diff --git a/app/utils/milvus_utils.py b/app/utils/milvus_utils.py index 3e3cc28..10044d6 100644 --- a/app/utils/milvus_utils.py +++ b/app/utils/milvus_utils.py @@ -2,6 +2,7 @@ import asyncio from typing import List, Optional from llama_index.core import Document, VectorStoreIndex +from llama_index.core.vector_stores import MetadataFilters, MetadataFilter, FilterOperator from llama_index.vector_stores.milvus import MilvusVectorStore from app.config.env import env @@ -65,24 +66,29 @@ class MilvusService: vector_store=await self.get_vector_store(), embed_model=self.embeddings, ) - query_engine = vector_index.as_query_engine( - streaming=False, - similarity_top_k=top_k, # 这里正确使用top_k参数 - llm=create_llama_index_llm() - ) + + filters = MetadataFilters(filters=[MetadataFilter(key="kb_id", value="abc", operator=FilterOperator.EQ)]) + + # query_engine = vector_index.as_query_engine( + # streaming=False, + # similarity_top_k=top_k, # 这里正确使用top_k参数 + # llm=create_llama_index_llm() + # ) + retriever = vector_index.as_retriever(filters=filters, similarity_top_k=5) + result_nodes = await retriever.aretrieve(query) # 异步执行查询 - response = await query_engine.aquery(query) + # response = await query_engine.aquery(query) return { - "answer": str(response), + # "answer": str(response), "sources": [ { "text": node.node.text, "metadata": node.node.metadata, "score": node.score } - for node in response.source_nodes + for node in result_nodes ] }