feat: KnowledgeQueryParam.kb_code支持设置为数组检索多个知识库的内容

This commit is contained in:
martsforever
2025-11-23 18:42:15 +08:00
parent bdfeaca50f
commit 791fccb0ad
+3 -3
View File
@@ -1,5 +1,5 @@
import asyncio
from typing import List, Optional
from typing import List, Optional, Union
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
@@ -15,7 +15,7 @@ from app.utils.nltk_utils import load_nltk
class KnowledgeQueryParam(BaseModel):
question: str = Field(..., description="问题文本")
kb_code: str = Field(..., description="知识库编码")
kb_code: Union[str, List[str]] = Field(..., description="知识库编码")
top_k: int = Field(default=5, description="返回结果数量")
@@ -90,7 +90,7 @@ class MilvusService:
embed_model=self.embeddings,
)
filters = MetadataFilters(filters=[MetadataFilter(key="parent_code", value=param.kb_code, operator=FilterOperator.EQ)])
filters = MetadataFilters(filters=[MetadataFilter(key="parent_code", value=param.kb_code, operator=FilterOperator.IN if isinstance(param.kb_code, list) else FilterOperator.EQ)])
retriever = vector_index.as_retriever(filters=filters, similarity_top_k=param.top_k)