feat: KnowledgeQueryParam.kb_code支持设置为数组检索多个知识库的内容
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
from typing import List, Optional
|
from typing import List, Optional, Union
|
||||||
|
|
||||||
from langchain_core.output_parsers import StrOutputParser
|
from langchain_core.output_parsers import StrOutputParser
|
||||||
from langchain_core.prompts import ChatPromptTemplate
|
from langchain_core.prompts import ChatPromptTemplate
|
||||||
@@ -15,7 +15,7 @@ from app.utils.nltk_utils import load_nltk
|
|||||||
|
|
||||||
class KnowledgeQueryParam(BaseModel):
|
class KnowledgeQueryParam(BaseModel):
|
||||||
question: str = Field(..., description="问题文本")
|
question: str = Field(..., description="问题文本")
|
||||||
kb_code: str = Field(..., description="知识库编码")
|
kb_code: Union[str, List[str]] = Field(..., description="知识库编码")
|
||||||
top_k: int = Field(default=5, description="返回结果数量")
|
top_k: int = Field(default=5, description="返回结果数量")
|
||||||
|
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ class MilvusService:
|
|||||||
embed_model=self.embeddings,
|
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)
|
retriever = vector_index.as_retriever(filters=filters, similarity_top_k=param.top_k)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user