跳到正文
动手理解 · CONCEPT LAB

拆开 RAG 的四份可验收合同

RAG 不等于“接一个向量库”。可靠系统要把资料版本、调用者权限、候选证据、上下文选择、回答主张和引用连成可回放的证据链。

已经发生 正在观察 接下来
01 / 04

状态传导图

SRC 原始资料
PARSE 解析与切块
META 来源 · 版本 · ACL
EID 证据记录 ID · 原文位置 · 哈希
INDEX Dense / BM25
SYNC 变更同步与校验

删除、版本和权限变化必须同步到派生索引与缓存;否则“搜得准”仍可能拿到旧证据或越权证据。

观察点 01

先定义证据记录,再生成索引

每个证据单元都要绑定 evidence_id、原文位置、来源 URI、版本或生效时间、ACL 和内容哈希。Dense 向量与 BM25 倒排表是指向证据记录的派生索引;SQL、网页或 API 也可以请求时读取。

证据可追溯性身份已绑定
答案已生成尚未
此刻要记住

Embedding 可以重算,证据身份和来源链不能丢。

应用 · RAG / Retrieval-Augmented Generation

RAG 不是向量库,而是一条可验证的证据链

RAG(Retrieval-Augmented Generation,检索增强生成)在生成前或生成过程中检索外部证据,让模型接入私有、可更新或实时资料。向量检索只是其中一种实现;只有把来源、版本、权限、证据片段、回答主张与引用连起来,系统才真正具备可追溯性。

01 · 为什么

RAG 补的是证据入口,不是真相保证

只靠模型参数作答时,知识更新困难、出处不透明,也通常没有未提供的企业内部资料。RAG 把当前任务需要的证据带进上下文,用来缓解这些问题;它不会自动保证资料正确、召回完整、回答忠实或权限安全。

不用 RAG(闭卷)
• 参数知识有训练时间边界,更新不便
• 不确定时仍可能生成错误内容
• 仅凭参数作答时,出处难核对
• 通常没有未提供的私有/内部知识
用 RAG(开卷)
• 答题前先检索相关资料,带着资料答
• 外部资料可独立更新,通常不用重训模型
• 保存并校验来源元数据后,可以生成引用
• 能用上你自己的私有数据
RAG 四份合同架构图:资料被解析为带来源、版本和权限的证据记录,并可建立稠密与词法索引;在线请求携带问题和身份,通过授权检索、融合重排形成证据包,再由模型生成并进行主张与引用校验
图中 Dense + BM25 是常见的“已建索引语料库”实现;SQL、知识图谱、网页与业务 API 可以走实时检索,但同样必须交付带来源、版本与权限的证据包。
一句类比
同一个学生,闭卷全靠记忆;开卷能查参考书,但也可能拿错版本、越权翻页、误读或引用不对应。RAG 增加的是“查证据”的系统能力,不能替代资料治理和答案核验。
公开证据边界:OpenAI 的 Morgan Stanley 客户案例称,语料库约 10 万份文档、超过 98% 的顾问团队活跃使用;LinkedIn 作者的 SIGIR 2024 部署论文报告,知识图谱增强客服系统运行约 6 个月后,单个问题的中位解决时间下降 28.6%。前者是厂商客户叙述,后者是作者报告的线上观察,都不是独立随机对照实验。
02 · 系统合同

先拆成四份合同,再谈向量库

“解析 → 索引 → 检索 → 生成”是常见执行顺序,不是所有 RAG 的固定架构。企业文档通常预建索引;SQL、网页、知识图谱和业务 API 可以在请求时读取。稳定不变的是四份可验收合同。

① 资料合同 Corpus Contract

定义什么是一个证据单元,并为它保存 evidence_id、原文/页面、来源 URI(Uniform Resource Identifier,统一资源标识符)、版本或生效时间、权限 ACL(Access Control List,访问控制列表)与内容哈希。切块和 Embedding 只是派生表示,不能丢掉原始证据身份。

② 检索合同 Retrieval Contract

输入不只是 query,还包括调用者身份、时间与过滤条件;输出是带检索器、名次/分数和证据 ID 的候选集。权限过滤应在候选进入模型前执行,不能等回答生成后再“遮掉”。

