RAG(检索增强生成)工作流搭建主要包括以下步骤:
RAG 是一种结合了检索和生成的技术,其基本流程为:首先,给定用户输入(如问题或话题),从数据源中检索出相关文本片段作为上下文。然后,将用户输入和检索到的上下文拼接成完整输入,并添加提示传递给大模型(如 GPT)。最后,从大模型的输出中提取或格式化所需信息返回给用户。
您还可以通过以下资源进一步学习 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]文本加载器就是将用户提供的文本加载到内存中,便于进行后续的处理
视频演示:[20240831233346_rec_.mp4](https://bytedance.feishu.cn/space/api/box/stream/download/all/JdVJb2UpCohFVkxEUxzcSLYbn6d?allow_redirect=1)Query改写效果对比Bot这个Bot用来对比Query改写和未改写的区别。使用之前秘塔搜索的案例,通过对Query进行改写和非改写,对比搜索结果来理解Query改写的优势Bot地址:https://www.coze.cn/store/bot/7400553639514800182?panel=1&bid=6dkplh1r43g15视频演示:[20240831234101_rec_.mp4](https://bytedance.feishu.cn/space/api/box/stream/download/all/T2d3bP5T0oTEvSx7jfocql9Xnw0?allow_redirect=1)RAG全流程学习Bot这个Bot我花费了很长的时间,通过结合对RAG全流程的了解,使用Coze的工作流,主要是结合大模型,模拟了RAG的离线存储和在线检索全流程PS:这个流程还是一个玩具,因为对于向量化这块我直接使用了提示词和大模型,这是非常不严谨的,理论上应该直接介入Embedding模型的API,这个后面我会考虑,这里只是给大家展示思路我们直接看视频[20240925235024_rec_.mp4](https://bytedance.feishu.cn/space/api/box/stream/download/all/Y8OcbANyto0UytxZha7c700XnWh?allow_redirect=1)
原创AI小智AI小智2023-12-11 08:10发表于湖北AI大模型能够处理广泛主题的文本生成,但模型知识只能基于它们训练时使用的公开数据。如果你想构建能够利用私有数据或实时数据进行推理的AI应用,你需要用特定的信息来增强模型的知识。将相关信息检索并插入到模型的输入中,即检索增强生成(Retrieval Augmented Generation,RAG)。在本文中,我们将介绍如何使用LangChain开发一个简单的RAG问答应用。我们将依次介绍典型的问答架构,讨论相关的LangChain组件,并展示如何跟踪和理解我们的应用。[heading3]RAG的基本概念[content]RAG是一种结合了检索和生成的技术,它可以让大模型在生成文本时利用额外的数据源,从而提高生成的质量和准确性。RAG的基本流程如下:首先,给定一个用户的输入,例如一个问题或一个话题,RAG会从一个数据源中检索出与之相关的文本片段,例如网页、文档或数据库记录。这些文本片段称为上下文(context)。然后,RAG会将用户的输入和检索到的上下文拼接成一个完整的输入,传递给一个大模型,例如GPT。这个输入通常会包含一些提示(prompt),指导模型如何生成期望的输出,例如一个答案或一个摘要。最后,RAG会从大模型的输出中提取或格式化所需的信息,返回给用户。