OpenAI于2022年11月30日发布的ChatGPT几乎颠覆了现有的NLP范式,使NLP算法的日常工作和技术栈都发生了一定的改变。最受关注的两个落地方向分别为RAG(Retrieval-Augmented Generation,检索增强生成)和Agent。RAG的产品落地要先于Agent,且RAG的研究已经有多年了。RAG可以拆解成多个模块,如果将每个模块理解成一个小工具,那么RAG实际上是一个特定任务的Agent。因此,本书以RAG为主题。写作本书的时候,我还在金山办公软件有限公司任职,现成的文档、知识库业务促使我在2023年初就开始尝试大模型的落地。最先落地的应用就是基于金山知识库的RAG,后续推出了基于云文档的ChatFile,以及基于金山协作的搜索助手等,它们均是以RAG为核心的落地应用。
目前,虽然闭源的大模型上下文窗口已经可以将大部分的书籍、资料放入大模型的输入提示词中,但即使是一个小型企业,企业内的知识库文档量也是非常庞大的,我们不可能全部都放入大模型的提示词中。另外,大模型在无损推理时,为了保证推理效率,需要缓存每个时间步的KV,随着长度的增加,显存消耗是非常庞大的,所以单张推理卡的推理长度有限。因此,我们无须担心大模型的上下文窗口长度变长,RAG就没用了。随着大模型的上下文窗口的长度不断变长,对RAG的落地越来越友好,比如我们可以通过召回大量候选来提高系统的召回率,也可以通过提高切块的大小或者不切块来保证召回文本的完整性等。
本书比较全面地囊括了过去一年内大模型RAG系统的使用技巧和范式变迁。通过这本书,读者不仅能了解到RAG的基本原理,也能了解到RAG的各种进阶技巧,从而构建出一个可靠的RAG系统。
❍大模型应用落地者
❍RAG零基础人员
❍期望了解RAG高级技巧的人员
本书共8章,分为三大部分。
在第一部分(第1~3章)中,我们首先介绍了RAG的定义,为什么需要RAG,以及RAG的工作流程、优缺点以及使用场景。然后,我们介绍了Transformer、自动编码器和自回归模型等语言模型。最后,我们讨论了文本召回模型,涵盖文本召回模型基础、稠密向量检索模型、稀疏向量检索模型以及重排序模型等。
在第二部分(第4~6章)中,我们深入剖析了RAG的核心技术与优化方法,包括提示词工程、文本切块、向量数据库、召回环节优化、效果评估以及LLM能力优化等方面。此外,我们还介绍了RAG范式的演变,从基础RAG系统到先进RAG系统,再到大模型主导的RAG系统以及多模态RAG系统。最后,我们讨论了RAG系统的训练方法,包括独立训练、序贯训练和联合训练等。
在第三部分(第7章和第8章)中,我们首先以一个基于LangChain实现的RAG应用为例,详细介绍了如何搭建一个RAG系统。接着,我们通过案例展示了RAG系统在向量模型构建、大模型指令微调以及复杂问题处理等方面的实战应用。
本书由多个作者合作完成,其中第1、6、8章由汪鹏撰写,第2、5章由卞龙鹏撰写,第3、4、7章由谷清水撰写。
由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者发现了书中的错误或者遇到任何问题,可以提交到https://github.com/Nipi64310/RAG-Book.git,也欢迎发送邮件至邮箱by_nipi@163.com,或者私信至微信公众号“NLP前沿”,期待得到读者的真挚反馈。
谨以此书献给我最亲爱的家人,以及众多热爱AI的朋友们!
汪鹏
2024年4月