AI 基建
0%
第六部分 · 编排 · 第 44 章

RAG 与检索

作者Changkun Ou
阅读时长约 17 分钟

检索增强生成(RAG) 在模型旁边放置一套实时、可查询的语料库。投入生产后,这套语料库就成为证据供应链:系统从中选出一小部分经过授权的内容,交给模型生成一次回答。用户需要的不是“向量搜索”,而是能够利用当前、私有或专业领域的证据作答,并说明证据来自哪里。

检索不能保证答案为真。来源本身可能有错,索引可能过期,检索器可能漏掉决定性的片段,上下文组装器可能将它丢弃,生成器也可能置之不理。因此,每个阶段都需要输入契约、输出契约和度量。检索无法找回从未进入索引的来源,生成也无法利用从未进入上下文的证据。当现有证据不足或彼此矛盾时,系统必须能够明确选择不作答。

2026-06-21T23:30:33.759851 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/ 0.0 0.2 0.4 0.6 0.8 1.0 候选质量保留量 索引 检索 重排 合成 验证
图 44.1. 检索漏斗示意图。每个阶段都会缩小候选范围,因此早期丢失的证据无法由后续检索阶段找回。保留量仅为示意,不是实测数据。

从证据契约开始

Lewis 等人在 2020 年提出 RAG,将序列到序列模型中的参数化记忆,与稠密维基百科索引中的非参数化记忆结合起来 (Lewis et al. 2020)。如今,这个术语涵盖了更广泛的生产模式:在请求到来时检索外部材料,组装一份大小受限的上下文,再据此生成回答。正因为应用范围已经扩大,数据契约比选用哪一种向量数据库更重要。

进入索引的分块需要有足够完整的身份信息,才能经得起解析、重新嵌入、权限变更、引用和删除。请求也必须带有足够的身份信息,以约束所有搜索路径,并带有预算来限制工作量。新鲜度界限规定可以接受多旧的索引快照。生成内容中的每项主张,则必须能够稳定关联到支持它的确切材料。

IndexedChunk {
  tenant, document_id, chunk_id
  text, source_uri, source_version, source_span, content_hash
  title, section_path, language, source_trust
  acl, acl_version, valid_from, valid_until
  parser_version, chunker_version, embedding_model_version, index_version
}

RetrievalRequest {
  request_id, authenticated_principal, tenant
  query, corpus_scope, policy_version, freshness_bound
  candidate_budget, token_budget, latency_budget
}

Candidate {
  chunk_ref, retrieval_channel, raw_rank, raw_score
  fused_score, rerank_score, index_snapshot
}

ClaimSource {
  claim_id, document_id, source_version, chunk_id
  quoted_span, source_uri, retrieval_request_id
}

这些字段不是为了装饰元数据。document_idchunk_id 让文档在不同索引之间保持稳定的文档身份;source_versionsource_spancontent_hash 标识确切证据;访问控制列表 acl 及其版本把授权与同一份材料绑定;解析器、分块器、嵌入模型和索引版本则使检索结果可以复现。

这份契约把经常混在一起的两个系统分开。离线路径负责接入来源、解析、分块、补充属性、生成嵌入并建立索引。在线路径负责验证请求身份、构造经过授权的候选集、检索、融合、重排、组装上下文、生成回答并核对引用。

source 来源 + ACL ingest 解析、分块、 记录版本 source->ingest index 稀疏 + 稠密 索引 ingest->index retrieve 检索、融合、 重排 index->retrieve request 经过身份认证的 请求 scope 已授权范围 request->scope scope->retrieve pack 组装证据 + 来源信息 retrieve->pack answer 回答、引用或不作答 pack->answer
图 44.2. 检索契约包括离线路径和在线路径。两条路径在带版本的索引快照处相接;授权在候选生成阶段限制搜索范围,随后检索文本才会进入重排或生成阶段。

摄取必须保留语义并支持删除

解析是第一次检索决策。标题、表格、列表、代码块、页面坐标和章节层级,往往包含解释一句话所必需的上下文。光学字符识别可能引入看似合理的替换,嵌入模型和生成器都未必能发现。应保留原始来源、解析器输出、解析器版本和来源偏移,以便把检索到的分块与原文核对。

