RAG 没有唯一架构。 SCOUT-RAG、A-RAG 和 SCMRAG 2.0 等论文分别探索自适应检索、分布式 Graph-RAG、分层检索接口与多模态自修正。它们的结果是研究观察,不等于 Agentic 方案普遍优于简单管线。本文将论文主张与生产所需的证据、授权、评测、成本和回滚契约分开讨论。
核心要点
- RAG 进化路径:Naive RAG → Advanced RAG → Modular RAG → Agentic RAG
- Agent 自主决定"是否检索/检索什么/从哪检索/是否足够"
- SCOUT-RAG 在研究环境中探索渐进式跨域遍历和自适应图检索。
- 多模态与图检索是架构选项,不是企业知识库的标准答案。
- 分布式检索可以隔离数据所有权并扩展域,但也会增加尾延迟、策略复杂度和故障面。
研究模式,而非唯一演进时间线
| 阶段 | 特征 | 代表技术 | 时间 |
|---|---|---|---|
| 模式 | 典型控制面 | 主要权衡 | |
| --- | --- | --- | |
| 单轮 RAG | 固定检索与生成 | 简单便宜,但适应性有限 | |
| 工作流/迭代 RAG | 预定义查询、检索和校验步骤 | 可控性更强,但按查询灵活性较低 | |
| Agentic RAG | 模型从允许的检索动作中选择 | 自适应,但更难约束和评测 | |
| 分布式 Graph-RAG | 跨所有者进行域路由和图遍历 | 保留数据局部性,但增加扇出和鉴权工作 | |
| 多模态 RAG | 各模态独立或共享证据路径 | 保留更多输入信息,但索引和校验成本更高 |
核心架构
SCOUT-RAG:分布式 Agentic Graph-RAG
SCOUT-RAG 是 Li 等人提出的 “Scalable and Cost-Efficient Unifying Traversal” 的名称。其 2026 年 2 月的 arXiv 预印本描述了域相关性评估、域内种子检索和跨域迭代修正三个阶段,并由多个协作 Agent 完成。它仍是研究框架;在引用成本或质量结论前,应复现其基线和数据条件。
code
用户查询
│
▼
┌─────────────────────┐
│ Domain Relevance │ ← 估计哪些独立数据域相关
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Domain-Scoped Seeding│ ← 在选定域内检索
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Cross-Domain Refinement│ ← 只有证据需要时才扩展
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Answer Quality Check │ ← 检查证据缺口和来源
└──────────┬──────────┘
┌───┴───┐
│ 不足? │→ 回到 Source Selection 重新检索
└───┬───┘
│ 足够
▼
┌─────────────────────┐
│ Answer Generation │ ← 基于充分证据生成答案
└─────────────────────┘
A-RAG:分层检索接口
A-RAG(Du 等人,2026)向模型暴露不同粒度的关键词搜索、语义搜索和 Chunk 读取接口,使模型能够选择并交错使用检索动作。由同一模型生成的置信度数字不能作为充分的鉴权或停止信号;生产系统仍需显式预算、证据校验和服务端停止规则。
python
# 示意伪代码;真实 Tool、鉴权和模型 API 省略。
def adaptive_retrieval(query, policy):
evidence = []
for _ in range(policy.max_rounds):
action = policy.choose_allowlisted_action(query, evidence)
result = policy.execute(action)
evidence = policy.validate_and_merge(evidence, result)
if policy.has_sufficient_cited_evidence(query, evidence):
break
return policy.generate_with_citations(query, evidence)
Tool Allowlist、Tenant Filter、字节/Token 预算、Timeout 和 Cancellation 必须由 Policy 层而非模型拥有。
分布式 Agentic RAG(SCMRAG 2.0)
面向跨域知识库的概念性分布式拓扑:
code
┌─────────────────┐
│ Orchestrator │
│ Agent │
└────────┬────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Domain Agent │ │ Domain Agent │ │ Domain Agent │
│ (产品文档) │ │ (代码仓库) │ │ (客户数据) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Vector DB │ │ Code Index │ │ Graph DB │
│ (Milvus) │ │ (Tree-sitter)│ │ (Neo4j) │
└──────────────┘ └──────────────┘ └──────────────┘
下面是概念拓扑,不是对图中产品的固定推荐:
- 每个域有独立的检索 Agent,了解本域数据特征
- Orchestrator 负责分发查询、汇总结果、解决冲突
- 支持异构数据源(向量库、图数据库、代码索引、API)
- 域 Agent 可以并行检索,但必须测量尾延迟、部分失败和扇出成本
多模态 RAG
架构方案对比
| 方案 | 原理 | 优势 | 劣势 |
|---|---|---|---|
| 统一嵌入 | CLIP 系列,图文同空间 | 检索简单统一 | 精度受限于嵌入模型 |
| 模态转换 | VLM 描述 → 文本 RAG | 复用成熟的文本管线 | 信息损失大 |
| 分模态融合 | 各模态独立索引+融合生成 | 保留模态特有信号 | 架构复杂且可能出现融合错误 |
版本化的多模态检索模式
python
# 示意伪代码。生产环境应固定模型 revision,并校验每个 evidence object。
def multimodal_query(question, retrievers, generator, policy):
candidates = []
for retriever in policy.allowed_retrievers:
candidates.extend(retriever.search(question, limit=policy.limit_for(retriever)))
evidence = policy.deduplicate_check_permissions_and_provenance(candidates)
return generator.generate(question, evidence, citations=True)
知识图谱 + RAG 融合
Graph RAG 工作流
code
文档语料
│
▼
[实体抽取] → [关系抽取] → [知识图谱构建]
│
▼
┌───────────────────────┐
│ Knowledge Graph │
│ (实体+关系+属性) │
└───────────┬───────────┘
│
用户查询 → [意图识别] → [图查询生成] → [子图检索]
│
▼
[上下文增强] → [LLM 生成]
适用场景
| 问题类型 | 先测什么 | 需要验证的图优势 |
|---|---|---|
| 单跳事实 | 词法/稠密基线 | 实体消歧或来源追踪 |
| 多跳关系 | 分解检索基线 | 路径完整性和矛盾处理 |
| 全局摘要 | 层级或 Map-Reduce 基线 | 覆盖度、来源权重和引用完整性 |
| 长尾问题 | 混合检索与拒答 | 图召回相对构建成本 |
用受控评测替代排行榜
| 维度 | 必须固定或报告的协议 |
|---|---|
| 检索 | 固定语料、查询切片、证据标注、Recall@k/Recall@Budget、nDCG 或 MRR |
| 回答 | 引用精确率/召回率、忠实性、完整性、拒答和矛盾处理 |
| 效率 | p50/p95 延迟、模型/Tool 调用数、检索 Token、存储和每个正确答案成本 |
| 分布式行为 | 域扇出、部分失败、拒绝访问率、跨域泄漏测试和尾延迟 |
| 可复现性 | 模型/Checkpoint、Prompt、索引/解析器版本、随机种子、日期和完整基线配置 |
工程化建议
选型决策树
code
你的 RAG 场景是什么?
├── 简单 Q&A(单跳事实)→ 先建立单轮基线
├── 多跳推理/关系问题 → Graph RAG
├── 多数据源/跨域 → Distributed Agentic RAG
├── 图文混合知识库 → Multi-Modal RAG
└── 高准确率要求 → 在有标注切片上比较候选工作流
按契约选择组件
| 组件 | 选择问题 |
|---|---|
| 向量索引 | 过滤、更新语义、召回、隔离、导出和删除能力 |
| 图索引 | 所有权、遍历限制、一致性、来源和查询授权 |
| Embedding/Reranker | 语言/模态覆盖、版本固定、校准和数据政策 |
| Agent Runtime | Schema 校验、Cancellation、幂等、重试、预算和审计事件 |
| 可观测性 | 脱敏、租户隔离、Trace 保留、成本归属和 Replay |
生产安全边界
- 在检索前、父节点/图扩展后分别执行 Tenant、Object 和 Purpose 授权。
- 将文档、图节点、检索片段、图片和 Tool 结果视为不可信内容,防御 Prompt Injection 与投毒证据。
- Allowlist 外部 Web/API 目的地,校验 Redirect,并限制响应大小,控制 SSRF 与数据外泄。
- 保留来源 ID、版本、时间戳、许可证和删除血缘;生成摘要不是权威来源。
- 对无证据断言要求引用或拒答,高影响写操作保留人工审批。
- 让域扇出、重试和外部副作用具备幂等性并可观测。
总结
2026 年 RAG 架构的核心演进方向:
- 从管线到 Agent:检索策略由 Agent 动态决策,而非固定流程
- 从单一到分布式:跨域知识源通过多 Agent 协作实现统一访问
- 从文本到多模态:图片、表格、代码等非文本内容纳入检索范围
- 从平面到图谱:知识图谱为多跳推理提供结构化支撑
对于新启动的 RAG 项目,先建立透明的单轮基线并标注证据;只有切片评测证明收益足以覆盖运营和治理成本时,再加入 Agentic、Graph、多模态或分布式组件。