核心摘要

当证据必须保留在不同所有权或控制域中,并且检索需要在权限、时间与成本约束下动态调整时,分布式 Agentic RAG 才有价值。它不是简单地“增加 Agent”。生产设计要把模型驱动的 Proposal Plane 与确定性 Control Plane 分开,保留 Claim 到 Source 的证据关系,限制扇出,并与强单轮和固定工作流基线比较新增复杂度是否值得。

先区分两类研究问题

2026 年的两个预印本代表不同方向:

系统 研究问题 核心机制 重要边界
SCOUT-RAG 如何在成本和隐私约束下跨独立数据域执行 Graph-RAG? Domain Relevance、域内 Seed、Local/Depth 与 Cross-domain/Breadth Refinement 结果来自论文自己的多域实验设置
A-RAG 模型能否通过选择不同粒度接口改善检索? Keyword Search、Semantic Search、Chunk Read 与迭代 Agent Loop 结果受所选 QA 数据集、模型、Prompt 和预算限制

SCOUT-RAG 是分布式 Graph-RAG;A-RAG 是分层检索接口,本身不等于分布式域架构。不能把两篇论文的结果合并成一个“Agentic RAG 提升比例”。

原始 RAG 工作把参数化生成与外部非参数化记忆组合起来。Agentic Control 增加了是否检索、去哪里检索以及如何检索的决策,但没有消除语料、检索指标、Provenance 和答案评测。

什么时候确实需要分布式

以下所有权或运维边界可能要求数据域保持独立:

  • 不同业务团队维护自己的索引与删除流程;
  • 法律或数据地域策略不允许集中原始数据;
  • 代码仓库、工单、客户记录和公开来源使用不同授权模型;
  • 每个来源有独立的可用性和新鲜度契约;
  • 中央图谱会造成无法接受的同步成本或故障半径。

不要因为架构图看起来可扩展就分布式化。单一所有者、单一语料的任务通常更适合词法、稠密或混合中央索引,更容易评测,也更不容易发生跨域泄露。

参考架构

flowchart LR A["已认证请求"] --> B["意图与风险分类"] B --> C["策略过滤后的 Domain Catalog"] C --> D["Planner 提出检索动作"] D --> E["预算与授权 Gate"] E --> F1["Domain A Retriever"] E --> F2["Domain B Retriever"] E --> F3["Domain C Retriever"] F1 --> G["Evidence Validator"] F2 --> G F3 --> G G --> H{"证据充分?"} H -->|否,仍有预算| D H -->|是| I["基于 Claim 的生成"] H -->|预算耗尽| J["拒答或返回部分答案"]

模型提出动作,控制面持有 Domain Catalog、Credential、逐域过滤、时间与 Token 预算、并发、取消和停止条件。

使用 Evidence Envelope

不要把原始片段拼成匿名 Context String。每个结果都应携带 Evidence Envelope:

json
{
  "evidence_id": "policy-a:doc-17:chunk-4",
  "domain": "policy-a",
  "source_revision": "rev-31",
  "retrieved_at": "request-time",
  "subject_scope": "tenant-a/member",
  "content_digest": "sha256:...",
  "text": "bounded excerpt",
  "supports": ["claim-return-window"],
  "expires_at": "policy-defined"
}

Envelope 支持去重、引用、陈旧 Revision 检测、删除传播和 Claim 支撑解释。模型生成摘要不能替代原始 Source。

用确定性 Gate 路由数据域

模型可以排序候选域,但 Executor 必须拒绝未授权或超预算 Proposal。下面的 Go 程序应用可信 Grant 和 Cost Budget:

go
package main

import "fmt"

type Domain struct {
	Name       string
	Cost       int
	Authorized bool
}

func selectDomains(ranked []Domain, budget int) ([]string, int) {
	selected := make([]string, 0, len(ranked))
	spent := 0
	for _, domain := range ranked {
		if !domain.Authorized || domain.Cost <= 0 {
			continue
		}
		if spent+domain.Cost > budget {
			continue
		}
		selected = append(selected, domain.Name)
		spent += domain.Cost
	}
	return selected, spent
}

func main() {
	proposals := []Domain{
		{Name: "policy", Cost: 2, Authorized: true},
		{Name: "customer-private", Cost: 1, Authorized: false},
		{Name: "product", Cost: 3, Authorized: true},
		{Name: "web", Cost: 4, Authorized: true},
	}

	selected, spent := selectDomains(proposals, 5)
	fmt.Printf("selected=%v spent=%d remaining=%d\n", selected, spent, 5-spent)
}

预期输出:

text
selected=[policy product] spent=5 remaining=0

生产系统必须根据已认证 Subject、Tenant、Purpose、Object Scope、数据地域和当前 Policy 计算 Authorized,不能接受模型或检索文档给出的该字段。

为检索循环定义终态

每次检索都应返回类型化结果:

Outcome 含义 后续动作
evidence_found 获得带来源的可用证据 校验并更新 Claim Coverage
no_match 域查询成功但无证据 有预算时尝试其他允许策略
access_denied 调用方无权查询域或对象 禁止扩大 Scope 重试
rate_limited 临时容量限制 Deadline 允许时有界退避
source_stale Revision 或新鲜度不满足 刷新或拒答
timeout_unknown 执行结果未知 有副作用时先 Reconcile
invalid_result Schema、大小或来源校验失败 隔离结果并记录失败