接下来,分块过程决定检索单位。整份报告可能过于粗糙,一句话又可能脱离语境。不存在通用的分块长度。可以先从章节、段落、记录或函数等语义边界入手。检索到较小的子分块后,如果解释需要,再展开其父级或相邻内容。重叠可以保护跨越边界的事实,但组装上下文前必须去除重复命中,否则同一片段可能反复占用预算。

分块参数应根据有代表性的查询选择,不能只凭直觉。要测量完整支持片段是否至少出现在一个索引单元中,随它进入单元的无关文本有多少,以及单元跨越权限边界的频率。模型生成的上下文前缀可能改善部分语料库的检索效果,但它属于派生数据:应与来源文本分开保存,记录生成它的模型版本,并在目标工作负载上评估。Anthropic 报告称,该方法在其评估语料上相对减少了 top-20 检索失败;这项供应商结果不是通用的分块规则 (Anthropic 2024)。

更新也属于数据摄取的一部分。一次幂等写入应替换某个来源版本对应的全部稀疏、稠密和派生记录。文档删除或访问权撤销后,删除标记必须立即阻止读取,即使嵌入、图、摘要和缓存中的清理工作仍在异步进行。内容和权限元数据不能在版本之间错位。一次回答应固定使用一个索引快照;如果混用了多个快照,就必须逐一记录。

嵌入模型变更属于模式迁移,不是一次配置修改。每个向量都要保存 embedding_model_version,新索引应在旧索引旁边独立构建,用同一组查询评估两者,再明确切换流量。不兼容模型产生的查询向量和文档向量绝不能比较。

候选生成使用互补信号

在线搜索的第一阶段应足够宽且足够便宜,才能尽量保住候选召回率。稀疏检索和稠密检索提供不同信号,任何一方都不是另一方的通用后备方案。BEIR 在多种异构检索任务上发现,BM25 是很强的零样本基线;计算成本更高的后期交互和重排系统,平均表现最好 (Thakur et al. 2021)。领域迁移、查询类型、语言和语料结构,都可能推翻某个基准上的排序。

稀疏检索保留词法证据

BM25 稀疏检索(BM25) 是一种稀疏关键词评分方法,它通过倒排索引为词项评分。BM25 的一种常见形式是

Ld=1b+bdd,sBM25(q,d)=tqIDF(t)×f(t,d)(k1+1)f(t,d)+k1Ld.\begin{aligned} L_d &= 1-b+b\frac{|d|}{\overline{|d|}}, \\ s_{\mathrm{BM25}}(q,d) &= \sum_{t \in q} \operatorname{IDF}(t) \\ &\quad {}\times \frac{f(t,d)(k_1+1)} {f(t,d)+k_1L_d}. \end{aligned}

其中,qq 是查询,dd 是文档或分块,tt 是查询词项。词频 f(t,d)f(t,d) 表示 ttdd 中出现的次数;IDF(t)\operatorname{IDF}(t) 提高语料库中稀有词项的权重;d|d|d\overline{|d|} 分别表示文档长度和平均文档长度;LdL_d 是相应的长度归一化因子。正数常量 k1k_1 控制词频饱和速度,零到一之间的 bb 控制长度归一化程度 (Robertson and Zaragoza 2009)。

BM25 属于词法检索,但词法检索并不等于精确字符串匹配。分词、大小写归一化、词干提取、停用词策略和字段权重都会改变结果。标识符、产品代码、错误消息、名称和引用短语,常常让稀疏检索特别有价值。应把这些查询单独成组,不要与改写类查询和概念类查询混在一起测试。

稠密检索学习相似度函数

双编码器(dual-encoder) 把查询和每个分块映射到同一个向量空间。它通常使用内积评分:

sdense(q,d)=EQ(q)TED(d).s_{\mathrm{dense}}(q,d) = E_Q(q)^{\mathsf T}E_D(d).

其中,qq 是查询,dd 是分块,EQE_Q 是查询编码器,EDE_D 是文档编码器,上标 T\mathsf T 表示向量转置。只有两个向量都归一化为单位长度时,内积才等于余弦相似度;否则两者并不相同。

