Files
SuperBizAgent-java/mvp/issues/rag/rag-spring-ai-document-postprocessor.md
T

1.7 KiB
Raw Blame History

RAG 使用 DocumentPostProcessor 做后处理

状态:待规划
严重程度:中
发现时间:2026-07-05
范围:检索后处理、去重、上下文打包、轻量 rerank


背景

当前检索结果返回给 Agent 前,主要依赖 LookupKnowledgeTool 自己拼接内容。系统还缺少统一的后处理阶段。

Spring AI RAG 流程中可以使用 DocumentPostProcessor 类能力,在文档进入模型上下文前做过滤、去重、压缩或 rerank。


问题

当前检索后处理不足:

  1. L1 topK 候选没有被充分利用。
  2. 同文档或同章节结果可能重复。
  3. 命中 chunk 后没有统一处理前后文扩展。
  4. 证据块缺少统一格式,后续 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.java
  • src/main/java/com/superbiz/agent/service/VectorSearchService.java
  • src/main/java/com/superbiz/agent/service/DocumentChunkService.java
  • src/main/java/com/superbiz/agent/service/ToolInvocationRecorder.java