③ 证据包合同 Evidence Packet

融合、去重、重排和 Token 预算共同决定最终上下文。每段都要与来源、版本、页码/行号保持绑定;同一事实的冲突版本不能静默拼接成一个答案。

④ 回答合同 Answer Contract

定义哪些主张必须有引用、证据不足何时拒答、怎样检查引用蕴含关系,以及记录哪些检索轨迹。引用存在不等于引用正确,忠实于资料也不等于业务事实一定正确。

常见稠密路把 query 与证据编码为 Embedding,再按余弦或点积配合 ANN(Approximate Nearest Neighbor,近似最近邻)索引找候选;词法路可用 BM25 倒排索引。两路可以并存,也可以完全不用向量检索。

已建索引语料 Indexed Corpus

适合 PDF、知识库和历史工单。资料变更后要增量同步或重建派生索引,并验证删除、版本和权限变更已经传播。

实时 / 结构化源 Live Retrieval

库存、订单、SQL、网页或 API 常在请求时读取。这里的“检索”是查询或工具调用,不一定产生向量,也不一定存在离线 chunk。

图与层级摘要 Graph / Hierarchy

当问题要求跨文档关系或全局主题时,可用知识图谱、社区摘要或层级检索;它们改变证据选择方式,仍需回到可核对的底层来源。

02.5 · 实战演示

跟着一个问题,走完整条证据链

把四份合同落到地上:用一个具体场景 + 一个问题,看每一步到底调用什么模型 / 数据库、输入输出长什么样。(下面的知识库与数字是演示示例,非真实政策。)

🏢 场景:企业 HR / IT 知识库问答
知识库:年假政策 PDF(含表格)、员工手册 Word、IT 门户 FAQ 网页、上海办公室盖章扫描通知。
🙋 用户问题(贯穿全程):「我 2026 年 7 月入职上海办公室,试用期能申请 5 天年假吗?不能的话什么时候能、走哪个系统?」
① 参考实现:离线建索引 ② 在线:按身份检索并回答 📄 4 份原始文档PDF/Word/网页/扫描件 🔍 解析 / OCRLlamaParse · Docling(表格/扫描件) ✂️ 切块 + 📝 加上下文512 token/重叠 80 · Contextual Retrieval 🔢 并行派生:Dense / TermsQwen3 → 1024 维 / 分词 → 词项 📦 Vector Index / BM25 IndexHNSW / 倒排表 · 指向证据 ID / 版本 / ACL 🙋 问题 + 调用者身份「试用期能申请 5 天年假吗…」 ✍️ 查询计划 / 改写(可选)规则或 LLM → 实体 + 多条 query 🔍 授权后的混合检索ACL filter → dense + BM25 → RRF 🎯 重排 Rerankbge-reranker-v2-m3 · top-20 → top-5 🧠 生成(问题 + 证据包)生成模型 · 依据证据回答或拒答 ✅ 回答 / 拒答 + 引用校验证据支持 / 业务正确性 / 权限与日志 查同一个库

🔬 每一步:用了什么模型、输入输出是什么

这是一个可替换组件的参考实现:规则切块不用模型,语义切块可能调用 Embedding 或 LLM;BM25、RRF 与 HNSW(Hierarchical Navigable Small World,分层可导航小世界)是算法,不是神经模型。产品名仅用于把张量维度和调用边界讲具体,不代表推荐清单。

