feat: 准备实现知识库管理的功能
This commit is contained in:
@@ -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)
|
||||
]
|
||||
|
||||
@@ -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
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user