# 矢量搜索成功
探索 RAG 在开发复杂 LLM 中的作用。

By [jake66.eth](https://paragraph.com/@jake66) · 2024-06-11

---

##### **斯科特·戴克斯特拉**

联合创始人兼首席技术官

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

大型语言模型 (LLM) 最简单的用途之一是作为知识数据库。LLM 已在包含丰富信息的海量数据集上进行训练，而 ChatGPT 等接口让检索变得十分简单。例如，当您提示 ChatGPT 返回电影或书籍的内容时，您只是在利用模型回忆训练期间接触过的信息的能力。但如果模型没有接受《终结者》剧本的训练，或者它的权重不重视狄更斯的作品，该怎么办？为了为最简单的用例（例如基本信息检索）提供最准确、最相关的结果，LLM 需要复杂的索引和检索机制，以便精确访问广泛的信息。

### **了解 LLM 内容生成和培训**

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

1.  \*\*输入处理：\*\*当您键入提示或问题时，该输入将转换为标记：单词或单词片段。
    
2.  \*\*上下文理解：\*\*模型查看您提供的标记，并根据训练尝试理解上下文，其中包括从当前主题到您可能使用的语气的所有内容。
    
3.  \*\*下一个标记预测：\*\*使用所理解的上下文，模型会预测最有可能的下一个标记是什么。这不仅仅是根据紧接的上一个单词进行猜测；它考虑了到那时为止的整个对话上下文。
    
4.  \*\*标记选择：\*\*一旦预测了一系列可能的下一个标记，它就会选择一个。此选择基于概率——根据模型训练的数据，最有可能出现的下一个标记。但值得注意的是，这里也有一些随机性，这有助于生成更多样、听起来更自然的响应。
    
5.  \*\*输出生成：\*\*所选标记随后被转换回人类可读的文本。如果响应不完整（通常在一个标记之后就不完整），则重复该过程。新标记被添加到序列中，模型根据更新后的上下文预测下一个标记。
    
6.  \*\*迭代细化：\*\*预测下一个标记并将其添加到序列的过程会重复进行，直到模型到达停止点。这可能是当响应达到一定长度时，模型预测的标记表示句子或段落的结束，或者当模型满足提示中嵌入的指令时。
    

**LLM 培训压缩的局限性**
----------------

当 LLM 预测一个 token 时，它实际上是在检索和利用嵌入在其权重中的压缩知识来产生适合上下文的输出。通过这种方式，LLM 训练反映了数据库压缩。正如数据库经过优化以快速调用经常访问的数据一样，LLM 旨在从其权重中检索信息（特定的插值记忆）。此功能使其能够对在训练期间遇到的熟悉材料的查询产生精确的响应，就像在数据库中查询索引良好的信息一样。但是，当模型遇到不太熟悉或晦涩难懂的内容时，就会出现限制。例如，当您向 LLM 询问圣经中的特定段落时，它会逐字逐句地引用它们，但它无法逐字逐句地引用它在训练期间没有冗余“见证”的任何概念，因为与该概念相关的权重太小了。从这个意义上讲，LLM 也类似于数据库。正如数据库可能只返回明确存储在其中的数据一样，LLM 可能难以生成在训练期间未广泛看到的主题的内容。

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

**LLM 培训的进一步局限性**
-----------------

此外，下一个标记预测系统还有其他固有的局限性，这些局限性源于其生成文本的基本方法：

*   \*\*上下文窗口大小：\*\*主要制约因素之一是模型的上下文窗口大小，即模型在进行预测时可以考虑的最大文本量（以标记为单位）。对于许多模型（包括早期版本的 GPT）而言，此窗口不足以在较长的对话或文档中保持上下文，这可能会导致较长的文本或复杂的讨论失去连贯性，因为这些讨论需要保持紧接在前的标记之外的上下文。
    
*   \*\*泛化与特异性：\*\*虽然这些模型是在大量数据集上训练的，但它们从训练中泛化的能力有时会导致它们产生通用或不太相关的内容。它们可能无法生成高度特定或细微的响应，而这些响应需要详细了解或了解训练数据之外的最新知识。
    
*   \*\*缺乏外部知识访问：\*\*下一个 token 预测模型仅限于其训练数据集中包含的信息。它们无法访问或整合训练后的新信息，这意味着它们很快就会过时或缺乏当前背景，例如最近的事件、发现或热门话题。
    
*   \*\*重复性和可预测性：\*\*下一个标记预测的算法性质有时会导致重复或可预测的文本生成。由于该模型通常倾向于统计上更有可能在给定上下文的情况下出现的标记，因此它可能会陷入循环或偏爱常用短语，从而降低输出的可变性。
    

### **检索增强生成 (RAG) 详解**

如上所述，LLM 根据在训练期间分配给数据不同方面的权重来生成响应。这些权重反映了模型认为输入数据中各个元素的重要性或显著性。如果用户的提示包含训练数据中未显著体现的元素，则模型可能无法生成准确或相关的响应。

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

#### **“向量搜索成功”**

RAG 流程通过向量搜索数据库实现：这是一种将数据存储和管理为向量的高级数据库。这些向量表示高维空间中的数据，其中每个维度都捕获数据含义的某些方面，从而可以表示复杂的关系和属性。在文本和语言的背景下，向量搜索数据库使用嵌入等技术将文本转换为数字向量。通过这种转换，系统可以通过计算此多维空间中相应向量之间的距离来测量不同文本之间的语义相似性。

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

这些最近邻提供了上下文相关的附加信息，而基础 LLM 可能无法在其自己的训练数据中获取这些信息，这可以显著提高 LLM 输出的准确性、相关性、丰富性和多样性。Sam Altman 等人提倡“向量搜索成功”方法 - 依靠 RAG 来开发代理，而不是仅仅进行模型微调。

#### **RAG 作为微调的替代方案**

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

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

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

#### **解决法学硕士的进一步限制**

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

*   **扩展情境理解：** RAG 通过获取最新或详细的信息来扩展传统 LLM 的情境窗口，从而增强模型的响应。
    
*   **增强特异性和准确性：** RAG 不再仅仅依赖于训练期间学习到的模式，而是允许模型将检索到的文档中的特定细节注入到其响应中，使其不仅更加准确，而且还可以根据手头的特定查询进行定制。
    
*   \*\*降低重复性和可预测性：\*\*通过动态提取每个查询的不同信息集，RAG 可以显著改变模型的响应。这种可变性有助于降低纯生成模型中经常出现的重复性和可预测性，因为外部数据会将新的措辞和细节引入对话中。
    

#### **RAG 面临的挑战和必要的演进**

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

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

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

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

### **下一代法学硕士**

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

Space and Time 已经向客户交付了 SQL 证明（一种用于验证 SQL 数据库处理的准确性和防篡改性的 ZK 证明），最近又交付了向量搜索证明，该证明对向量搜索检索具有同样的功能。这些新颖的证明为未来开辟了道路，LLM 可以整合新背景，实时访问更广泛、更细致的数据，并集成结构化数据处理以产生更具洞察力的分析，所有这些都以可追溯、可验证的方式完成。这些进步最终将拓宽 LLM 的应用范围，将其实用性扩展到严重依赖最新数据的领域，例如金融服务、新闻聚合和风险评估，从而推动下一波人工智能驱动的创新。

##### **斯科特·戴克斯特拉**

联合创始人兼首席技术官

Scott Dykstra 是 Space and Time 的联合创始人兼首席技术官，也是包括 Sotero 在内的多家数据库和 Web3 技术初创公司的战略顾问。Scott 在围绕复杂的绿地挑战和研究驱动型开发建立和扩展大型工程团队方面拥有丰富的经验。Scott 专注于企业级分析，之前曾担任 Teradata 的云解决方案副总裁，在那里他花了近八年时间将 Teradata 从本地部署带到下一代基于云的 SaaS。Scott 是一位有远见的产品领导者，在 Web3、数据仓库、云和衍生品交易方面拥有产品开发专业知识。Scott 对漂亮的用户体验/用户界面非常着迷。作为一名企业家，Space and Time 是 Scott 作为研究驱动型初创公司高管的第二项成功尝试。

---

*Originally published on [jake66.eth](https://paragraph.com/@jake66/rag-llm)*
