山东大学项目实训-基于LLM的中文法律文书生成系统(十二)- RAG(1)
RAG
检索增强生成(Retrieval Augmented Generation),简称 RAG。它通过从数据源中检索信息来辅助大语言模型(Large Language Model, LLM)生成答案。简而言之,RAG 结合了搜索技术和大语言模型的提示词功能,即向模型提出问题,并以搜索算法找到的信息作为背景上下文,这些查询和检索到的上下文信息都会被整合进发送给大语言模型的提示中。
举个例子,比如我作为员工,直接问大模型:
提问:『 我们公司几点下班?』
大模型在没有见过我们公司《员工手册》的情况下(事实上,企业私有数据一般不会被大模型的参数所覆盖),几乎回答不正确,RAG的能力在于能够让大模型结合私有数据,完成特定领域的知识问答。RAG把这类问题拆成两个步骤:
- 第一:基于用户的提问,到《员工手册》里找到最相关的N个内容片段;
- 第二:把用户提问和N个内容片段一起送到大模型中,获得答案。
上边这个例子“我们公司几点下班?”就变成:
提问:『 请参考员工手册,回答以下问题:我们公司几点下班?
员工手册内容如下:遵守上班时间不迟到、不早退......工作时间每周一至周五上午9:00到下午5:00......
』
大模型回复:
回复:『 下班时间是下午5点,是根据对工作时间每周一至周五上午9:00到下午5:00分析而来的。』
到了2023年,基于大语言模型的系统中,RAG 已成为最受欢迎的架构之一。许多产品几乎完全基于 RAG 构建,范围从结合了网络搜索引擎和大语言模型的问答服务,到数以百计的“与数据对话”的应用程序。
即使是向量搜索领域也受到了这一趋势的推动,尽管早在2019年就已经有基于 faiss2 构建的搜索引擎。像 chroma、weavaite.io 和 pinecone 这样的向量数据库初创公司是基于现有的开源搜索索引构建的,主要是 faiss 和 nmslib,它们最近还增加了对输入文本的额外存储和一些其他工具。
在基于大语言模型的管道和应用领域,两个最著名的开源库分别是LangChain和LlamaIndex,它们分别于2022年10月和11月成立,彼此相差一个月。这两个库的创建受到了ChatGPT发布的启发,并在2023年获得了广泛的采用。
一些模型的举例:
1、https://github.com/chatchat-space/Langchain-Chatchat

2、https://github.com/daodao97/chatdoc

启发
为什么会用到RAG,主要是看到了一个项目的实现:
ChatDOC - AI Chat with PDF Documents

但是这是付费的项目,github上开源的有一个叫chatchat的项目,不过也比较复杂,基于好奇我们对RAG产生了很浓厚的兴趣。
基础 RAG
基础 RAG 的操作流程大致如下:首先,你需要将文本切分成小段,然后利用某种 Transformer 编码器模型,将这些文本段转换成向量形式。接着,把所有向量汇集到一个索引里。最后,你需要为大语言模型(Large Language Model, LLM)制定一个提示词,这个提示词会指导模型根据我们在搜索步骤中找到的上下文信息来回答用户的查询。
在实际运行过程中,我们会用同一个编码器模型把用户的查询转换成向量,然后根据这个向量在索引中进行搜索。系统会找到最相关的前k个结果,从数据库中提取相应的文本段,然后把这些文本段作为上下文信息输入到大语言模型的提示词中。
1. RAG模型的基本原理
RAG模型是一种融合了传统信息检索和生成模型的强大技术。它的基本原理是将预训练的语言生成模型(如GPT)与大规模的知识库相结合,以提供更准确、丰富的生成结果。RAG模型通过将知识库中的相关信息作为输入,利用生成模型生成与查询相关的文本生成结果。这种结合能够有效地解决传统生成模型中常见的问题,如生成不准确、缺乏相关性等。
2. RAG模型的应用领域
RAG模型在多个领域中展现出了巨大的潜力。以下是一些RAG模型的应用示例:
a. 问答系统:RAG模型可以用于构建强大的问答系统,用户可以通过提问获取准确、详细的回答。RAG模型能够结合知识库中的信息,生成与问题相关的回答,提供更好的问答体验。
b. 文档摘要:RAG模型可以用于生成文档的摘要,将大量文本内容压缩成简洁、准确的摘要信息。这对于处理海量文本数据的任务非常有价值,能够提高信息的可读性和可理解性。
c. 对话系统:RAG模型可以用于构建智能对话系统,使得对话系统能够更好地理解用户输入,并生成与输入相关的自然语言响应。这种结合能够提供更加智能、人性化的对话体验。
RAG模型的潜在影响
RAG模型的出现对自然语言处理领域产生了深远的影响,并具有以下潜在影响:
a. 提高生成结果的质量:RAG模型通过结合信息检索和生成技术,能够生成更加准确、相关的文本结果。这将提高自然语言生成任务的质量,使得生成的文本更加符合用户需求。
b. 加强知识的利用:RAG模型能够有效地利用大规模知识库中的信息,为生成任务提供更多的背景知识和上下文信息。这将使得生成结果更加具有逻辑性和连贯性。
c. 推动多模态生成:RAG模型不仅可以结合文本信息,还可以扩展到多模态数据的生成,如图像描述生成、视频字幕生成等。这将为多模态生成任务带来新的突破和进展。
结论:
检索增强生成(RAG)模型的出现为自然语言处理领域带来了新的可能性。通过融合信息检索和生成技术,RAG模型能够生成更准确、相关的文本结果,并提供更好的自然语言理解和生成体验。未来,随着技术的不断发展,RAG模型有望在各个领域中发挥重要的作用,推动自然语言处理技术的进一步发展。我们可以期待看到RAG模型在问答系统、文档摘要、对话系统等领域的广泛应用,以及对多模态生成任务的扩展和提升。随着研究者和开发者对RAG模型的深入研究和改进,我们相信这项技术将为人们提供更加智能、高效的自然语言处理解决方案。
参考文献:
- Lewis, M., Liu, Y., Goyal, N., Ghazvininejad, M., Mohamed, A., Levy, O., & Zettlemoyer, L. (2020). Retrieval-augmented generation for knowledge-intensive nlp tasks. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics (pp. 241-252).
- Izacard, G., & Grave, E. (2020). Leveraging passage retrieval with generative models for open domain question answering. arXiv preprint arXiv:2007.15252.
- Ziegler, J., Braslavski, P., Chen, D., & Liang, P. (2020). End-to-end open-domain question answering with BERTserini. arXiv preprint arXiv:2002.08909.

浙公网安备 33010602011771号