Cover photo

矢量搜索成功

探索 RAG 在开发复杂 LLM 中的作用。

在 2022 年之前,如果你想快速回忆起你最喜欢的书中的某个特定段落或你刚刚看过的电影中的一句话,而作品本身却没有在你面前,你可能会求助于搜索引擎。你会用一个精心设计的搜索输入来提示它,解析返回的结果,访问似乎包含你的答案的SparkNotes或IMDB链接,并在几分钟内在页面上找到你要找的文本。现在,你只需打开ChatGPT,输入“最著名的终结者名言是什么?”或“写出《双城记》的开场白”,几秒钟内就能得到逐字回复。

大型语言模型 (LLM) 最简单的用途之一是作为知识数据库。LLM 已经在包含大量丰富信息的数据集上进行了训练,ChatGPT 等界面使其易于检索。例如,当您提示 ChatGPT 从电影或书籍中返回内容时,您只是在利用模型回忆其在训练期间接触到的信息的能力。但是,如果它没有按照《终结者》的剧本进行训练,或者它的权重不重视狄更斯的作品呢?为了提供最准确和最相关的结果,即使是最简单的用例,如基本信息检索,LLM需要复杂的索引和检索机制,可以精确地访问广泛的信息。

了解 LLM 内容生成和培训

LLM 内容是通过称为下一个标记预测的过程生成的,该过程可确保响应符合上下文、多种多样,并且在一定程度上反映出类似人类的理解。以下是下一个标记预测的分步工作原理:

  1. 输入处理:键入提示或问题时,该输入将转换为标记:单词或单词片段。

  2. 上下文理解:该模型会查看您给它的令牌,并根据其训练尝试理解上下文,其中包括从手头的主题到您可能使用的语气的所有内容。

  3. 下一个代币预测:然后,使用它所理解的上下文,模型预测最有可能的下一个令牌是什么。这不仅仅是根据前一个词进行猜测;它正在考虑到那时为止的整个对话背景。

  4. 代币选择:一旦它预测了一系列可能的下一个代币,它就会选择一个。此选择基于概率 - 根据模型训练的数据,最有可能出现下一个标记。然而,值得注意的是,这里也有一些随机性,这有助于产生更多样化和更自然的响应。

  5. 输出生成**:** 然后,将选定的令牌转换回人类可读的文本。如果响应不完整(通常不是在一个令牌之后),则该过程将重复。新标记将添加到序列中,模型会根据此更新的上下文预测下一个标记。

  6. 迭代优化:预测下一个标记并将其添加到序列的过程会重复,直到模型达到停止点。这可能是当响应达到一定长度时,模型预测表示句子或段落结束的标记,或者当它满足提示中嵌入的指令时。

LLM训练中压缩的局限性

当 LLM 预测令牌时,它有效地检索和利用嵌入在其权重中的压缩知识来生成适合上下文的输出。通过这种方式,LLM 训练镜像了数据库压缩。正如数据库经过优化以快速调用频繁访问的数据一样,LLM 旨在从其权重中检索信息(特定的插值内存)。此功能使其能够对在训练期间遇到的熟悉材料的查询产生精确响应,就像在数据库中查询索引良好的信息一样。但是,当模型遇到不太熟悉或晦涩难懂的内容时,就会出现限制。例如,当你要求法学硕士提供圣经中的特定段落时,它会逐字引用它们,但它不能逐字引用任何它在训练中没有多余“见证”的概念,因为与该概念相关的权重太微不足道了。从这个意义上说,LLM也类似于数据库。正如数据库可能只返回显式存储在其中的数据一样,LLM 可能难以生成有关它在训练期间未广泛看到的主题的内容。

当然,LLM超出了这个类比的范围,因为它们内部有一个世界模型,允许他们“理解”事物,而不仅仅是查找。然而,这种过度简化有助于我们理解训练 LLM 生成内容的方式的一些关键限制。

LLM培训的进一步局限性

此外,下一个代币预测系统还有其他固有的局限性,这些局限性源于其生成文本的基本方法:

  • 上下文窗口大小: 其中一个主要约束是模型的上下文窗口大小,即模型在进行预测时可以考虑的最大文本量(以标记为单位)。对于许多模型(包括早期版本的 GPT),此窗口不够大,无法维护长时间对话或文档的上下文,这可能会导致较长文本或复杂讨论失去连贯性,这些讨论需要维护前面标记之外的上下文。

  • 泛化与特异性: 虽然这些模型是在庞大的数据集上训练的,但它们从这种训练中泛化的能力有时会导致它们产生通用或模糊相关的内容。他们可能会在生成高度具体或细致的响应方面失之交臂,这些响应需要详细的理解或训练数据之外的最新知识。

  • 缺乏外部知识获取:接下来,令牌预测模型仅限于其训练数据集中包含的信息。他们无法在培训后访问或整合新信息,这意味着他们可能很快就会过时或缺乏当前背景信息,例如最近的事件、发现或热门话题。

  • 重复性和可预测性: 下一个令牌预测的算法性质有时会导致重复或可预测的文本生成。由于该模型通常偏向于在给定上下文的情况下在统计上更有可能遵循的标记,因此它可能会陷入循环或更喜欢通用短语,从而减少输出的可变性。

检索增强生成 (RAG) 解释

如前所述,LLM 根据它们在训练期间分配给数据不同方面的权重生成响应。这些权重反映了模型感知输入数据的各种元素的重要性或重要性。如果用户的提示包含训练数据中未显著表示的元素,则模型可能无法生成准确或相关的响应。

当对话超过 LLM 的上下文窗口时,或者当提示超过 LLM 自己的训练数据集中有效权重的限制时(这意味着它无法准确回忆起用户正在寻找的答案),该模型通常依赖于外部向量搜索数据库,该数据库允许它搜索相关上下文或可以附加到用户提示中的新数据。此过程称为检索增强生成 (RAG)。

