feat(kb): VikingDB纯检索+重排+Redis上下文+全库搜索+别名扩展+KB保护窗口+RAG语气引导
- 新增 kbRetriever.js: VikingDB search_knowledge 纯检索替代 Ark chat/completions, doubao-seed-rerank 重排, RAG payload 语气引导缓解音色差异 - 新增 redisClient.js: Redis 连接管理 + 5轮对话历史 + KB缓存双写 - toolExecutor.js: 产品别名扩展25条, 全库检索topK=25, 检索阈值0.01, 精简 buildDeterministicKnowledgeQuery - nativeVoiceGateway.js: isPureChitchat扩展, KB保护窗口60s, prequery参数调优 - realtimeDialogRouting.js: resolveReply感知KB保护窗口, fast-path适配raw模式 - app.js: 健康检查新增 redis/reranker/kbRetrievalMode - 新增测试: alias A/B测试, KB retriever测试, Redis客户端测试, raw模式集成测试
This commit is contained in:
@@ -88,7 +88,10 @@ class ContextKeywordTracker {
|
||||
enrichQueryWithContext(sessionId, query, session = null) {
|
||||
const normalized = (query || '').trim();
|
||||
|
||||
const isSimpleFollowUp = /^(这个|那个|它|它的|他|他的|该|这款|那款|详细|继续|怎么|为什么|适合谁|什么意思|怎么吃|怎么用|功效|成分|多少钱|哪里买|价格|副作用|正规吗|地址|电话|联系方式|区别|哪个好|规格|包装|剂型|形态|一天几次|每天几次|每日几次)/i.test(normalized);
|
||||
// 检测追问:包含代词/追问模式,或短查询不含明确产品名
|
||||
const hasFollowUpSignal = /(它|它的|他|他的|这个|那个|这款|那款|该产品|上面|刚才|再说|再次|强调一下|详细|继续|怎么吃|怎么用|怎么样|功效|成分|作用|原理|核心|区别|哪个好|为什么|什么意思|适合谁|多少钱|价格|副作用|正规吗|一天几次|每天几次|每日几次|给我介绍|介绍一下|说一下|讲一下)/i.test(normalized);
|
||||
const isShortGeneric = normalized.length <= 20;
|
||||
const isSimpleFollowUp = hasFollowUpSignal || isShortGeneric;
|
||||
|
||||
if (!isSimpleFollowUp) {
|
||||
return normalized;
|
||||
@@ -102,12 +105,12 @@ class ContextKeywordTracker {
|
||||
return `${session._lastKbTopic} ${normalized}`;
|
||||
}
|
||||
|
||||
// fallback: 原有keyword tracker逻辑
|
||||
// fallback: 原有keyword tracker逻辑(只取最后1个最具体关键词,避免查询过长导致向量稀释)
|
||||
const keywords = this.getSessionKeywords(sessionId);
|
||||
if (keywords.length === 0) {
|
||||
return normalized;
|
||||
}
|
||||
const keywordStr = keywords.slice(-3).join(' ');
|
||||
const keywordStr = keywords[keywords.length - 1];
|
||||
console.log(`[ContextTracker] Enriching: "${normalized}" + "${keywordStr}"`);
|
||||
return `${keywordStr} ${normalized}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user