步骤用什么模型输入 → 输出
①解析可选:扫描件/复杂版面走 OCR(Optical Character Recognition,光学字符识别)/视觉模型,数字原生 PDF 可直接抽取原始文档 → 尽量保留结构的 Markdown
②切块❌ 不用(按标题/长度规则切)Markdown → 512 token、重叠 80 的块
③加上下文✅ 一个 LLM(Large Language Model,大语言模型)(给每块补一小段「它在讲什么」)块 + 全文 → 块 + 约 50–100 token 上下文(Anthropic 实现)
④a 向量化(dense)Qwen3-Embedding-0.6B文本块 → 1024 维稠密向量
④b BM25 词法路❌ 不用神经模型(分词+词频统计)文本块(中文通常需分词) → terms 与倒排索引
⑤入库❌ 不用(HNSW 是索引算法)派生索引 + 原文 + 证据 ID / 版本 / ACL → 检索存储
⑥查询计划可选:规则或一个 LLM问题 + 会话 → 实体、过滤条件与多条 query
⑦权限过滤❌ 应由确定性授权层执行调用者身份 + ACL → 当前可见候选空间
⑧a 检索·稠密路Qwen3-Embedding-0.6B(示例)query → 向量 → 匹配配置一致的近邻 top-20
⑧b 检索·BM25 路❌ 不用神经模型query terms → 词法命中 top-20
⑧c RRF 融合❌ RRF(Reciprocal Rank Fusion,倒数排名融合)不用模型,只看名次Σ 1/(k+rank) 合并并去重,本例取论文中的 k=60
⑨重排bge-reranker-v2-m3(示例的联合 query-passage 评分器)query + 20 片段 → 精排 top-5
⑩生成 / 校验✅ 生成模型;校验可混合规则、NLI(Natural Language Inference,自然语言推断)/LLM 与人工问题 + 证据包 → 回答/拒答 + 引用 + 校验轨迹
⚠️ “稀疏”不等于“无模型”
在本例的 dense + lexical 混合检索里,BM25 是统计方法;若换成 SPLADE(Sparse Lexical and Expansion Model,稀疏词法扩展模型)BGE-M3 的 learned-sparse 输出,稀疏权重就是模型产生的。BGE-M3 可同时产生 dense、sparse 与 multi-vector 三类表示。这个二路分类只描述本例,不覆盖 SQL、图查询、网页搜索等其他 RAG 检索器。
▶️

逐步走一遍(输入 → 调用什么 → 输出)

End-to-End Trace
①解析4 份文档 → 调 LlamaParse(扫描件走 OCR) → 输出带版面/表格的 Markdown,年假表格被转成可检索文本「7 月入职 → 转正后当年上限 2 天」(示例)。
②切块+上下文本例按标题/表格行切成 512 token、重叠 80 的块(这是演示参数,不是通用最优值)→ 每块前置一句「本块来自《年假政策》§3.2,讲试用期年假资格」。Anthropic 在其实验各知识域平均、最优 Gemini Text 004 配置下,以 1 − Recall@20 定义检索失败率,报告 Contextual Embedding + Contextual BM25 将其从 5.7% 降到 2.9%;不能直接外推到所有知识库。
③向量化入库每块过 Qwen3-Embedding-0.6B 得最高 1024 维向量(4B/8B 的最高维度为 2560/4096) → 连同原文 + 证据 ID + 元数据(文档名/页码/章节/版本/生效日/办公室/ACL)写入检索存储,同时建 BM25 倒排索引。资料、删除或权限变化后必须同步派生索引。
④计划与授权规则或小型生成模型把问题拆成实体(入职=2026-07、状态=试用期、类型=年假、5 天)与多条 query;授权层再按当前用户/群组过滤可见文档。LLM 可以建议过滤条件,不能自行授予权限。
⑤混合检索在授权后的候选空间中,向量检索召回 top-20 + BM25 召回 top-20RRF 融合去重 → top-20。这里 dense 路补语义近似,BM25 路补人名、编号与政策术语等精确词。
⑥重排top-20 交给 bge-reranker-v2-m3(交叉编码器逐条计算相关性) → 精排留 top-5。本例假设第 1 名是《年假政策》§3.2;实际分数只在同一模型与配置下有意义,不能把 0.94 当通用合格线。
⑦证据包与生成把 top-5 的原文、证据 ID、版本和来源映射连同问题交给生成模型;提示要求逐项引用、冲突时说明、证据不足时拒答。低 temperature 不能替代证据校验。
✅ 最终回答(带引用)
不能。试用期员工暂不可申请带薪年假,你 7 月入职、试用期内无法申请 5 天。[年假政策 p.12 §3.2]
转正后可申请,但按入职月份折算,7 月入职当年上限为 2 天(非 5 天)。[年假政策 p.12 §3.2]
入口:OA 工作台 →「HRIS › 假勤 › 年假申请」,经理 + HR 审批。[员工手册 §8.1;IT 门户 §HRIS]
⑧验证与落账把回答拆成事实主张,逐项核对引用是否支持、版本是否冲突、调用者是否仍有权限;保存 query、候选、证据包、模型版本与最终回答。检索指标和完整手算见下方“分层评测”。
RRF 也能手算
若稠密检索把 A/B 排在第 1/4,BM25 把 B/A 排在第 1/3,取论文实验使用的 k=60,且名次从 1 开始:A 得分 1/61 + 1/63 ≈ 0.03227;B 得分 1/64 + 1/61 ≈ 0.03202,因此 A 略高。RRF 融合的是名次而非不同检索器不可直接比较的原始分数。

