49 lines
1.7 KiB
Markdown
49 lines
1.7 KiB
Markdown
# RAG 查询改写能力薄弱
|
||
|
||
**状态**:待规划
|
||
**严重程度**:中
|
||
**发现时间**:2026-07-04
|
||
**范围**:检索工具、Agent 查询生成、召回稳定性
|
||
|
||
---
|
||
|
||
## 现象
|
||
|
||
当前检索主要使用 Agent 传入 `lookup_knowledge` 的原始 query。工具层没有显式的 query rewrite、同义词扩展、领域词补全或多 query 检索。
|
||
|
||
当用户问题口语化、上下文依赖强,或缺少领域关键词时,L0 和 L1 的召回都可能不稳定。
|
||
|
||
---
|
||
|
||
## 当前实现
|
||
|
||
- Agent 决定何时调用 `lookup_knowledge` 和传入什么 query。
|
||
- `LookupKnowledgeTool` 接收 query 后直接进入 L0/L1 检索。
|
||
- 工具层没有把用户问题改写成多个检索 query。
|
||
- 也没有把当前任务域、Planner step、告警 payload 等上下文显式拼入检索 query。
|
||
|
||
---
|
||
|
||
## 影响
|
||
|
||
- Agent query 写得好时召回正常,query 写得差时检索链路缺少兜底。
|
||
- AIOps 场景里,告警名称、服务名、指标名、故障类型之间的别名关系没有被充分利用。
|
||
- 很难稳定复现同一类问题的检索质量。
|
||
|
||
---
|
||
|
||
## 建议修复
|
||
|
||
1. 在工具层增加轻量 query rewrite:原始问题、领域词增强问题、关键词查询并行召回。
|
||
2. 对 AIOps 场景,把 alertName、service、metric、symptom 显式构造成检索 query。
|
||
3. 记录 rewrite 前后的 query 到 `tool_invocation`,便于分析。
|
||
4. 后续可以引入 LLM query rewrite,但 MVP 先用规则模板更可控。
|
||
|
||
---
|
||
|
||
## 相关文件
|
||
|
||
- `src/main/java/com/superbiz/agent/tool/LookupKnowledgeTool.java`
|
||
- `src/main/java/com/superbiz/agent/service/KnowledgeIndexService.java`
|
||
- `src/main/java/com/superbiz/agent/service/VectorSearchService.java`
|