feat: 准备实现知识库管理的功能

This commit is contained in:
martsforever
2025-09-07 16:21:11 +08:00
parent e976ccf814
commit dd7f88d6fa
2 changed files with 15 additions and 9 deletions
+1 -1
View File
@@ -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)
]
+14 -8
View File
@@ -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
]
}