# 检索增强生成（RAG）

### RAG 的概念解释

向量检索为核心的 RAG 架构已成为解决大模型获取最新外部知识，同时解决其生成幻觉问题时的主流技术框架，并且已在相当多的应用场景中落地实践。

开发者可以利用该技术低成本地构建一个 AI 智能客服、企业智能知识库、AI 搜索引擎等，通过自然语言输入与各类知识组织形式进行对话。以一个有代表性的 RAG 应用为例：

在下图中，当用户提问时 “美国总统是谁？” 时，系统并不是将问题直接交给大模型来回答，而是先将用户问题在知识库中（如下图中的维基百科）进行向量搜索，通过语义相似度匹配的方式查询到相关的内容（拜登是美国现任第46届总统…），然后再将用户问题和搜索到的相关知识提供给大模型，使得大模型获得足够完备的知识来回答问题，以此获得更可靠的问答结果。

<figure><img src="https://1288284732-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCdDIVDY6AtAz028MFT4d%2Fuploads%2Fgit-blob-abbd931618c467149e34b65c2d1c422a7ba94817%2Fimage.png?alt=media" alt=""><figcaption><p>RAG 基本架构</p></figcaption></figure>

**为什么需要这样做呢？**

我们可以把大模型比做是一个超级专家，他熟悉人类各个领域的知识，但他也有自己的局限性，比如他不知道你个人的一些状况，因为这些信息是你私人的，不会在互联网上公开，所以他没有提前学习的机会。

当你想雇佣这个超级专家来充当你的家庭财务顾问时，需要允许他在接受你的提问时先翻看一下你的投资理财记录、家庭消费支出等数据。这样他才能根据你个人的实际情况提供专业的建议。

**这就是 RAG 系统所做的事情：帮助大模型临时性地获得他所不具备的外部知识，允许它在回答问题之前先找答案。**

根据上面这个例子，我们很容易发现 RAG 系统中最核心是外部知识的检索环节。专家能不能向你提供专业的家庭财务建议，取决于能不能精确找到他需要的信息，如果他找到的不是投资理财记录，而是家庭减肥计划，那再厉害的专家都会无能为力。

### RAG vs 其它文本训练方案

* 微调（Fine-tuning） vs RAG：在达到相似结果时，RAG 在成本效率和实时性能方面具有显著优势。同时，微调技术对于数据的质量和数量要求很高。并且应用程序在使用微调模型的可能也需要 RAG 技术的支持。
* 长文本与 RAG：许多研究证实，LLM 在处理分析长文本时仍然面临着一个问题，即随着文本长度的增加，检索的准确性持续下降。因此，在任何情况下，都可以结合高精度搜索系统（RAG）。 LLM 的长文本能力和 RAG 可以完美地结合在一起，并且可以相互学习各自的长处，弥补各自的不足。

整体而言，RAG 允许大模型访问外部最新信息的数据源，从而弥补相关领域的知识缺口，提升输出的回答与知识的相关性。RAG 能够帮助 LLM 与外部来源检索的可验证实时数据相结合，输出更加准确的答案，使结果变得真实可信，降低不必要的风险。