稠密段落检索(Dense Passage Retrieval,DPR)在多个开放域问答数据集上,相比其 Lucene BM25 基线,把 top-20 段落准确率提高了 9 到 19 个百分点 (Karpukhin et al. 2020)。这项结果证明了一种有用架构,并不证明稠密检索优于稀疏检索。领域发生变化、查询包含罕见字面值,或训练负例与生产环境中的易混淆内容不同时,稠密检索仍可能失败。第 45 章 将详细讨论这种表示及其训练问题。

近似搜索是一种实证取舍

精确向量搜索会为每个符合条件的向量计算分数。它是重要的正确性基线,对于小型集合或经过严格过滤的集合也可能切实可行。规模更大时,近似最近邻搜索通过接受一种随工作负载而变化的漏检概率来减少计算量。

分层可导航小世界图(分层可导航小世界图(HNSW))是一种常见设计。它从稀疏的上层开始搜索分层邻近图,逐步进入更稠密的下层 (Malkov and Yashunin 2020)。图连接度、构建工作量和搜索宽度等参数,会在内存、构建时间、查询延迟和实测邻居召回率之间取舍。HNSW 不提供通用的逐查询召回下界,也不提供最坏情况下的语义保证。应先测量 ANN 相对精确向量搜索的邻居召回率,再单独测量语义相关性。

生产向量存储可能采用 HNSW、平面索引、倒排文件、量化、磁盘图或几种方法的组合。它还要负责持久化、复制、元数据过滤、删除、压缩和一致性。这些性质与距离函数同样重要。

混合检索需要稳定融合

混合搜索(hybrid search) 在同一个经过授权的快照上运行稀疏检索和稠密检索。倒数排名融合(Reciprocal Rank Fusion,RRF)只组合排名,不假定两套系统的分数使用同一尺度:

sRRF(d)=rR:dr1k0+rankr(d).s_{\mathrm{RRF}}(d) = \sum_{r \in \mathcal{R}:d \in r} \frac{1}{k_0+\operatorname{rank}_r(d)}.

其中,dd 是文档,R\mathcal{R} 是输入排名集合,rr 是包含 dd 的一份排名,rank_r(d) 表示 dd 在该排名中从一开始计数的位置。正数常量 k0k_0 会降低某个极端排名的影响 (Cormack et al. 2009)。原始研究经过先导实验后固定使用 k0=60k_0=60;这个值可以作为验证起点,不能当作定律。

融合依赖稳定的文档身份。系统要对不同通道返回的同一分块去重,保留每一条参与融合的排名,并规定稳定的平局处理规则。如果所有截断输入列表都漏掉了某项内容,RRF 也无法让它出现。RRF 还忽略分数校准和通道质量;如果带标签的线上数据表明某个检索器持续更强,学习式融合或加权融合可能更合适。

# RRF 使用排名位置,而不是无法直接比较的原始分数。
def rrf(rankings, k0=60):
    scores = {}
    for ranking in rankings:
        for rank, document_id in enumerate(ranking, start=1):
            scores[document_id] = scores.get(document_id, 0.0) + 1 / (k0 + rank)
    return sorted(scores, key=lambda d: (-scores[d], d))

dense = ["A", "B", "C", "D"]
sparse = ["E", "C", "F", "G"]
print(rrf([dense, sparse]))
图 44.3. 对稠密排名和稀疏排名进行倒数排名融合的示意图。出现在两个列表中的文档会累积两边排名提供的证据;两个列表都没有的文档仍不会出现。

重排无法补回缺失的候选

双编码器之所以高效,是因为查询和分块分别编码。交叉编码器(cross-encoder) 会一起读取查询和分块,在给出相关性分数前建模词元级交互。它的表达能力更强,但每一对查询与候选都要运行一次模型。因此,候选深度是一项需要测量的预算,不是一份固定配方。

对重排器而言,候选召回上限是绝对的:如果输入集合中没有所需证据,再好的评分也无法把它找回来。应扫描不同短名单深度,同时测量候选召回率、nDCG、端到端回答质量、延迟和成本。增加候选可能改善排名,却也可能因为组装后的上下文加入更多干扰项而损害生成效果。

