- 大模型RAG實戰:RAG原理、應用與系統構建
- 汪鵬 谷清水 卞龍鵬
- 1261字
- 2024-10-29 18:53:27
Preface 前言
為什么要寫這本書
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月
- Google Flutter Mobile Development Quick Start Guide
- 企業級Java EE架構設計精深實踐
- JIRA 7 Administration Cookbook(Second Edition)
- Hands-On C++ Game Animation Programming
- Windows Server 2012 Unified Remote Access Planning and Deployment
- PySide GUI Application Development(Second Edition)
- Spring快速入門
- ServiceNow:Building Powerful Workflows
- Python機器學習之金融風險管理
- Django 3.0入門與實踐
- Troubleshooting Citrix XenApp?
- Windows Phone 8 Game Development
- Java高級程序設計
- Mastering Unreal Engine 4.X
- Java 7 Concurrency Cookbook