🧰 参考技术栈(规格核对:2026-07-14)

环节选型(示例)干什么
文档解析LlamaParse / Docling / UnstructuredPDF/Office/网页/扫描件 → 尽量保留表格与版面的结构化文本
切块 + 上下文512 token/重叠 80 + Contextual Retrieval切成检索单元,每块补一句「它在讲什么」
EmbeddingQwen3-Embedding / BGE-M3 / OpenAI text-embedding-3文本 → 稠密向量;输出维度、归一化与指令格式以模型卡为准
检索存储HNSW 向量索引 + BM25 倒排索引(示例)派生索引指向同一证据 ID,并保存原文、来源、版本与 ACL
查询计划规则 / 任一经评测的生成模型问题 → 实体、过滤条件与一条或多条 query
重排bge-reranker-v2-m3 / Qwen3-Reranker / Cohere Rerank粗召回 top-20 → 精排 top-5
生成模型满足领域质量、上下文、数据出域与 SLO(Service Level Objective,服务水平目标)的模型依据证据作答或拒答,并输出可解析的引用映射
验证 / 评估确定性检查 + RAGAS 等框架 + 人工校准分别测召回、排序、证据支持、业务正确性、权限、延迟与成本
03 · 检索与选择

检索层不是一个模型,而是多种责任

朴素的“切块 → 单路向量 top-k → 塞进 Prompt”容易在证据单元、召回、选择或上下文预算处失败。下面的方法改变的是不同环节;只有在同一业务集上做逐项消融,才知道收益来自哪里。

技巧解决什么
切块策略Chunking块太大可能噪声多,太小可能丢上下文;可按语义/标题切、加重叠并附元数据,但没有通用最优块长与重叠率
上下文检索Contextual Retrieval (Anthropic 2024)给 chunk 补充其在全文中的语境,再建立 Embedding 与 BM25 索引。Anthropic 在各知识域平均、最优 Gemini Text 004 配置下,以 1 − Recall@20 定义失败率:两者结合从 5.7% 降到 2.9%(相对下降 49%);从 top-150 候选重排并保留 top-20 后为 1.9%(相对下降 67%)。这是厂商实验,不是通用增益
混合检索Hybrid Search向量语义检索与 BM25 词法检索互补;是否提升取决于分词、候选数、融合与数据,不能保证总比单路好
ColBERTlate-interaction 多向量检索保留查询与文档 token 的多向量并做 late interaction;原论文展示了特定基准上的质量/效率折中,但存储和索引成本高于单向量
重排Reranker先粗召回,再让联合读取 query-passage 的分类式、生成式或其他排序器逐条评分;它可能改善选择,但救不回未召回的证据,并会增加延迟与成本
查询改写Query Rewriting把口语问题改写/拆成多个更好检索的查询(multi-query)
HyDEHypothetical Document Embeddings先让 LLM 生成一个假想文档,再编码它用于零样本稠密检索;它可能改善短查询,也可能因假想内容偏离而带来查询漂移
GraphRAGGraph Retrieval-Augmented GenerationMicrosoft GraphRAG 构建实体关系与社区摘要,面向跨语料的全局问题。Microsoft 在 5,590 篇 AP 新闻、100 条合成查询(50 local / 50 global)上用 LLM 两两比较回答,报告 LazyGraphRAG 索引成本为完整版的 0.1%;同一配置处理 global queries 时,答案质量相近而查询成本低逾 700×。数字只属于这组厂商实验
多模态 RAGMultimodal RAG文档含图/表/版面时,用 VLM(Vision-Language Model,视觉语言模型)或跨模态检索保留视觉信息(如 VisRAG)
自适应 / Agentic RAGAdaptive or agent-orchestrated retrievalSelf-RAG学习检索与反思 token,CRAG用 retrieval evaluator 触发纠错;它们是自适应/自反思方法示例,不等同于所有“Agentic RAG”。完整 Agent 编排还可能规划多源查询、循环检索并基于 Observation 决定停止

