|
@@ -20,7 +20,7 @@ _executor = ThreadPoolExecutor(max_workers=4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-def _search_knowledge_sync(resource_id: str, query: str, limit: int = 5) -> list:
|
|
|
|
|
|
|
+def _search_knowledge_sync(category: str,resource_id: str, query: str, limit: int = 5) -> list:
|
|
|
"""
|
|
"""
|
|
|
同步检索 Viking 知识库,返回 PointInfo 列表。
|
|
同步检索 Viking 知识库,返回 PointInfo 列表。
|
|
|
在线程池中调用,避免阻塞事件循环。
|
|
在线程池中调用,避免阻塞事件循环。
|
|
@@ -46,17 +46,22 @@ def _search_knowledge_sync(resource_id: str, query: str, limit: int = 5) -> list
|
|
|
"chunk_diffusion_count": 1, # 命中切片上下各扩散1片
|
|
"chunk_diffusion_count": 1, # 命中切片上下各扩散1片
|
|
|
"chunk_group": True, # 按文档原始顺序重排,适合叙述性文档
|
|
"chunk_group": True, # 按文档原始顺序重排,适合叙述性文档
|
|
|
},
|
|
},
|
|
|
|
|
+ query_param={"doc_filter": {
|
|
|
|
|
+ "op": "must",
|
|
|
|
|
+ "field": "category",
|
|
|
|
|
+ "conds": [category],
|
|
|
|
|
+ } }
|
|
|
))
|
|
))
|
|
|
if resp and resp.result and resp.result.result_list:
|
|
if resp and resp.result and resp.result.result_list:
|
|
|
return resp.result.result_list
|
|
return resp.result.result_list
|
|
|
return []
|
|
return []
|
|
|
|
|
|
|
|
|
|
|
|
|
-async def search_knowledge(resource_id: str, query: str, limit: int = 5) -> list:
|
|
|
|
|
|
|
+async def search_knowledge(category: str,resource_id: str, query: str, limit: int = 5) -> list:
|
|
|
"""
|
|
"""
|
|
|
异步检索 Viking 知识库,返回 PointInfo 列表。
|
|
异步检索 Viking 知识库,返回 PointInfo 列表。
|
|
|
result_list 非空表示知识库有命中,为空则降级到联网搜索。
|
|
result_list 非空表示知识库有命中,为空则降级到联网搜索。
|
|
|
"""
|
|
"""
|
|
|
loop = asyncio.get_event_loop()
|
|
loop = asyncio.get_event_loop()
|
|
|
- return await loop.run_in_executor(_executor, _search_knowledge_sync, resource_id, query, limit)
|
|
|
|
|
|
|
+ return await loop.run_in_executor(_executor, _search_knowledge_sync, category,resource_id, query, limit)
|
|
|
|
|
|