RAG 分为离线数据处理和在线检索两个过程。离线数据处理旨在构建知识库,就像准备一本“活字典”,知识会按特定格式和排列方式存储在其中以待使用。在线检索则是利用知识库和大模型进行查询的过程。
LangChain 是专注于大模型应用开发的平台,提供一系列组件和工具帮助构建 RAG 应用,包括:
使用 LangChain 构建 RAG 应用的一般流程如下:(具体流程未给出)
旁白:一路千辛万苦,终于要真正了解RAG的全貌了,好激动前面的开胃菜已经完毕,这里我们进入正餐,先上一张图注:这张图引用自:https://mp.weixin.qq.com/s/37tKVQbxenVVBAeMZ334aQ公众号:AI花果山一位RAG大佬,正在编写一系列教程《RAG高效应用指南》这张图将会是我们本章的知识地图,看到这么多的概念,不要慌,我们先整体理解下RAG。自顶向下,RAG的流程分为离线数据处理和在线检索两个过程。我们前面讲到,知识库是RAG的“活字典”,可以让AI随时进行查阅。而离线数据处理的目的就是为了构建出这本“活字典”。经过离线数据后,知识则会按照某种格式以及排列方式存储在知识库中,等待被使用。而在线检索则是我们使用利用知识库+大模型进行查询的过程。在学习一门新知识的时候,是什么与为什么同等重要是什么让你知其然为什么让你知其所以然接下来我们就以RAG最经典的应用场景《构建智能问答客服》来了解RAG所有流程中的What与Why
[title]开发:LangChain应用开发指南-大模型的知识外挂RAG[heading3]LangChain和RAG的结合LangChain是一个专注于大模型应用开发的平台,它提供了一系列的组件和工具,帮助你轻松地构建RAG应用。LangChain提供了以下的组件来帮助你构建RAG应用:数据加载器(DocumentLoader):数据加载器是一个对象,可以从一个数据源加载数据,并将其转换为文档(Document)对象。一个文档对象包含两个属性:page_content(str)和metadata(dict)。page_content是文档的文本内容,metadata是文档的元数据,例如标题、作者、日期等。文本分割器(DocumentSplitter):文本分割器是一个对象,可以将一个文档对象分割成多个较小的文档对象。这样做的目的是为了方便后续的检索和生成,因为大模型的输入窗口是有限的,而且在较短的文本中更容易找到相关的信息。文本嵌入器(Embeddings):文本嵌入器是一个对象,可以将文本转换为嵌入(Embedding),即一个高维的向量。文本嵌入可以用来衡量文本之间的相似度,从而实现检索的功能。向量存储器(VectorStore()):向量存储器是一个对象,可以存储和查询嵌入。向量存储器通常使用一些索引技术,例如Faiss()或Annoy,来加速嵌入的检索。检索器(Retriever):检索器是一个对象,可以根据一个文本查询返回相关的文档对象。检索器的一种常见实现是向量存储器检索器(VectorStoreRetriever),它使用向量存储器的相似度搜索功能来实现检索。聊天模型(ChatModel):聊天模型是一个对象,可以根据一个输入序列生成一个输出消息。聊天模型通常基于大模型,例如GPT-3,来实现文本生成的功能。使用LangChain构建RAG应用的一般流程如下:
[title]开发:LangChain应用开发指南-大模型的知识外挂RAG[heading2]LangChain和RAG的结合LangChain是一个专注于大模型应用开发的平台,它提供了一系列的组件和工具,帮助你轻松地构建RAG应用。LangChain提供了以下的组件来帮助你构建RAG应用:数据加载器(DocumentLoader):数据加载器是一个对象,可以从一个数据源加载数据,并将其转换为文档(Document)对象。一个文档对象包含两个属性:page_content(str)和metadata(dict)。page_content是文档的文本内容,metadata是文档的元数据,例如标题、作者、日期等。文本分割器(DocumentSplitter):文本分割器是一个对象,可以将一个文档对象分割成多个较小的文档对象。这样做的目的是为了方便后续的检索和生成,因为大模型的输入窗口是有限的,而且在较短的文本中更容易找到相关的信息。文本嵌入器(Embeddings):文本嵌入器是一个对象,可以将文本转换为嵌入(Embedding),即一个高维的向量。文本嵌入可以用来衡量文本之间的相似度,从而实现检索的功能。向量存储器(VectorStore):向量存储器是一个对象,可以存储和查询嵌入。向量存储器通常使用一些索引技术,例如Faiss或Annoy,来加速嵌入的检索。检索器(Retriever):检索器是一个对象,可以根据一个文本查询返回相关的文档对象。检索器的一种常见实现是向量存储器检索器(VectorStoreRetriever),它使用向量存储器的相似度搜索功能来实现检索。聊天模型(ChatModel):聊天模型是一个对象,可以根据一个输入序列生成一个输出消息。聊天模型通常基于大模型,例如GPT-3,来实现文本生成的功能。使用LangChain构建RAG应用的一般流程如下: