
从零开始构建一个应用可以让我们快速理解应用的各个部分。
这个方法其实非常适用于 RAG。
我在以前的文章中有介绍过 RAG 的概念、原理以及应用等,但其实,亲自动手来构建一个 RAG 系统或许能够让我们更快速的理解 RAG 到底是什么。
本文将为读者提供一个从零开始搭建一个 RAG 应用的入门教程。

RAG 简介
在开始之前,我还是打算再次简要的介绍一下 RAG。
在 Meta 的官方 Blog 上有这样一段话:
Building a model that researches and contextualizes is more challenging, but it’s essential for future advancements. We recently made substantial progress in this realm with our Retrieval Augmented Generation (RAG) architecture, an end-to-end differentiable model that combines an information retrieval component (Facebook AI’s dense-passage retrieval system) with a seq2seq generator (our Bidirectional and Auto-Regressive Transformers BART model). RAG can be fine-tuned on knowledge-intensive downstream tasks to achieve state-of-the-art results compared with even the largest pretrained seq2seq language models. And unlike these pretrained models, RAG’s internal knowledge can be easily altered or even supplemented on the fly, enabling researchers and engineers to control what RAG knows and doesn’t know without wasting time or compute power retraining the entire model.
这段话主要讲述了一个新的模型架构,也就是 RAG (检索增强生成) 的重要性和优势。可以概括为以下几点:
-
1. 构建一个能够进行研究和上下文分析的模型虽然更具挑战性,但对未来的技术进步非常关键;
-
2. 通过在知识密集的下游任务上微调,RAG 可以实现最先进的结果,比现有的最大的预训练序列到序列语言模型还要好;
-
3. 与传统的预训练模型不同,RAG 的内部知识可以轻松地动态更改或补充。也就是说,研究人员和工程师可以控制 RAG 知道和不知道的内容,而不需要浪费时间或计算资源重新训练整个模型。
这段话信息量很大,但是作为初学者,简而言之:
RAG 的本质是在传递给 LLM 的提示语中,通过一个检索工具来添加自己的数据。
接下来,我们就要开始准备我们的 RAG 应用了。
RAG 系统的高层组件
-
• 一组文档,正式说法为语料库
-
• 用户输入
-
• 语料库和用户输入之间的相似性度量
这是简化版的 RAG 组件系统,我们不需要考虑向量存储,甚至目前还不需要 LLM。
以下是一篇 RAG 论文中的系统概述:

它假设了很多背景信息,比我们预设的简化版要复杂的多。
对于想要深入研究的人来说,这篇论文很有价值,但是对于我们想要入门的人来说,通过一步一步构建自己的 RAG 系统来学习才更适合。

最低0.47元/天 解锁文章
443

被折叠的 条评论
为什么被折叠?