ColBERT 提供了另一种取舍。它保存文档中每个词元的嵌入,再与查询词元嵌入进行后期 MaxSim 交互 (Khattab and Zaharia 2020)。与每个分块只保存一个向量相比,这种交互能保留更细的证据,并且既可用于全语料检索,也可用于重排。代价是索引更大,检索阶段的交互更多。

重排完成后,上下文组装会在词元预算内选择证据。它应去除重叠分块,在顺序有意义时保留来源顺序,必要时展开父级上下文,并防止同一文档的重复内容挤掉独立证据。相关不等于充分:某个片段可以与问题相关,却不足以支持所要求的结论。

每项重要的回答主张都应带有一条 ClaimSource,指向引用片段和来源版本。引用精确率衡量引用来源是否支持其所附主张,引用召回率衡量需要证据的主张是否都带有引用。ALCE 说明,引用的正确性与完整性必须和回答流畅度分开评估 (Gao et al. 2023)。引用让回答可以检查,但它不能证明来源可信,也不能证明模型忠实使用了来源。

相互矛盾的权威片段应继续对回答策略可见。系统可以说明分歧,根据明确的新鲜度或权威规则选择来源,请求澄清,或选择不作答。如果默默采用相似度最高的片段,就等于把排序结果变成事实判断规则。

授权约束每一条候选路径

授权不是排序特征,也不是清理阶段。它必须在稀疏搜索、稠密搜索、图遍历、后备搜索、融合、重排、生成、缓存或日志暴露内容之前,先定义经过授权的候选集合。每个检索子查询都继承 RetrievalRequest 中已经认证的主体、租户、语料范围和策略版本。

对于每个候选 c:
  c.tenant == request.tenant
  authorize(request.authenticated_principal, c.acl, request.policy_version)
  c.valid_from <= request.time < c.valid_until

以上谓词必须在 c 的文本、分数或标识符离开候选生成阶段之前通过。

向量过滤能说明过滤位置为什么重要。前置过滤会约束近似索引实际搜索的集合。后置过滤先从更大的集合中检索,再与授权集合求交,因此,当过滤条件选择性很强时,结果可能太少,也可能漏掉未进入无过滤 top 结果的合格文档。Azure 记录了这些模式在召回率、延迟和吞吐量之间的取舍 (Microsoft 2026)。授权应使用服务器构造的前置过滤条件,或使用物理隔离的索引。后置过滤和超量检索可以作为排序实验,但不是安全边界。

权限判断必须默认拒绝。身份缺失、用户组解析失败、必要元数据过期,或授权服务报错时,系统不得返回受保护内容,也不能用只有模型参与的后备路径暗示用户拥有访问权。检索质量应以授权范围内的标准证据评估,尤其要关注访问范围狭窄的用户。全语料库召回分数会掩盖最容易得到空短名单的群体。

撤销权限需要一条短的同步路径和一条完整的异步清理路径。同步拒绝决定立即阻止对应来源或 ACL 版本。随后,清理过程再移除受影响的分块、嵌入、词法条目、图节点、摘要、提示片段和回答缓存。派生数据继承的授权策略,至少要和所有来源中最严格的策略一样严格。

缓存键应包含租户、授权权益或 ACL 版本、索引快照、查询、检索配置和模型配置。为某个主体生成的缓存命中不能成为另一个主体的证据。访问控制变更和来源删除标记都必须使受影响的缓存条目失效。

单次检索只是一种策略

单次检索适用于一个查询就能暴露足够证据的情况。更复杂的请求可能需要查询分解。互不依赖的子查询可以并行执行;顺序子查询则可能依赖前一步发现的实体或约束。每个子答案都保留自己的来源信息,合并者在综合之前对证据去重。

自适应循环需要停止条件、最大轮数、扇出上限、词元和延迟预算,以及证据不足这一终止状态。它还必须检测查询改写是否偏离用户请求。IRCoT 在多步问题中交替进行检索和中间推理 (Trivedi et al. 2023)。Self-RAG 学习了决定是否检索并评估相关性、支持度和回答效用的词元 (Asai et al. 2024)。Adaptive-RAG 根据估计的问题复杂度,在不检索、单步检索和迭代检索之间选择 (Jeong et al. 2024)。这些结果针对具体任务,不能说明控制器会改善每一条查询。

