fix(bridge): KB 检索尊重 limit/去重并接入 reranker;记录 quality/KB 批次运行结果
This commit is contained in:
+11
-1
@@ -377,7 +377,17 @@ function createTools(cfg, deps = {}) {
|
||||
const query = String(args.query || '').trim();
|
||||
if (!query) throw new ToolError(400, 'invalid_arguments', 'query is required');
|
||||
const limit = Math.min(Number(args.limit) || 5, 8);
|
||||
let results = await retriever.searchKB(query, Math.max(limit, 8));
|
||||
// 有 reranker 时多取一些候选再重排;没有 reranker 时必须尊重调用方 limit。
|
||||
const fetchLimit = reranker ? Math.max(limit, 8) : limit;
|
||||
let results = await retriever.searchKB(query, fetchLimit);
|
||||
// parent/child 可能命中同一篇文章:按 question+answer 去重后再重排
|
||||
const seen = new Set();
|
||||
results = results.filter((r) => {
|
||||
const key = `${r.question || ''}\u0000${r.answer || ''}`;
|
||||
if (seen.has(key)) return false;
|
||||
seen.add(key);
|
||||
return true;
|
||||
});
|
||||
if (reranker) results = await reranker.rerank(query, results, limit);
|
||||
return {
|
||||
results,
|
||||
|
||||
Reference in New Issue
Block a user