# 向量搜索的成功之道

By [130310.eth](https://paragraph.com/@130310) · 2024-05-18

---

[https://www.spaceandtime.io/blog/vector-search-to-success](https://www.spaceandtime.io/blog/vector-search-to-success)

向量搜索的成功：探索RAG在开发复杂LLM中的作用

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

大型语言模型（LLM）的最简单用途之一是作为知识数据库。LLM经过训练，涵盖了丰富数据集的信息，像ChatGPT这样的接口使其变得易于检索。当你提示ChatGPT返回电影或书籍的内容时，你实际上是在利用模型在训练期间接触到的信息的回忆能力。但是，如果它没有接受过《终结者》剧本的训练，或者其权重没有给予狄更斯作品足够的重视呢？为了为即使是最简单的信息检索用例（如基本的信息检索）提供最准确和相关的结果，LLM需要复杂的索引和检索机制，以精确访问广泛的信息。

理解LLM内容生成和训练 LLM内容是通过称为下一个标记预测的过程生成的，确保响应在上下文上适当、多样化并且在某种程度上反映了人类般的理解。以下是下一个标记预测的工作原理，逐步说明：

输入处理：当你输入提示或问题时，该输入会转换为标记：单词或单词的一部分。 上下文理解：模型查看你提供的标记，并根据其训练内容，试图理解上下文，包括从话题到你可能使用的语气的所有内容。 下一个标记预测：利用其理解的上下文，模型预测最可能的下一个标记是什么。它不仅仅是根据前一个单词猜测；而是考虑到到目前为止对话的整个上下文。 标记选择：一旦预测了一系列可能的下一个标记，它会选择一个。这一选择基于概率——根据模型训练的数据，最有可能出现的下一个标记。值得注意的是，这里还有一些随机性，有助于生成更加多样和自然的响应。 输出生成：选择的标记然后转换回人类可读的文本。如果响应不完整（通常在仅生成一个标记后是这样的），该过程会重复。新标记会添加到序列中，模型根据更新后的上下文预测下一个标记。 迭代优化：这种预测下一个标记并将其添加到序列中的过程会重复，直到模型达到一个停止点。这可能是响应达到某个长度、模型预测到一个标记表示句子或段落的结束，或完成提示中嵌入的指令时。 LLM训练中的压缩限制 当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和传统的训练/微调方法，以及结构化数据处理（如传统金融市场数据和相关金融新闻的SQL数据库）。“这里”的LLM提供商与“那边”的向量搜索数据库之间的概念将通过新模型整合在一起，这些模型直观地将其索引的工作内存扩展到具有数万亿字节向量化上下文的本地SSD。

Space and Time已经向客户提供了Proof of SQL——一种验证SQL数据库处理的准确性和防篡改性的零知识证明——并最近发布了Proof of Vector Search，它对向量搜索检索进行了同样的验证。这些新颖的证明为未来铺平了道路，在这个未来中，LLM可以整合新鲜的上下文，实时访问更广泛和更细致的数据，并整合结构化数据处理以产生更深入的分析，所有这些都是可追溯和可验证的。这些进展最终将拓宽LLM的应用范围，扩展其在依赖最新数据的行业中的效用，如金融服务、新闻聚合和风险评估，从而推动下一波AI驱动的创新。

---

*Originally published on [130310.eth](https://paragraph.com/@130310/hkHZoLScnQ94y2eh2PXE)*