图式检索处理的是另一类工作负载。GraphRAG 抽取实体和关系、建立社区并生成社区摘要,再用这些摘要回答关于整套语料的全局问题 (Edge et al. 2024)。论文所报告的收益针对作者评估语料上的全局信息综合。图抽取和摘要生成会增加成本,也会引入新的错误。每个节点、边和摘要都需要关联到原始来源片段,使用兼容的新鲜度,并继承权限。

任何自适应或图式方案都应在算力匹配的预算下,与单次检索基线比较。增加查询次数、采用更强的重排器、增加上下文词元和更换生成器,分别属于不同的干预。如果不做消融,就无法把收益归因于编排机制。

检索文本是不可信数据

检索材料是不可信数据,不是指令。存储路径可信,并不意味着每位作者都可信;排名很高的片段也不会因此获得控制权限。检索文本可以为回答提供事实,但不能授予工具权限、修改系统策略、泄露秘密、扩大语料范围,或选择向外发送内容的目的地。这些决定仍由 第 41 章第 56 章 所述的运行框架与授权层负责。

需要区分两类攻击。语料投毒会改变检索器更可能返回什么;PoisonedRAG 证明,注入片段可以在其评估的 RAG 配置中引导回答 (Zou et al. 2025)。间接提示注入则把指令放入外部内容,让模型读取后改变行为 (Greshake et al. 2023)。只做相关性过滤无法解决这两类问题。

应保存发布者、作者、来源类型、签名或采集路径、接入时间和来源可信度等来源信息。来源可信度可以影响某项主张接受哪些证据,但不能扩大授权。对于影响重大的主张,应要求独立来源相互印证;接入时扫描并隔离可疑内容;把引用数据与控制指令分开;把工具检查放在模型之外。评估时要测量投毒成功率和外泄尝试,不能只测量回答相关性。

长上下文改变边界,不改变契约

争议所在

问题不在于长上下文模型能否读完整套语料。有些语料放得下,有些任务也确实受益于全局访问。真正的问题是:哪种设计能为目标工作负载提供最佳的质量、时效、延迟和单次查询成本。

当语料放得进窗口,而且模型能够利用每一个相关位置时,长上下文提示可以避免检索漏失。代价是传输和处理更多材料,可能引入更多干扰项,并且仍要处理授权与来源追踪。Liu 等人在多文档问答和键值任务中观察到明显的位置敏感性:相关证据位于长输入中间时,模型往往不如证据位于两端时可靠 (Liu et al. 2024)。这项结果是一项警示,不是对架构的普遍排序。

Li 等人的直接比较发现,在其评估数据集上,资源充足的长上下文模型平均优于 RAG,而 RAG 便宜得多 (Li et al. 2024)。因此,有用的生产基线不是“采用 RAG 或完全不用 RAG”,而是加入长上下文基线和明确的路由:授权语料放得进窗口且全局推理有帮助时,使用直接上下文;语料超过窗口、频繁变化,或只需要一小组证据时,使用检索;查询难度值得承担额外成本时,再采用混合方案。

下层约束

检索花费服务资源,是为了节省更多服务资源。嵌入搜索、重排和索引存储都会增加成本,但更短的提示会减少注意力计算、键值缓存和模型输入工作(第 31 章第 32 章)。前缀缓存会改变重复长上下文的价格,却不会改变授权或时效契约。应针对实际流量构成,测量完整的质量、成本与延迟边界。

评估必须定位故障发生在哪一层

端到端回答分数无法说明是来源缺失、解析破坏了内容、检索漏掉了证据、上下文组装将其丢弃,还是生成器没有使用它。应固定一份测试契约,其中包括语料版本、权限、查询集、生成器、提示、检索单位和标准支持片段。查询集既要包含可回答和不可回答的查询,也要按标识符密集、改写、多语言、多步、全局、刚更新和权限受限等类型分组。

对于查询 qq,深度 kk 下的检索召回率可以写为

Recall@k(q)=RqTk(q)Rq.\operatorname{Recall@}k(q) = \frac{|R_q \cap T_k(q)|}{|R_q|}.

