LangChain学习之RAG

110 阅读3分钟

RAG(Retrieval-Augmented Generation)是一种结合了检索(Retrieval)和生成(Generation)的深度学习模型,它通过从大型知识库中检索相关信息来增强模型的生成能力。这种模型特别适合处理那些在训练数据中未出现的问题,因为它能够动态地从外部知识库中检索信息,以辅助生成更准确和全面的回答。

RAG的工作流程可以分为以下几个步骤:

  1. 文档加载:这是RAG流程的第一步,LangChain等平台提供了多种文档加载器,能够加载HTML、PDF、代码等多种类型的文档,并与Airbyte、Unstructured.IO等主要提供商集成,使得文档加载过程更加灵活和高效。

  2. 文本转换:在文档加载之后,接下来的步骤是文本转换。这一步骤中,最常见的操作是将长文档分割成更小的块,这些块可以是句子、段落或者是更小的文本单元,这样做的目的是为了适应模型的上下文窗口,使得模型能够更好地理解和处理文本。

  3. 文本分割器:在LangChain中,文本分割器的工作原理主要包括三个步骤:首先,将文本分割成具有语义意义的小单元;其次,开始将这些小单元组合成一个更大的块,直到达到一定的大小限制;最后,一旦达到该大小,就会形成一个块,并开始创建新的文本块,同时确保新旧块之间有一定的重叠,以保持上下文的连贯性。

  4. 文本嵌入:文本块形成之后,下一步是通过大型语言模型(LLM)进行文本嵌入,将文本转换为数值表示,这样计算机就可以更容易地处理和比较文本。

  5. 存储嵌入和缓存储存:将文本嵌入后,需要将这些嵌入向量存储起来。常见的存储方式是使用向量数据库,这种数据库专门设计用来存储和检索向量数据,从而实现高效的相似性搜索。

  6. 数据检索:在需要回答特定问题时,RAG会使用向量存储检索器来检索与查询文本“最相似”的嵌入向量。这种检索器通常支持向量检索,能够快速找到与查询最相关的信息。

image.png

总的来说,RAG通过将非结构化数据进行嵌入并存储生成的嵌入向量,然后在查询时对查询文本也进行嵌入,检索与嵌入查询最相似的嵌入向量,从而实现对非结构化数据的存储和搜索。这种方法不仅提高了检索的准确性,也增强了模型的生成能力,使其能够处理更加复杂和多样化的问题。RAG模型的成功应用展示了大型语言模型在实际问题解决中的潜力和实用性,为人工智能领域的发展提供了新的思路和工具。