RAG(Retrieval Augmented Generation,检索增强生成)是一种利用大模型能力搭建知识库的技术。其主要应用场景是当需要依靠不包含在大模型训练集中的数据时。
一个RAG的应用可以抽象为以下5个过程:
简单来说,RAG就是大模型+知识库,从广泛的知识库数据中检索相关片段,然后由大模型根据这些内容生成答案。这种方式一方面可以减大模型的幻觉,提高其在特定任务上的表现,更加贴合实际应用的需求,另一方面可以明显提高搜索文档信息和生成回答的效率和体验。
LangChain是一个可以实现RAG的开源框架,它提供一些基础的组件和工具,如知识库管理、文本处理、模型加载等,允许开发人员将大语言模型(LLM)与外部数据源相结合,快速搭建自己的应用。
在实际项目中,比如此次的政府政策问答实践,由于政策的复杂性和传统智能问答产品的局限性,选择LangChain-Chatchat框架构建政策文档的本地知识库,实现大模型基于本地知识库内容生成回答,为用户提供政策问答和解读服务,节省查找和理解政策的时间。
因为利用大模型的能力搭建知识库本身就是一个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]文本加载器就是将用户提供的文本加载到内存中,便于进行后续的处理
为了方便理解后面的内容,这里先对LangChain-Chatchat框架和实现原理做一个简单的介绍。由于本文非技术向梳理,详细介绍就不展开,感兴趣可参考:https://www.langchain.com.cn/[heading3]1、名词解释[content]RAG:即Retrieval-Augmented Generation,搜索增强生成,简单来说就是大模型+知识库,从广泛的知识库数据中检索相关片段,然后由大模型根据这些内容生成答案。这种方式,一方面可以减大模型的幻觉,提高其在特定任务上的表现,更加贴合实际应用的需求,另一方面可以明显提高搜索文档信息和生成回答的效率和体验,因此称为搜索增强生成。LangChain:是一个可以实现RAG的开源框架,它提供一些基础的组件和工具,如知识库管理、文本处理、模型加载等,允许开发人员将大语言模型(LLM)与外部数据源相结合,快速搭建自己的应用。LangChain-Chatchat:原Langchain-ChatGLM,是在LangChain基础上构建的一个具体应用,使用了LangChain的组件和工具,并结合了其他一些技术和库(如FastAPI、Streamlit等),来构建基于LLM的本地知识库问答系统,其目标是建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
此次实践做的是政府政策问答。对政策面向对象而言,从最开始的判断自身可申报的政策、找到政策原文、到解读政策、准备材料进行申报等各个节点,都存在一定的困难。因此,市面上也有许多提供政策咨询和申报服务的中介机构。由于政策之间关系复杂、政策条文拆解门槛高、政策语义理解难度大、用户面向政策咨询的问法多等多种原因,传统的智能问答产品很难实现政府政策的智能问答。而大模型能学习大量文本数据、能捕捉和理解问题的上下文,具有超强的泛化和生成自然语言的能力。同时区别于传统的智能问答系统,大模型通过预训练和微调的方式,减少了对人工标注数据的需求,这也大大增加了落地应用的可行性。大模型的出现,似乎为政策问答带来了新的曙光。因此,我们选择LangChain-Chatchat框架,构建政策文档的本地知识库,实现大模型基于本地知识库内容生成回答,为用户提供政策问答和解读服务,节省查找和理解政策的时间。