RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。它旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。
具体来说:
LangChain 是一个用于构建高级语言模型应用程序的框架,它和 RAG 的关系在于:RAG 是一种结合了检索(检索外部知识库中相关信息)和生成(利用 LLM 生成文本)的技术,能够为 LLM 提供来自外部知识源的附加信息,使得 LLM 在应对下游任务时能够生成更精确和上下文相关的答案,并减少 LLM 的幻觉现象。而 LangChain 的设计主张集中在模块化组件上,为使用 LLM 提供行为抽象和实现集合,允许开发人员构造新链或实现现成的链。
RAG(Retrieval-Augmented Generation),即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,它旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。简单来说,就是通过检索的模式,为大语言模型的生成提供帮助,从而使大模型生成的答案更符合要求。
因为利用大模型的能力搭建知识库本身就是一个RAG技术的应用。所以在进行本地知识库的搭建实操之前,我们需要先对RAG有一个大概的了解。以下内容会有些干,我会尽量用通俗易懂的描述进行讲解。我们都知道大模型的训练数据是有截止日期的,那当我们需要依靠不包含在大模型训练集中的数据时,我们该怎么做呢?实现这一点的主要方法就是通过检索增强生成RAG(Retrieval Augmented Generation)。在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程:文档加载(Document Loading):从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器,包括PDF在内的非结构化的数据、SQL在内的结构化的数据,以及Python、Java之类的代码等文本分割(Splitting):文本分割器把Documents切分为指定大小的块,我把它们称为“文档块”或者“文档片”存储(Storage):存储涉及到两个环节,分别是:将切分好的文档块进行嵌入(Embedding)转换成向量的形式将Embedding后的向量数据存储到向量数据库检索(Retrieval):一旦数据进入向量数据库,我们仍然需要将数据检索出来,我们会通过某种检索算法找到与输入问题相似的嵌入片
LangChain是一个用于构建高级语言模型应用程序的框架,它提供了一系列的工具和组件,使得开发人员能够更容易地使用大型语言模型(LLM)来创建各种应用程序。LangChain的设计主张集中在模块化组件上,这些组件提供用于使用LLM的行为抽象,并为每个抽象提供实现的集合,从而允许开发人员构造新链或实现现成的链。RAG,即检索增强生成(Retrieval-Augmented Generation),是一种结合了检索(检索外部知识库中相关信息)和生成(利用LLM生成文本)的技术。RAG能够为LLM提供来自外部知识源的附加信息,使得LLM在应对下游任务时能够生成更精确和上下文相关的答案,并减少LLM的幻觉现象。LangChain和RAG之间的关系可以概括为: