This commit is contained in:
wangmeihua 2025-08-27 13:21:52 +08:00
parent d57a7210ea
commit 75faf7e55e
2 changed files with 35 additions and 12 deletions

View File

@ -28,6 +28,9 @@ data: {
3docs文档 3docs文档
path: /v1/docs path: /v1/docs
4longmemory存储
""" """
async def docs(request, params_kw, *params, **kw): async def docs(request, params_kw, *params, **kw):
@ -35,15 +38,20 @@ async def docs(request, params_kw, *params, **kw):
async def get_kdbs(request, params_kw, *params, **kw): async def get_kdbs(request, params_kw, *params, **kw):
"""返回 kdb 表的全部内容,返回 JSON""" """返回 kdb 表的全部内容,返回 JSON"""
f = kw.get('get_userorgid')
orgid = await f()
debug(f"orgid: {orgid}{f=}")
debug(f"params_kw: {params_kw}")
db = DBPools() db = DBPools()
dbname = kw.get('get_module_dbname')('rag') dbname = kw.get('get_module_dbname')('rag')
sql_opts = """ sql_opts = """
SELECT id, name, description SELECT id, name, description
FROM kdb FROM kdb
WHERE orgid = ${orgid}$
""" """
try: try:
async with db.sqlorContext(dbname) as sor: async with db.sqlorContext(dbname) as sor:
opts_result = await sor.sqlExe(sql_opts, {}) opts_result = await sor.sqlExe(sql_opts, {"orgid": orgid})
if not opts_result: if not opts_result:
error("未找到 kdb 表记录") error("未找到 kdb 表记录")
return json.dumps({"status": "error", "message": "未找到记录"}) return json.dumps({"status": "error", "message": "未找到记录"})
@ -52,20 +60,32 @@ async def get_kdbs(request, params_kw, *params, **kw):
error(f"查询 kdb 表失败: {str(e)}, 堆栈: {traceback.format_exc()}") error(f"查询 kdb 表失败: {str(e)}, 堆栈: {traceback.format_exc()}")
return json.dumps({"status": "error", "message": str(e)}) return json.dumps({"status": "error", "message": str(e)})
except Exception as e:
error(f"列出用户文件失败: {str(e)}, 堆栈: {traceback.format_exc()}")
result.update({
"status": "error",
"files_by_knowledge_base": {},
"message": f"列出用户文件失败: {str(e)}",
"status_code": 400
})
return result
async def fusedsearch(request, params_kw, *params, **kw): async def fusedsearch(request, params_kw, *params, **kw):
"""融合搜索,调用服务化端点""" """融合搜索,调用服务化端点"""
# f = kw.get('get_userorgid') f = kw.get('get_userorgid')
# orgid = await f() orgid = await f()
# debug(f"orgid: {orgid}{f=}") debug(f"orgid: {orgid}{f=}")
# f = kw.get('get_user') f = kw.get('get_user')
# userid = await f() userid = await f()
debug(f"params_kw: {params_kw}") debug(f"params_kw: {params_kw}")
orgid = "04J6VbxLqB_9RPMcgOv_8" # orgid = "04J6VbxLqB_9RPMcgOv_8"
userid = "04J6VbxLqB_9RPMcgOv_8" # userid = "04J6VbxLqB_9RPMcgOv_8"
query = params_kw.get('query', '') query = params_kw.get('query', '')
fiids = params_kw.get('fiids', []) fiids = params_kw.get('fiids', [])
limit = int(params_kw.get('limit', 5))
debug(f"fiids: {fiids}") debug(f"fiids: {fiids}")
if isinstance(fiids, str):
fiids = [f.strip() for f in fiids.split(',') if f.strip()]
# 验证 fiids的orgid与orgid = await f()是否一致 # 验证 fiids的orgid与orgid = await f()是否一致
if fiids: if fiids:
db = DBPools() db = DBPools()
@ -153,7 +173,7 @@ async def fusedsearch(request, params_kw, *params, **kw):
debug(f"无效三元组: {triplet}") debug(f"无效三元组: {triplet}")
combined_text = query combined_text = query
if triplet_texts: if triplet_texts:
combined_text += " [三元组] " + "; ".join(triplet_texts) combined_text += "".join(triplet_texts)
debug( debug(
f"拼接文本: {combined_text[:200]}... (总长度: {len(combined_text)}, 三元组数量: {len(triplet_texts)})") f"拼接文本: {combined_text[:200]}... (总长度: {len(combined_text)}, 三元组数量: {len(triplet_texts)})")
timing_stats["triplet_text_combine"] = time.time() - triplet_text_start timing_stats["triplet_text_combine"] = time.time() - triplet_text_start
@ -175,14 +195,14 @@ async def fusedsearch(request, params_kw, *params, **kw):
debug(f"生成查询向量耗时: {timing_stats['vector_generation']:.3f}") debug(f"生成查询向量耗时: {timing_stats['vector_generation']:.3f}")
# 调用搜索端点 # 调用搜索端点
limit = 5 sum = limit + 5
search_start = time.time() search_start = time.time()
result = await api_service.milvus_search_query( result = await api_service.milvus_search_query(
request=request, request=request,
query_vector=query_vector, query_vector=query_vector,
userid=orgid, userid=orgid,
knowledge_base_ids=fiids, knowledge_base_ids=fiids,
limit=limit, limit=sum,
offset=0, offset=0,
upappid=service_params['vdb'], upappid=service_params['vdb'],
apiname="mlvus/searchquery", apiname="mlvus/searchquery",
@ -196,6 +216,8 @@ async def fusedsearch(request, params_kw, *params, **kw):
return {"results": [], "timing": timing_stats} return {"results": [], "timing": timing_stats}
unique_results = result.get("results", []) unique_results = result.get("results", [])
sum = len(unique_results)
debug(f"从向量数据中搜索到{sum}条数据")
use_rerank = True use_rerank = True
if use_rerank and unique_results: if use_rerank and unique_results:
rerank_start = time.time() rerank_start = time.time()

View File

@ -1,5 +1,6 @@
from appPublic.timeUtils import curDateString, dateAdd from appPublic.timeUtils import curDateString, dateAdd
from ahserver.serverenv import get_serverenv from ahserver.serverenv import get_serverenv
from sqlor.dbpools import DBPools
async def set_program(request, program_type, quota, term=1): async def set_program(request, program_type, quota, term=1):
db = DBPools() db = DBPools()