这是一个系列博客,包括五篇文章。博客地址:Stop Saying RAG Is Dead – Hamel’s Blog

作者批驳了“RAG已死”的说法,认为真正被淘汰的是“Chuck documents into a vector database, do cosine similarity, call it a day. ”的过时的RAG。RAG技术仍在进化,在后面的的文章里可以看到在检索、评估等方面上的创新。很高兴看到有人对RAG持积极态度,毕竟在一个有希望的领域进行研究学习更有动力。

五篇文章的简介如下:

标题内容简介
Part 1: I don’t use RAG, I just retrieve documentsBen Clavié 介绍了RAG的现状
Part 2: Modern IR Evals For RAG评估是必不可少的步骤,高质量的benchmark有助于我们选择更好的方法。Nandan Thakur (BIER作者)认为传统的IR指标不适合评估RAG的表现,应该采用新的指标
Part 3: Optimizing Retrieval with Reasoning ModelsOrion Weller 提出了一种能遵循instruct的检索系统,在检索时就进行推理,优于传统的语义检索
Part 4: Late Interaction Models For RAGAntoine Chaffin 介绍了ColBERT这类迟交互、多向量模型
Part 5: RAG with Multiple RepresentationsBryan Bischof and Ayush Chaurasia 提出,我们需要对不同模态的问题智能化的选用不用的指标

P1: I don’t use RAG, I just retrieve documents

现在有一些说法,认为长上下文窗口的出现使得我们不再需要RAG了。

10M的上下文窗口出世,并不意味着RAG就被淘汰了。就好像512MB的RAM出世,并不意味着硬盘就被淘汰了。毕竟外部知识的数量远超上下文窗口,从成本和效率来看,长上下文窗口并不会替代RAG。

RAG是已冻结参数的模型了解外部世界的桥梁。模型不需要知道那么多无关紧要的、用过即丢的知识,更何况模型学习这些知识要经过复杂的过程。所以,RAG是提供必要的外部知识的极佳方式。

回到刚才RAM和硬盘的例子,硬盘确实被取代了,不过是被SSD。所以,淘汰的RAG的,是更先进的RAG。


P3: Optimizing Retrieval with Reasoning Models

长久以来,我们的搜索引擎的形式一直没有变化,仍然是根据关键字/语义进行检索。

比如说,有三篇文章:

  1. Data Encryption Standards
  2. Wolves Outside Your Data
  3. Digital Protection

query为:“Find websites explaining data privacy”

采用关键词检索,会得到1 2,因为含有data关键词。

采用语义检索,会得到1 2 3,因为它了解“data”和“digital”以及“privacy”和“protection”之间的关系。

但是,如果我们把query改为“Find websites explaining data privacy and uses extended metaphors”,我们想要检索出2,但是模型无法理解约束,只会尝试匹配与“and uses extended metaphors”语义相近的文章,与我们的目的相差甚远。

包括现在LLM的联网搜索,也不过是在传统检索的外面,多加了一层LLM进行整理。

因此,作者希望检索器能遵循指令(instruct)。指令可以和文档的属性相关,比如日期、长度或来源。或者涉及NLU 方面,例如文档情感或写作风格。第三,它们可以包含逻辑条件,将多个约束与 AND、OR 和 NOT 等运算符组合在一起。

作者提出了Promptriever模型,让我们在检索时也用上prompt吧。

Promptriever

传统的数据集不带有指令。作者使用LLM构建了一个带有指令的数据集。然后使用RepLLaMA在数据集上训练。

在评测时使用了两个带指令的数据集:FollIR和InstructIR。结果当然是Promptriever好,因为其它模型根本没法利用指令。

那Promptriever在没有prompt时怎么办?可以直接不带prompt,或者加一句 “Find the most relevant document”,表现会更好。

Promptriever可以通过调整自然语言提示来更改模型的行为,不需要设置固定的topk阈值,另外还能解决 “find documents with high recall” 这样的指令。

为了证明模型真的理解了指令,作者对每个数据使用了10个表述不同的指令,结果该模型的标准差最小,说明它确实理解了指令的含义,而不是简单匹配关键词。

总结:

  1. 经过特制数据的训练,bi-encoder能变得像大模型一样可遵循指令。
  2. 可以使用新的询问方式,精细到风格、情感、逻辑层面。
  3. 用户不需要纠结关键词,只需要告诉模型他们想要什么。