不要同时打开所有技巧:先固定语料、问题集与生成模型,只改一个变量,比较召回、选择、答案与成本。否则“答案变好”无法归因,也不知道回滚哪一环。

03.5 · 分层评测

四张成绩单,不能压成一个 RAG 分数

RAG 是串联系统:资料错误、候选没召回、正确证据没被选中、模型没忠实使用,都会得到错误答案。端到端正确率必须保留,但只有分层指标能定位该修哪一段。

① 召回覆盖 Retrieval Coverage

Recall@k = |Relevant ∩ Top-k| / |Relevant|。先定义 relevance 的单位是 chunk、页面、文档还是事实;没有相对完整的相关性标注,分母就不可靠。

② 排序与选择 Ranking / Selection

Precision@k、MRR(Mean Reciprocal Rank,平均倒数排名)与 nDCG(normalized Discounted Cumulative Gain,归一化折损累积增益)可描述位置质量,但 LLM 往往同时消费整组证据。传统 IR 排名分数是组件诊断,不是答案质量代理。

③ 证据忠实 Grounding / Citation

把回答拆成可验证主张,分别测“是否被证据支持”“该引用是否指向支持片段”“应引用的主张是否都引用”。忠实于错误或过期资料,仍可能业务错误。

④ 产品与风险 Task / Risk / SLO

测最终任务正确率、证据不足时的拒答、权限泄露、时效、p50/p95 延迟、成本与失败恢复。SLO 指服务水平目标;高风险问题还需要专家抽检和可回放日志。

手算:同一结果为何有四种读法

A Small Auditable Example
若相关证据集合是 {A, B},top-5 返回 [A, X, B, Y, Z],则 Recall@5 = 2/2 = 1.0Precision@5 = 2/5 = 0.4;第一条相关结果排第 1,所以这个 query 的 reciprocal rank 为 1
若回答被拆成 4 个事实主张,人工核对只有 3 个可由所引证据推出,则这个示例的主张支持率是 3/4 = 0.75。它不代表“答案有 75% 概率正确”,也没有覆盖引用完整性、资料真伪与权限。
RAGAS 原始 EACL 2024 论文评估的是 faithfulness、answer relevance、context relevance 三个维度;后续库版本又提供 context precision、context recall 等指标。名称、提示与默认模型会演进,报告必须固定库版本、judge、Embedding、提示和抽样人工校准。
2026 研究提醒
EACL 2026 一项研究指出,传统 nDCG、MAP(Mean Average Precision,平均精确率均值,即各查询 Average Precision 的均值)、MRR 的位置折扣假设来自人逐条查看结果,而 LLM 会整体消费证据且可能受干扰片段伤害;作者在 5 个数据集、6 个 LLM 上报告其 utility-aware 指标与答案准确率的相关性最高提升 36%。这支持“IR 指标 + 端到端评测”并用,不意味着应弃用 Recall@k。
03.6 · 选型

Embedding 只决定稠密路怎样看“相似”

Embedding 模型决定稠密检索如何表示“相似”,但它只是解析、切块、查询、索引、融合与重排中的一环。选型不能只抄榜单,要用自己的查询和相关文档复测。

🎯

选型先看这 6 个维度

How to Choose

📊 质量与能力

  • 榜单分数:看 MTEB / C-MTEB(中文)上的检索分,但别迷信——一定用自己的数据复测
  • 多语言 / 中文:看目标语言与领域的检索子集,不用总榜平均分代替中文实测
  • 领域:代码、法律、金融、医疗有专用模型,通用模型未必够

