RAG(Retrieval Augmented Generation,检索增强生成)是一种利用大模型能力搭建知识库的技术。以下是关于 RAG 的详细介绍:
因为利用大模型的能力搭建知识库本身就是一个RAG技术的应用。所以在进行本地知识库的搭建实操之前,我们需要先对RAG有一个大概的了解。以下内容会有些干,我会尽量用通俗易懂的描述进行讲解。我们都知道大模型的训练数据是有截止日期的,那当我们需要依靠不包含在大模型训练集中的数据时,我们该怎么做呢?实现这一点的主要方法就是通过检索增强生成RAG(Retrieval Augmented Generation)。在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程:文档加载(Document Loading):从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器,包括PDF在内的非结构化的数据、SQL在内的结构化的数据,以及Python、Java之类的代码等文本分割(Splitting):文本分割器把Documents切分为指定大小的块,我把它们称为“文档块”或者“文档片”存储(Storage):存储涉及到两个环节,分别是:将切分好的文档块进行嵌入(Embedding)转换成向量的形式将Embedding后的向量数据存储到向量数据库检索(Retrieval):一旦数据进入向量数据库,我们仍然需要将数据检索出来,我们会通过某种检索算法找到与输入问题相似的嵌入片Output(输出):把问题以及检索出来的嵌入片一起提交给LLM,LLM会通过问题和检索出来的提示一起来生成更加合理的答案[heading2]文本加载器(Document Loaders)[content]文本加载器就是将用户提供的文本加载到内存中,便于进行后续的处理
开发:产品视角的大模型RAG应用[heading1]一文看懂RAG:大语言模型落地应用的未来[heading2]RAG中的核心组件RAG的核心组件分为三个部分检索(Retrieval)、增强(Augmentation)、生成(Generation),其分类结构如下图:[heading3]RAG中的检索(Retrieval)[content]检索是检索增强生成(RAG)框架的核心组件之一,它负责从外部数据源或知识库中获取与用户查询相关的信息。检索的质量和效率对于RAG系统的性能至关重要,因为它直接影响生成的文本或回答的准确性和相关性。以下是与检索相关的一些关键概念和技术:检索策略:RAG系统需要确定何时进行检索以及如何选择要检索的信息。检索策略可以根据任务和上下文进行调整,以提高系统的效率和性能。检索粒度:检索可以以不同的粒度进行,从单个标记或实体到更大的文本块或知识图。选择适当的检索粒度取决于任务的要求和数据的结构。检索方法:有多种检索方法可供选择,包括基于关键字的检索、实体检索、自然语言查询和知识图检索等。每种方法都有其适用的情境和优势。检索效率:高效的检索是关键因素之一,尤其是在实时应用中。优化检索过程以降低延迟和资源消耗是重要任务之一。外部数据源:RAG系统可以从各种外部数据源中进行检索,包括互联网上的文档、知识库、数据库和API。选择合适的数据源对于获取准确和丰富的信息至关重要。在RAG框架中,检索与生成和增强技术密切合作,以生成最终的文本或回答。因此,检索的质量和效率对于整个RAG系统的性能和效果至关重要。
旁白:在学习RAG之初,你不知道如何切入,这时候你认识了一个叫做大圣的老师。他说,你可以从AI搜索切入,帮助你理解RAGRAG的流程相对复杂,为了让大家更好的理解RAG,我们先用大家比较熟悉的AI搜索来引出RAG。AI大模型最擅长的是语义理解和文本总结,最不擅长的就是获取实时的信息。搜索引擎最擅长的就是获取实时的信息,但是缺点就是信息太分散了,每次都需要人为进行总结。AI+搜索引擎的结合,就是我们上面讲到的,给AI配备了一个活字典,让AI可以随时进行查阅。下图是一个简化版本的AI搜索工作原理,其中搜索引擎在这里就充当着知识库的角色。下面则是我用Coze制作的一个秘塔搜索机器人,感兴趣可以看下他的工作过程[20240828234529_rec_.mp4](https://bytedance.feishu.cn/space/api/box/stream/download/all/QsLabWiPzoXN6GxVqpmc4Z9Vntb?allow_redirect=1)OK,关于AI搜索我们就简单介绍到这里,下面我们正式开始介绍RAG