1.7 KiB
1.7 KiB
RAG 使用 DocumentPostProcessor 做后处理
状态:待规划
严重程度:中
发现时间:2026-07-05
范围:检索后处理、去重、上下文打包、轻量 rerank
背景
当前检索结果返回给 Agent 前,主要依赖 LookupKnowledgeTool 自己拼接内容。系统还缺少统一的后处理阶段。
Spring AI RAG 流程中可以使用 DocumentPostProcessor 类能力,在文档进入模型上下文前做过滤、去重、压缩或 rerank。
问题
当前检索后处理不足:
- L1 topK 候选没有被充分利用。
- 同文档或同章节结果可能重复。
- 命中 chunk 后没有统一处理前后文扩展。
- 证据块缺少统一格式,后续 verifier / evaluator 不容易复用。
改造方向
建立一个轻量后处理链:
retrieved documents
-> deduplicate
-> optional neighbor / section expansion
-> score / reason annotation
-> token budget packing
-> evidence blocks
优先做规则型后处理,不急于引入 cross-encoder 或 LLM rerank。
验收标准
- 同一个 docId/chunkIndex 不重复进入 Agent 上下文。
- 最终返回内容包含 source、title、breadcrumb、score、hitReason。
- 可以限制单次工具调用返回的最大 token 或最大字符数。
- 后处理前后的候选数量、去重数量、最终 evidence 数量记录到
tool_invocation。
相关文件
src/main/java/com/superbiz/agent/tool/LookupKnowledgeTool.javasrc/main/java/com/superbiz/agent/service/VectorSearchService.javasrc/main/java/com/superbiz/agent/service/DocumentChunkService.javasrc/main/java/com/superbiz/agent/service/ToolInvocationRecorder.java