⚙️ 工程与成本

  • 向量维度:维度越高,原始向量存储与距离计算通常越大,但质量并非单调增加;只对明确支持 MRL / shortening 的模型截短并复测
  • 最大输入长度:先看模型卡,再看实际切块长度;“支持更长输入”不代表长块检索一定更准
  • 可截断表示 + 私有部署 vs API:模型是否支持自定义输出维度、数据能否出域、批处理吞吐与运维成本怎样
MTEB 是什么
原始 MTEB(Massive Text Embedding Benchmark,大规模文本嵌入基准)论文覆盖 8 类任务、58 个数据集和 112 种语言;C-MTEB(Chinese MTEB,中文文本嵌入基准)论文收集 6 类中文任务、35 个数据集。它们更像一组“多科联考”,不同任务的输入与指标并不相同。原始论文明确发现:没有单一方法统治所有任务。如今榜单已扩展、版本也会变化,比较时要记录具体 benchmark 版本与检索子集。

🗂️ 代表性文本 Embedding(规格核对:2026-07-14)

模型维度 / 上下文亮点部署
Qwen3-Embedding0.6B / 4B / 8B最高 1024 / 2560 / 4096 维 · 32K官方模型卡支持指令与 32 维起的自定义输出;论文覆盖多语言、跨语言和代码检索开源权重
BGE-M3BAAI1024 维 · 最长 8192 token同一模型支持 dense、learned sparse 与 multi-vector 三种检索表示开源权重
OpenAI text-embedding-3small / large默认 1536 / 3072 维 · 可传 dimensionsOpenAI 2024 发布说明称,large 缩至 256 维后在其 MTEB 口径中仍高于 1536 维 ada-002;输入上限与可用性以当前 API 文档为准API

💡 MRL / 可截断表示的直觉:MRL(Matryoshka Representation Learning,套娃式表示学习)等训练方法让向量前缀也能作为较短表示;不支持的模型不能随意砍尾部。手算存储:100 万条 float32 向量,3072 维原始数据约 12.288 GB,768 维约 3.072 GB,正好少 4 倍(十进制 GB,均未计索引、元数据和副本)。缩短后必须重建索引并复测。

🧭 经验法则
先定任务:中文问答、代码搜索、跨语言检索的最佳模型可能不同
再定约束:输入长度、吞吐、向量存储、数据出域与运维能力一起比较
省存储:只对模型明确支持的输出长度做压缩,并重建索引、重跑评估
API vs 自部署:API 减少运维;强隐私、离线大规模索引或成本敏感时,可评估自部署开源权重
最终用自己的标注集决策:覆盖真实意图、难负例和时间敏感文档,至少报告 Recall@k、排序指标、端到端正确率、延迟与成本;差距接近时给置信区间
03.7 · 多模态

VL Embedding:让「以文搜图、以图搜视频」成立

文本 embedding 只编码文字;多模态 / VL(Vision-Language)embedding 可把模型支持的文字、图片或视频表示到可比较的空间,于是能够做以文搜图等跨模态检索。具体支持哪些模态取决于模型,不能一概而论。

关键直觉:通过图文对训练,让语义匹配的不同模态在表示空间里更接近。文字「一只橘猫」与橘猫照片通常应比汽车图更相似,但这只是训练目标,不保证每个查询都排对;仍要用召回率与难负例评估。
📝 文本「橘猫」 🖼️ 图片 🐱 🎬 视频 🐱 🌐 同一向量空间 🐱 三者都聚在一起=相似 🚗 远

🔍 三种跨模态检索

  • 以文搜图:一句话找图(相册、素材库)
  • 以图搜图 / 以图搜视频:拿张图找同款/相似
  • 以文搜视频:一句话定位视频片段

🏢 用在哪

  • 电商:拍照搜同款、找相似商品
  • 内容/安防:图片审核、以图搜证
  • 多模态 RAG:检索含图表/截图的文档

🗂️ 代表多模态 / VL Embedding 模型