其中,RqR_q 是查询 qq 的相关证据单元集合,Tk(q)T_k(q) 是返回结果中的前 kk 个单元,竖线表示集合大小,kk 是评估深度。这个定义要求完整的相关性判断;只有一个已知片段时,应报告命中率,不能假装标签已经完整。

带等级的相关性和排序可以用归一化折损累计增益概括:

DCG@k(q)=i=1k2reli1log2(i+1),nDCG@k(q)=DCG@k(q)IDCG@k(q).\begin{aligned} \operatorname{DCG@}k(q) &= \sum_{i=1}^{k} \frac{2^{\operatorname{rel}_i}-1}{\log_2(i+1)}, \\ \operatorname{nDCG@}k(q) &= \frac{\operatorname{DCG@}k(q)} {\operatorname{IDCG@}k(q)}. \end{aligned}

其中,ii 是从一开始计算的排名,reli\operatorname{rel}_i 是第 ii 项结果的相关性等级,DCG@k(q)\operatorname{DCG@}k(q) 是观察到的折损增益,IDCG@k(q)\operatorname{IDCG@}k(q) 是同一组判断能够达到的最大折损增益。当多个片段具有不同价值时,nDCG@k 很有用;只有当目标就是找到第一个充分结果时,平均倒数排名(Mean Reciprocal Rank,MRR)才合适。

应在流水线边界分别测量:

  • 摄取: 解析成功率、标准片段的分块覆盖率、重复率、来源到可搜索状态的延迟、删除延迟、撤销权限延迟和索引年龄。
  • 候选生成: BM25 与稠密 recall@k、ANN 相对精确搜索的邻居召回率、融合召回率、nDCG@k、空结果率,以及按查询类型和授权群体划分的结果。
  • 上下文组装: 组装召回率、相关词元占比、重叠浪费、来源多样性和矛盾证据保留率。
  • 生成: 有证据支持的回答准确率、不作答的精确率与召回率、引用精确率、引用召回率、主张级忠实度和用户效用。
  • 安全: 未授权结果率、跨租户检索、投毒成功率、提示注入成功率、过期引用率和缓存泄露。

使用同一个生成器分别运行无检索基线、理想上下文基线和真实检索上下文。理想上下文与生成结果之间的差距可以隔离证据使用问题;理想上下文和真实上下文之间的差距可以隔离检索与组装问题。还应在相同词元、金额和延迟预算下,加入仅 BM25、仅稠密、混合、带重排、长上下文和自适应等变体。RAGChecker 是细分检索与生成诊断的一种框架示例 (Ru et al. 2024)。

采用按查询配对的比较和自助法置信区间。重复运行随机生成,用盲法人工标签校准模型裁判,并记录裁判提示和模型版本。随后注入运行故障:新增来源、更新事实、删除来源、撤销访问权、破坏解析器输出、移除支持证据、插入貌似合理的干扰项、加入矛盾证据,以及投毒一个分块。预期响应也是测试契约的一部分。

一份生产检索流程

安全循环仍然很短,但它的参数承载着整套系统契约:

def answer(request):
    principal = authenticate(request)
    scope = authorize_scope(principal, request.tenant, request.corpus_scope)
    snapshot = pin_index(request.freshness_bound)

    dense = dense_search(request.query, snapshot, prefilter=scope)
    sparse = bm25_search(request.query, snapshot, prefilter=scope)
    candidates = stable_rrf(dense, sparse)
    candidates = verify_versions_and_acl(candidates, principal, snapshot)
    ranked = rerank(request.query, candidates, request.candidate_budget)
    context = pack_with_provenance(ranked, request.token_budget)

    if not evidence_is_sufficient(request.query, context):
        return abstain_with_retrieval_trace(request, snapshot)

    response = generate_from_untrusted_evidence(request.query, context)
    return verify_claim_sources_or_abstain(response, context)

生产行为还需要保留期限契约。即使检索文本没有进入智能体的长期记忆,它仍可能留在跟踪记录、对话、供应商日志、提示缓存、评估或响应缓存中。系统要说明存在哪些副本、谁可以读取、何时过期,以及删除操作如何传递到这些副本。