必要 Claim 获得充分证据、预算或 Deadline 耗尽、授权域全部用尽,或者重复动作不再增加证据时应停止。模型自报的 Confidence 不能单独决定终止。

明确定义部分失败

并行 Fan-out 可能降低中位延迟,同时增加尾延迟和故障组合。必须定义:

  • 最大并发 Domain 数与逐域 Deadline;
  • 缺少某个 Domain 是否使答案不完整;
  • 争议 Claim 的最低 Source Diversity;
  • 冲突处理与 Authority 规则;
  • 证据足够后的 Cancellation;
  • 带 Jitter 的有界 Retry;
  • Partial Answer 与 Abstention 文案;
  • 与返回时序无关的确定性排序。

合规域暂时不可用,不代表“没有相关政策”。没有检索到证据与存在反证是两种不同结果。

与强基线比较

基准至少包括:

  1. 不检索;
  2. 单轮词法检索;
  3. 单轮稠密或混合检索;
  4. 确定性多步骤 Workflow;
  5. 待评估的 Agentic 或分布式系统。

分层衡量:

层级 指标
Domain Routing 授权域召回、不必要 Fan-out、拒绝调用率
Retrieval Recall@k、nDCG、单位预算 Evidence Recall
Evidence Provenance 完整度、Citation Precision/Recall、矛盾覆盖
Answer 任务正确性、Supported Claim Rate、Abstention 质量
Operations p50/p95/p99 延迟、调用、Token、Byte、故障、每个合格答案成本
Security 跨 Tenant 泄露、Injection 成功、SSRF 尝试、Policy Bypass
Recovery Cancellation、Retry 重复、陈旧来源处理、Replay 确定性

TREC RAG Track 分开评估 Retrieval 与端到端 RAG,并公开 Corpus、Topic 和 Baseline。其 2026 Agent-first Track 说明自适应检索是活跃评测问题,不证明某一种架构最好。

在论文边界内理解结果

SCOUT-RAG 报告了 89 个多域查询,在覆盖不同国家域的构造环境中对比质量与成本。结论只描述该实现、数据、模型、Prompt、Baseline 与 Time Budget。

A-RAG 在选定多跳和领域 QA 数据集上评估 Keyword、Semantic 与 Chunk Interface。论文也指出 Vanilla Retrieval 仍是强基线,并提供 Failure Analysis。这个结论很重要:研究结果不能代替生产 Workload 证据。

复现任一系统时,应记录 Preprint Version、Code Commit、Dataset、Model、Prompt、Index、Budget 与 Evaluator。

安全与数据治理

分布式检索会扩大信任面:

  • 检索前按 Tenant 和 Object 过滤,而不是全局最近邻后再过滤;
  • 每个 Domain 使用 Scope 受限的 Credential;
  • 把文档、图节点、摘要和 Tool Result 视为不可信内容;
  • Allowlist 外部目的地并验证 Redirect,降低 SSRF 风险;
  • 限制 Byte、Token、Node、Depth、Breadth 与保留证据;
  • 把纠错和删除传播到 Index、Cache、Trace 与 Evaluation Set;
  • 日志脱敏,并将运营 Metadata 与内容分离;
  • 高影响决策或写操作保留人工批准。

不能因为某个 Domain 返回一段要求访问其他数据源的 Prompt,就扩大 Agent 的权限。

采用顺序

  1. 定义真正需要跨域证据的 Query Slice;
  2. 建立强中央或固定 Workflow 基线;
  3. 发布每个 Domain 的身份、授权、新鲜度、Schema 与延迟契约;
  4. 先实现确定性路由,再增加模型路由;
  5. 让 Agent Proposal 运行在 Shadow Mode;
  6. 比较 Evidence Recall、合格答案质量、尾延迟与成本;
  7. 测试拒绝域、陈旧来源、Injection、Timeout 与 Cancellation;
  8. 对一个低风险 Slice 灰度,并保留即时 Fallback;
  9. 只有新增 Domain 改善合格结果时才扩大。

常见问题

什么是分布式 Agentic RAG?

它允许模型跨独立控制的证据域提出自适应检索动作,同时由可信控制面执行权限、预算、证据、终止和审计。

SCOUT-RAG 与 A-RAG 是同一个系统吗?

不是。SCOUT-RAG 面向分布式 Graph-RAG;A-RAG 研究分层检索接口,两者的数据与结论必须分开。

团队何时应该使用分布式 RAG?

当所有权、Policy、Residency、Freshness 或 Operations 要求独立 Domain 时使用。简单单语料问题不应在没有收益证据时增加分布式复杂度。

模型能选择任意数据域吗?

它可以提出排序,但 Executor 必须在每次调用前,把 Proposal 与当前授权和预算取交集。

最重要的评测原则是什么?

与强简单基线比较,并衡量 Claim-level Evidence、有害失败、尾部成本和拒绝访问,而不是只评价答案是否流畅。

延伸阅读

一手来源