RAG(Retrieval Augmented Generation,检索增强生成)是一种利用大模型能力搭建知识库的技术。其主要应用场景是当需要依靠不包含在大模型训练集中的数据时。
一个RAG的应用可以抽象为以下5个过程:
1. 文档加载:从多种不同来源加载文档,如PDF、SQL、代码等,LangChain提供了100多种不同的文档加载器。
2. 文本分割:文本分割器把Documents切分为指定大小的块,称为“文档块”或者“文档片”。
3. 存储:包括将切分好的文档块进行嵌入转换成向量的形式,以及将Embedding后的向量数据存储到向量数据库。
4. 检索:通过某种检索算法找到与输入问题相似的嵌入片。
5. 输出:把问题以及检索出来的嵌入片一起提交给LLM,LLM会通过问题和检索出来的提示一起来生成更加合理的答案。
简单来说,RAG就是大模型+知识库,从广泛的知识库数据中检索相关片段,然后由大模型根据这些内容生成答案。这种方式一方面可以减大模型的幻觉,提高其在特定任务上的表现,更加贴合实际应用的需求,另一方面可以明显提高搜索文档信息和生成回答的效率和体验。
LangChain是一个可以实现RAG的开源框架,它提供一些基础的组件和工具,如知识库管理、文本处理、模型加载等,允许开发人员将大语言模型(LLM)与外部数据源相结合,快速搭建自己的应用。
在实际项目中,比如此次的政府政策问答实践,由于政策的复杂性和传统智能问答产品的局限性,选择LangChainChatchat框架构建政策文档的本地知识库,实现大模型基于本地知识库内容生成回答,为用户提供政策问答和解读服务,节省查找和理解政策的时间。
2025-03-11