证据聚合(Evidence Aggregation)¶
本页系统化 Eagle-RAG 语义层检索中的证据聚合概念:多源召回的 chunk 如何收敛为连贯、去冗、可排序的证据集,供生成消费。这是 多向量检索 的下游 —— 多向量负责检索期多空间扇出,证据聚合负责检索后的证据收敛;也是 Citationware RAG 的上游 —— 聚合后的证据集是引文的物质基础。
定位
本页是概念正本。现有原语已实现(RRF 融合 / 结构去重 / 候选注入 / 合并重排),但属于「rank-fusion + 结构去重」层级,非语义聚合。语义层缺口见 §5 Roadmap。
1. 概念定义¶
Evidence aggregation(证据聚合)= 把从多个来源(多 collection、多模态、图扩展)召回的、可能重复或重叠的 chunk,收敛为:
- 去冗 —— 折叠重复 / 近重复证据;
- 可排序 —— 按相关性给出统一排序;
- 连贯 —— 供生成阶段以有限上下文窗口消费的紧凑证据集。
Eagle-RAG 现有的证据聚合发生在 RetrieverOrchestrator.retrieve() 与 eagle_rag/router/rerank_fusion.py 之间,是 多向量扇出 之后、生成 之前的中间层。
2. 现有原语(已实现)¶
| 原语 | 函数 | 行为 |
|---|---|---|
| RRF 跨计划融合 | merge_rrf (rerank_fusion.py L37) |
多 CollectionQueryPlan 结果按 1/(k+rank) 加权融合;空结果集不贡献幻影排名(G8) |
| 跨 collection 去重 | dedupe_cross_collection (rerank_fusion.py L65) |
按 source_chunk_id 或 (document_id, path) 折叠重复逻辑 chunk,保留高排名者(G32),记 rrf_dedupe 审计 |
| 候选注入 | inject_supplement_candidates (rerank_fusion.py L96) |
保证 supplement top 命中进入重排池 |
| 合并后重排 | rerank_merged (rerank_fusion.py L143) |
按 RerankPolicy:domain→RERANK_MERGED hook;general→qwen3-rerank;none→截断 |
编排入口¶
RetrieverOrchestrator.retrieve()(eagle_rag/plugins/retriever_orchestrator.py L77):
每计划 ANN
→ 可选分路 RERANK(Tier-1 空间内)
→ merge_rrf(L177) # 跨空间 rank 融合
→ dedupe_cross_collection(L180) # 结构去重
→ 可选 RRF_POST_MERGE hook(L190) # 域插件候选注入
→ rerank_merged(L200) # 合并后重排
→ 按 source_chunk_id / (document_id, path) 去重
3. 与插件 hook 的关系¶
证据聚合的每一步都对插件开放扩展点(hook 一览见 插件架构):
| Hook | 触发时机 | 对证据聚合的作用 |
|---|---|---|
RETRIEVE_SUPPLEMENT |
ANN 之后、RRF 之前(L166) | 域插件补充召回(如基于实体的精确命中),保证关键证据进入融合池 |
RRF_POST_MERGE |
merge_rrf 之后、rerank_merged 之前(L190) |
域插件在 RRF 结果上注入额外候选(如规则强提权的 chunk) |
RERANK_MERGED |
rerank_merged 内部 |
域插件用域专用 cross-encoder 对合并后证据重排 |
dedupe_cross_collection 在折叠时记 rrf_dedupe 审计事件(PluginAudit),可在 GET /health/plugins 的 recent_decisions 追踪去重强度(见 Agent 可观测性 Layer 4)。
4. 证据聚合 vs 单纯排序¶
明确边界 —— 现有机制是 rank-fusion + 结构去重,非语义聚合:
| 维度 | 现有能力 | 语义聚合(理想) |
|---|---|---|
| 去重依据 | 结构 id(source_chunk_id / (doc_id, path)) |
语义相似度(近重复 chunk 即使 id 不同也能折叠) |
| 证据组织 | 扁平排序列表 | 按子话题分组 / 聚类 |
| 冲突处理 | 无(多份冲突证据并列) | 冲突检测与消解 / 标注 |
| 置信度 | 保留 retrieval score,无聚合置信 | 跨证据聚合的答案级置信 |
| 压缩 | 无 | 长证据摘要压缩 |
5. Roadmap(未实现)¶
以下均为未实现的设计缺口,非当前能力
- 语义相似度去重:
dedupe_cross_collection当前仅按结构 id 折叠。可增dedupe_mode="semantic",用轻量 embedding(或复用 query encoder)计算 chunk 间相似度,折叠 cos > 阈值的近重复。潜在扩展点:dedupe_cross_collection增semantic_threshold参数 + 新EVIDENCE_DEDUPEhook。 - 证据分组 / 聚类:把 top_n 证据按子话题聚类,生成阶段可按组组织答案。潜在扩展点:新
EVIDENCE_GROUPhook,输出list[EvidenceGroup]供 prompt 构建消费。 - 跨证据冲突消解:检测多份证据对同一事实的矛盾陈述,标注或择优。潜在扩展点:
RERANK_MERGED后增冲突检测 hook。 - 聚合置信度:把多证据的 retrieval score 聚合为答案级置信(如 max / mean / 加权),供 Citationware RAG 的 abstain 决策与 Agent 可观测性 的质量指标消费。
- 证据摘要压缩:长证据集超 token 预算时做摘要压缩而非简单截断。
6. 与生成 / 引文的衔接¶
聚合后的 top_n 证据经 EagleMultimodalQueryEngine._prepare_generation 进入 VLM prompt(见 生成 §3.3),同时经 text_sources_from_nodes / _image_source 构造为 sources 列表返回前端。证据的「排序」直接决定 VLM 看到的上下文与 Citationware RAG 的 [n] 引文顺序。