大型语言模型数据检索与知识锚定技术解析

5 阅读12分钟

大型语言模型的知识锚定研究者指南

摘要:知识锚定通过向大型语言模型(LLM)提供相关的外部知识来增强其预训练知识。检索增强生成(RAG)是基于信息检索数十年工作的领先锚定策略。LLM锚定的关键挑战围绕着数据展开:数据必须与任务相关,数量合适,并且格式准备得当。研究表明,向LLM提供信息时,“少即是多”——提供LLM推断相关信息所需的最低限度信息是最佳做法。

大型语言模型可以看作是知识库。在训练过程中,LLM会观察大量文本,从而编码了大量通用知识,并在生成输出时调用这些知识。这种再现知识的能力是实现问答或总结等能力的关键驱动力。

然而,LLM编码的“知识”始终存在局限性。有些信息可能根本不会出现在LLM的训练数据中,因此LLM可能不知道。例如,这可能包括私人或个人信息(如个人健康记录)、特定领域的知识,或者在训练时不存在的信息。

同样,由于LLM的可训练参数数量有限,它们只能存储一定量的信息。因此,即使知识出现在训练数据中,也无法保证是否(或如何)被回忆起来。

许多LLM应用需要相关且最新的数据。尽管在训练数据整理和不断增长的模型容量方面尽了最大努力,但总会出现LLM表现出知识空白的情况。然而,它们的预训练知识可以在推理时得到增强。通过向LLM直接提供额外信息,用户可以在利用预训练知识的同时,将LLM的响应“锚定”在新知识中。

在本文中,我们将探讨LLM锚定的基本概念以及优化模型锚定的策略。

什么是LLM锚定?

大多数人都有意或无意地熟悉锚定的概念。在解决问题或回答问题时,我们依赖于以往的经验和记忆的知识。在这种情况下,可以说我们的行为是基于我们以往的经验和知识的。

然而,当面对不熟悉的任务或不确定的问题时,我们必须通过查找和学习相关信息来实时填补知识空白。在这种情况下,可以说我们的行为“锚定”在这些补充信息中。

当然,我们的内在知识在解释和情境化新信息方面发挥着关键作用。但在我们寻求外部知识的情况下,我们的响应主要锚定在这种新获取的信息上,因为它提供了解决问题所需的关键相关且缺失的背景信息。这与认知心理学中的观点一致,特别是情境认知理论,该理论认为知识是存在于其学习环境中的。

LLM锚定与此类似。LLM依赖其庞大的通用知识来执行通用任务和回答常见问题。当面对专门任务或存在知识空白的问题时,LLM必须使用外部补充信息。

Lee及其同事在2024年给出了LLM锚定的严格定义:给定某些上下文信息,LLM使用此上下文中的所有基本知识,并遵守其范围,而不产生任何虚假信息。在日常使用中,“LLM锚定”一词可以仅指向LLM提供信息的过程(例如,作为检索增强生成的同义词),或指解释所述信息的过程(例如,上下文理解)。在本文中,我们将使用“锚定”一词来指代这两者,但放弃对LLM输出的任何严格保证。

我们为什么需要锚定LLM?

假设我们向LLM提出一个问题,仅凭其预训练知识无法正确回答。尽管缺乏足够的补充知识,LLM仍会做出响应。虽然它可能表示无法推断出正确答案,但也可能以“最佳猜测”的方式给出错误答案。LLM倾向于生成听起来合理但事实上不正确信息的输出,这种倾向被称为“幻觉”。

LLM的设计仅仅是根据先前预测的标记(及其固有知识)来预测标记,它们并不了解自己知识的范围。通过植入相关的“先前”外部信息作为标记,我们为LLM提供了更多可以借鉴的知识,从而降低了产生幻觉的可能性。(您可以在Ji及其同事2023年发表的关于自然语言生成中幻觉的全面调查中找到更深入的机制讨论。)

我们如何锚定LLM?

上下文学习是LLM的一种涌现能力。ICL允许LLM在推理时整合输入提示中提供的任意上下文信息。ICL的一个显著应用是少样本学习,即LLM通过考虑提示中包含的输入-输出示例对来推断如何执行任务。

随着大型LLM系统的出现,ICL已扩展为一种正式的锚定技术,称为检索增强生成(RAG)。在RAG中,利用ICL来整合从某些外部信息源检索到的、与手头任务相关的特定信息。

这种信息源通常采用向量数据库或搜索引擎(即网页索引)的形式,并由所谓的检索器进行查询。对于输入严格为文本的单模态LLM,这些数据库存储文本文档,检索器将返回其中的一个子集。

LLM的输入提示必须结合任务指令和检索到的补充信息。因此,在设计RAG提示时,我们应该考虑:

  • 总结或省略检索信息的部分内容。
  • 重新排列检索到的信息和/或指令。
  • 包含元数据(例如,超链接、作者)。
  • 重新格式化信息。

一个简单的RAG提示可能如下所示:

使用以下文档回答以下问题。

[问题]
加拿大的首都是哪个城市?

[文档 1]
渥太华是加拿大的首都。 ...

[文档 2]
加拿大是北美洲的一个国家。 ...

让我们考虑一个具体的例子:假设我们希望构建一个类似于Google Gemini或Microsoft Copilot的LLM应用程序。这些系统可以从像Google这样的网络搜索引擎检索信息,并将其提供给LLM。