RAG 位于 第 39 章 的持久状态旁边。它为一次请求提供证据,不会自动成为持久记忆;只有单独且经过授权的写入接受这些内容后,它们才会进入记忆。下一章 第 45 章 将打开稠密检索内部,说明表示空间如何训练、评估、压缩和迁移。

延伸阅读

  • Lewis et al., “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,” 2020. proceedings.neurips.cc
    RAG 原始论文把序列到序列模型与稠密 Wikipedia 索引结合起来,提出参数化记忆与非参数化记忆的表述。
  • Robertson & Zaragoza, “The Probabilistic Relevance Framework: BM25 and Beyond,” 2009. doi.org
    系统推导并解释概率相关性框架、BM25 词项加权及其参数。
  • Karpukhin et al., “Dense Passage Retrieval for Open-Domain Question Answering” (DPR:使用批内负样本的双编码器), 2020. aclanthology.org
    DPR 分别训练查询与段落编码器,并在多个开放域问答数据集上展示了稠密检索的效果。
  • Cormack et al., “Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods,” 2009. cormack.uwaterloo.ca
    RRF 给出一种只依赖名次的简单融合规则,并在 TREC 与 LETOR 排名上进行评测。
  • Malkov & Yashunin, “Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs,” 2020. arXiv:1603.09320
    HNSW 把近似最近邻搜索组织成分层邻近图,并提供可调的构建与搜索权衡。
  • Khattab & Zaharia, “ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT,” 2020. arXiv:2004.12832
    ColBERT 把查询与文档交互推迟到上下文词元嵌入上的 MaxSim 阶段,以更大的索引换取更细粒度的匹配。
  • Thakur et al., “BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models,” 2021. datasets-benchmarks-proceedings.neurips.cc
    BEIR 在异构检索数据集上比较词法、稀疏、稠密、后期交互与重排系统,揭示明显的领域相关权衡。
  • Trivedi et al., “Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions,” 2023. aclanthology.org
    IRCoT 交错执行检索与中间推理,使后续搜索能够依赖先前找到的证据。
  • Asai et al., “Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection,” 2024. arXiv:2310.11511
    Self-RAG 训练反思词元,在生成期间控制检索并评估相关性、证据支持与回答效用。
  • Jeong et al., “Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity,” 2024. aclanthology.org
    Adaptive-RAG 根据估计的问题复杂度,在不检索、单步检索与迭代检索之间路由。
  • Edge et al., “From Local to Global: A Graph RAG Approach to Query-Focused Summarization,” 2024. arXiv:2404.16130
    GraphRAG 从语料构建实体图与社区摘要,用于面向全局问题的查询式意义建构。
  • Zou et al., “PoisonedRAG: Knowledge Corruption Attacks to Retrieval-Augmented Generation of Large Language Models,” 2025. usenix.org
    PoisonedRAG 表明,攻击者注入的段落能够破坏受测 RAG 配置的回答,说明语料本身就是攻击面。
  • Greshake et al., “Not What You've Signed Up For: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection” (间接/跨域提示注入的奠基之作), 2023. arXiv:2302.12173
    间接提示注入把对抗性指令放进第三方数据,等待集成大模型的应用检索,从而暴露数据与工具控制风险。
  • Gao et al., “Enabling Large Language Models to Generate Text with Citations,” 2023. aclanthology.org
    ALCE 分别评估长文本回答质量、引用正确性与引用完整性,而不是把出现引用当作充分条件。
  • Liu et al., “Lost in the Middle: How Language Models Use Long Contexts,” 2024. aclanthology.org
    受控实验表明,受测模型在长上下文中利用证据时存在明显的位置敏感性。
  • Li et al., “Retrieval Augmented Generation or Long-Context LLMs? A Comprehensive Study and Hybrid Approach,” 2024. aclanthology.org
    直接比较发现,在受测场景且资源充分时,长上下文模型平均更强,而 RAG 成本低得多,因此适合混合路由。
  • Ru et al., “RAGChecker: A Fine-grained Framework for Diagnosing Retrieval-Augmented Generation,” 2024. proceedings.neurips.cc
    RAGChecker 分开诊断检索与生成,并用人类判断验证其指标。

评论

登录后评论