“矢量搜索成功”

RAG 过程是通过向量搜索数据库实现的:一种高级类型的数据库,将数据作为向量进行存储和管理。这些向量表示高维空间中的数据,其中每个维度都捕获了数据含义的某些方面,从而允许表示复杂的关系和属性。在文本和语言的上下文中,向量搜索数据库使用嵌入等技术将文本转换为数字向量。这种转换使系统能够通过计算不同文本片段在这个多维空间中相应向量之间的距离来测量不同文本片段之间的语义相似性。

在RAG期间,查询(即用户对LLM的输入)和存储的数据(如文章、文档或句子)都使用文本嵌入转换为向量。这些嵌入将文本数据转换为数值向量,其中相似的含义被映射到向量空间中的近似点。然后,数据库计算查询向量与存储数据向量之间的距离,以确定文本含义的关联程度。数据库检索其向量最接近查询向量的数据点(文本内容),即在语义上与输入最相似的数据点。就上下文和含义而言,这些数据点被认为是“最近邻居”。

这些最近的邻居提供了与上下文相关的附加信息,而基础 LLM 可能无法在其自己的训练数据中访问这些信息,这可以显着提高 LLM 输出的准确性、相关性、丰富性和多样性。山姆·阿尔特曼(Sam Altman)等人提倡“向量搜索成功”方法,即依靠RAG来开发智能体,而不是仅仅进行模型微调。

RAG 作为微调的替代方案

微调 LLM 涉及根据对特定数据集的额外训练来调整模型的权重,以提高特定任务的性能或提高对某些领域的理解。这个过程不仅比创新的速度慢,这意味着微调的模型几乎与更新一样快,而且它也没有解决新数据的问题。

相比之下,RAG 使模型能够实时访问外部数据库,以检索与手头查询相关的最新信息。即使基础模型最近没有更新或微调,它仍然可以生成包含最新数据的响应。模型保持相关性的时间更长,因为它们可以通过检索外部信息源来适应新数据和不断变化的环境。

RAG有效地弥合了深度学习和传统信息检索技术之间的差距。通过这样做,它利用了两者的优势——深度学习强大的上下文理解和信息检索的精确性。这种混合方法使 LLM 能够生成更准确、更详细且上下文丰富的响应。

解决 LLM 的进一步局限性

除了微调之外,RAG 还解决了之前提到的与标准 LLM 相关的挑战:

  • 扩展上下文理解: RAG 通过获取增强模型响应的最新或详细信息来扩展传统 LLM 的上下文窗口。

  • **提高特异性和准确性:**RAG 不仅仅依赖于训练期间学到的模式,而是允许模型将检索到的文档中的特定细节注入其响应中,使其不仅更准确,而且针对手头的特定查询量身定制。

  • 减少重复性和可预测性: 通过为每个查询动态提取不同的信息集,RAG 可以显着改变模型的响应。这种可变性有助于减少纯生成模型中常见的重复性和可预测性,因为外部数据在对话中引入了新的措辞和细节。

RAG的挑战和必要的演变

然而,RAG 也有其自身的挑战,即延迟和缺乏智能。想想一个回合制代理聊天机器人对话,用户提交一个提示,LLM 吐出一些标记,表明它需要更多上下文,向量搜索数据库通过用户的输入提示检索最近邻上下文,然后两者最终再次发送到 LLM 进行推理。然后,轮到用户回复,依此类推。

在此系统中,每个用户提示都会启动一个多步骤操作,其中每个步骤都会增加总处理时间。整个过程的速度还取决于矢量搜索数据库检索必要上下文的速度。如果数据库查询很复杂,或者数据库本身很大且索引不是最佳的,则此检索可能会引入严重的延迟。此外,特别是在更复杂的对话中,可能需要多次重复这种生成和检索的顺序,以充分完善响应。这种迭代周期可能会加剧延迟,导致交互速度比仅依赖内部数据的纯生成模型更慢。

此外,富含RAG的LLM的智能在很大程度上取决于从向量搜索数据库中检索到的信息的质量和相关性。如果数据库内容不全面、不及时或维护不善,则检索到的信息的效用可能会受到限制,从而影响响应的整体智能。

即使检索到高质量的外部数据,挑战仍然存在于如何有效地将这些信息整合到LLM的现有响应框架中。该模型不仅必须包含这些外部数据,而且必须以上下文适当和连贯的方式进行。模型的训练与外部数据的性质之间的不一致可能导致响应在技术上准确,但在上下文上脱节。

下一代 LLM

下一代 LLM 可能会将基于向量搜索的 RAG 和传统的训练/微调方法融合在一起,以及结构化数据处理(e.g. SQL 传统金融市场数据和相关财经新闻的数据库)。拥有“这边”的 LLM 提供程序和“那边”的单独矢量搜索数据库的概念将通过新模型进行整理,这些模型直观地将其索引工作内存扩展到具有 TB 矢量化上下文的本地 SSD。

Space and Time 已经向客户端交付了 Proof of SQL(一种验证 SQL 数据库处理的准确性和防篡改性的 ZK 证明),最近还发布了 Proof of Vector Search,它对向量搜索检索执行相同的操作。这些新颖的证明为未来开辟了道路,LLM 可以集成新的上下文,实时访问更广泛、更细微的数据范围,并集成结构化数据处理以产生更有洞察力的分析,所有这些都以可追溯、可验证的方式进行。这些进步最终将扩大LLM的应用范围,将其效用扩展到严重依赖最新数据的行业,如金融服务、新闻聚合和风险评估,从而推动下一波人工智能驱动的创新浪潮。