此类系统的典型实现将包括三个核心步骤:

  1. 查询转换:当用户向RAG系统提交提示时,LLM会从提示中推断出检索器搜索查询。这些查询共同寻求与提示中描述的任务相关的所有网页。
  2. 检索信息:查询被传递到搜索引擎并由其执行(例如,每个用户查询由搜索引擎执行),从而产生网页搜索结果的排名。
  3. 向LLM提供数据:为每个查询返回的前十个结果被串联成一个提示,提供给LLM,使LLM能够将其答案锚定在最相关的内容中。

优化锚定LLM的核心策略

LLM锚定并非总是像检索数据并提供给LLM那么简单。主要挑战在于获取和准备相关数据。

数据相关性

LLM锚定将构思答案的问题重新配置为从提供的数据中总结(或推断)答案的问题。如果无法从数据中推断出相关知识,那么LLM锚定就无法产生更相关的响应。因此,一个关键挑战是确保我们用于锚定LLM的信息是高质量且相关的。

独立于LLM,识别与用户查询相关的数据是困难的。除了查询歧义和数据质量的问题之外,更深层次的挑战在于解释查询意图、推断潜在的信息需求,并检索能够满足需求的信息。这种困难构成了整个信息检索领域的基石和动机。被锚定的LLM直接继承了这种困难,因为响应质量取决于检索质量。

鉴于这些挑战,从业者必须设计提示和检索策略以确保相关性。为了最大限度地减少歧义,用户输入应仅限于必要内容,并纳入结构化提示中。

可以使用搜索引擎、索引或API来获取与手头任务相关的高质量数据。网络搜索引擎提供广泛且最新的信息。在为索引或数据库构建自定义检索系统时,可以考虑构建一个两阶段的流水线:一个检索器(使用简单的关键词匹配构建相关文档候选列表)和一个排序器(使用高级推理对候选文档重新排序)。

对于检索器,基本的术语统计方法(例如TF-IDF、BM25)因其效率而被广泛采用。然而,排序器通常利用“神经”架构(通常基于Vaswani及其同事在2017年提出的transformer架构)来检测语义相关性。无论采用何种方法,检索数据的有用性在很大程度上取决于向检索器提出的查询以及它们捕捉提问者意图的能力。可以考虑针对手头任务显式地设计和测试查询,或使用LLM进行动态查询优化。

数据数量

另一个威胁LLM锚定有效性的因素是提供给它们的信息量。尽管从技术上讲,LLM能够接收大量输入(像Llama 4 “Scout”这样的LLM有足够的输入标记来接收整本书),但它们的有效性可能会因提供的输入量的具体大小而异。

经验表明,随着输入规模的增加,LLM的性能通常会下降,尤其是在衡量以推理或总结为中心的任务时。直观上,缓解此问题的一个简单策略是最小化输入规模,即最小化提供的外部数据量。换句话说,“少即是多”:提供足够的信息让LLM锚定其响应,但不要过多。

在使用RAG锚定LLM时,可以考虑仅保留检索查询的前几个结果(即top-k)。k的理想值会根据许多因素而变化,包括检索器的选择、被检索的索引数据以及手头任务。为了确定合适的值,可以考虑在不同k值下运行实验,然后找到能检索到足够信息的最小值。k的理想值在不同情况下可能会有所不同;如果这些情况是可区分的,可以考虑设计一个算法来动态设置k。

如果可以选择,可以考虑使用更细粒度的文本(例如,优先选择句子或小块文本,而不是段落或文档)。遵循“少即是多”的原则,努力检索最细粒度的文本(当与其他结果结合时)足够提供信息。当以较大粒度(例如文档)检索文本时,可以考虑从检索到的文档中提取关键句子。

数据排列

除了相关性和数量之外,数据的相对位置(顺序)也会显著影响响应生成过程。Liu及其同事在2024年发表的研究表明,许多LLM在其输入上下文中查找和使用信息的能力取决于该信息的相对位置。

当相关信息放置在输入上下文的开头或结尾附近时,LLM性能通常较高,而放在中间时则较低。这种所谓的“迷失在中间”偏差表明,LLM在阅读大量文本时倾向于“略读”,并且随着输入上下文的增长,由此产生的性能下降会加剧。

缓解“迷失在中间”的偏差可能很困难,因为很难预测哪些检索到的信息(例如,哪些检索到的文档)包含真正对锚定至关重要的上下文。通常,这里也适用“少即是多”的原则。通过最小化提供给LLM的信息量,我们可以减轻这种偏差的影响。

“迷失在中间”的偏差可以通过经验测试来衡量,例如Greg Kamradt的“大海捞针测试”,该测试使LLM开发者能够优化对这种偏差的鲁棒性。为了调整表现出这种偏差的LLM,可以考虑从多个类似的推理调用中对答案进行抽样,每次都对外部信息进行洗牌(甚至策略性地丢弃)。或者,您可以估计不同信息的重要性,然后重新排列,将重要信息放在首选位置。

LLM锚定中的开放挑战和持续研究

锚定是提高LLM性能不可或缺的策略。特别是在使用检索增强生成时,这些改进的程度通常取决于次要因素,如外部数据的数量及其精确排列。这些困难是当前研究的重点,未来的研究将继续减轻其影响。

LLM锚定研究的另一个重点是改进出处,即引用用于生成输出的特定数据源(或其部分)的能力。像某机构Research的Attributed QA这样的基准正在追踪这一领域的进展。

研究人员还在努力应用有针对性的修改来更新语言模型(即无需微调)。这将允许在训练后添加、删除或更改信息,从而可能提高预训练LLM的覆盖范围,从而减少对外部信息的需求。