模型模态适用
CLIPOpenAI research, 2021文 + 图用 4 亿图文对做对比学习;论文重点展示图文对齐与零样本迁移,是理解共享表示空间的经典起点
SigLIPGoogle research, 2023文 + 图以 sigmoid loss 替代 CLIP 的全局 softmax 式对比损失;是否优于 CLIP 取决于模型版本和任务
ColPalivisual document retrieval, 2024查询文本 + 文档页图像从整页图像生成多向量,用 late interaction 做视觉文档页面检索
📰 新范式:ColPali —— 把 PDF 整页「当图片」检索
传统 PDF 检索常走 OCR → 版面解析 → 切块 → 文本 embedding,表格、图表与版面线索可能在转换中丢失。ColPali 直接嵌入文档页图像,生成页面级多向量并用 late interaction 匹配查询;其论文在作者提出的 ViDoRe 视觉文档检索基准上优于对比管线。这个结论限于其模型和基准,也只说明检索页可以不依赖 OCR;后续回答生成仍可能需要 VLM、OCR 或结构化解析。代价则是多向量的存储与检索开销。
例子:报表问答用户问「哪一页显示华东区毛利率下降?」文本 OCR 可能只抽出散落的坐标轴与数字;页面图像检索可以利用图例、颜色和布局先找出候选页,再由 VLM 读图并引用页码。这里的职责分工是:embedding 找页,生成模型读页
例子:以图搜商品商品图片和文本标题被编码到可比较的空间。上传一张条纹衬衫后,系统先召回视觉/语义相近商品,再叠加尺码、库存、价格等结构化过滤;向量相似不等于“同一商品”,最终排序还需业务特征。
04 · 决策

RAG vs 微调 vs 长上下文,怎么选

这三者解决的问题有重叠,也常组合使用。选择依据应是知识更新频率、资料规模、行为定制需求、延迟、成本和可验证性,而不是固定口号。

方案擅长短板
RAG外部知识规模大、更新频繁,或需要按权限检索并提供可核对出处依赖资料治理、检索与引用校验;系统链路较复杂
微调 SFT主要用于教行为、格式、口吻与任务模式,也能影响事实记忆不是可靠、可追溯的知识库;更新事实通常要再训练与验证(见 SFT 三盒子)
长上下文资料集合较小且能在单次请求中提供时,减少检索链路输入成本和延迟随长度增加;相关信息在长输入中的利用率仍需实测

常见组合是:用 SFT(Supervised Fine-Tuning,监督微调)约束输出行为,用 RAG 提供可更新证据;当候选资料很少时直接放进长上下文,很多时先检索再放入上下文。引用和权限并非 RAG 自动拥有:必须在检索层执行访问控制、保存 provenance(证据来源链),并在输出层校验引用。

05 · 翻车现场

RAG 的 8 个常见坑

召回漏证据 Retrieval Bottleneck

候选集没有关键证据,后续重排与生成通常救不回来;但召回完整也不代表模型一定会正确使用。

缓解:先做错误分层,再按数据选择混合检索、查询改写、扩大候选或补索引。

chunk 切坏 Bad Chunking

关键信息被从中间切断,或一块里塞太多无关内容。

缓解:按语义/结构切、加重叠、保留标题层级。

上下文噪声 Context Noise

塞太多片段反而稀释重点,模型被无关内容带偏。

缓解:精排只留最相关几条、压缩上下文。

幻觉没消失 Hallucination

模型可能忽略、误读或错误拼接检索内容;知识库本身也可能过期、冲突或错误。即使证据正确,“检索到”也不等于“回答已被证据支持”。

缓解:除提示约束外,对答案做主张拆分、蕴含/引用校验,并允许证据不足时拒答。

引用不实 Citation Mismatch

说「据某文档」,但答案其实对不上那段来源。

缓解:让模型逐句标注出处、做引用校验。

评估压成一分 Metric Collapse

一个自动 judge 分数无法区分资料、召回、排序、证据支持与业务正确性,也可能继承 judge 偏差。

缓解:同时保留分层指标、端到端任务集、失败切片与人工校准。

越权证据进入模型 Access-Control Leak

只在前端隐藏链接或生成后删敏感句,都挡不住模型已经读到无权访问的内容;缓存和共享索引也可能混淆租户。

缓解:用服务端身份与文档级 ACL 做检索时安全裁剪,覆盖缓存、派生索引和删除传播,并持续做越权测试。

资料夹带指令 Indirect Prompt Injection

网页、邮件或文档中的恶意文本可能诱导模型忽略系统规则、泄露数据或调用工具;“这是检索资料”不等于可信指令。

缓解:把证据视为不可信数据,隔离指令与内容,使用最小权限工具、允许列表与输出校验;检测与清洗只能降风险,不能证明彻底安全。

速查表

一张表回顾 RAG

问题答案
RAG 是什么Retrieval-Augmented Generation(检索增强生成):在生成前或生成中取回外部证据,不等于“接一个向量库”
缓解什么参数知识难更新、缺少私有资料与出处不透明;不能自动消灭幻觉或保证引用正确
四份合同① 资料与版本 ② 身份与检索 ③ 证据包 ④ 回答、引用与拒答
检索靠什么可用 dense embedding、BM25、SQL、图谱或网页搜索等;常做混合召回与 rerank
最大的坑把“查到片段”误当成“答案必然正确”;检索、资料、生成和引用都可能出错
进阶招式chunking、混合检索、reranker、查询改写、HyDE、GraphRAG、Agentic RAG
vs 微调/长上下文通常用 RAG 提供外部证据、SFT 调整行为、长上下文承载当前资料;边界会重叠,按任务评测
来源与核查

论文、官方资料与数字边界

本页于 2026-07-14 逐项核查。模型规格会更新,部署案例与厂商实验只说明其公开设置下的结果;选型时请回到最新模型卡,并在自己的数据上复现。

主题一手来源本页如何使用
RAG 与稠密检索Lewis et al., 2020DPR, 2020原始 RAG 组合参数化生成器与可检索的非参数记忆,并使用 dense Wikipedia index;这是奠基实现,不是所有 RAG 的固定拓扑
部署案例OpenAI × Morgan Stanley 客户案例LinkedIn SIGIR 2024 论文分别标为厂商客户案例和作者报告的线上部署结果,不作独立因果证明
融合与进阶检索RRF 原论文ColBERTHyDE区分排名融合、token 级 late interaction 与假想文档检索;RRF 手算沿用论文的 1-based rank 与实验参数 k=60
Contextual RetrievalAnthropic 工程报告,2024-09-19保留 5.7%→2.9%→1.9%,同时写明各知识域平均、最优 Gemini Text 004、1−Recall@20、rerank top-150→20 与厂商实验边界
GraphRAGGraphRAG 预印本Microsoft LazyGraphRAG 实验0.1% 与 700× 只描述 Microsoft 公布的特定数据、查询和成本对比
Agentic RAGSelf-RAGCRAG作为两种研究方法示例,不暗示所有 Agentic RAG 都采用它们
RAG 评估RAGAS, EACL 2024Ragas 当前指标文档Utility-aware retrieval evaluation, EACL 2026原始 RAGAS 的三维度与后续库指标分开;自动 judge 不是事实真值,检索组件指标也不能替代端到端任务评测
文本 embeddingMTEBC-Pack / C-MTEBQwen3 官方模型卡BGE-M3 官方模型卡核对 benchmark 覆盖、模型输出维度、上下文和表示类型;不把总榜平均分当成业务检索结论
重排模型BGE reranker 模型卡Qwen3 Reranker 模型卡核对联合读取 query-passage、上下文规格和分数解释;不设置跨模型通用阈值
OpenAI embedding官方模型页Embeddings API2024 发布说明核对默认 1536/3072 维、dimensions 与 256 维 MTEB 对比;输入上限和可用性回到当前 API 文档,不从旧发布稿推断
权限与注入风险Azure AI Search 文档级访问控制OWASP LLM08OWASP LLM01访问控制要进入检索查询与数据治理;检索内容按不可信数据处理,间接提示注入没有只靠提示即可彻底解决的办法
多模态检索CLIPSigLIPColPali用经典论文解释共享空间与视觉文档检索,删去未逐项验证的动态产品榜单和营销数字