更新於 2024/12/07閱讀時間約 3 分鐘

RAG(Retrieval-Augmented Generation,檢索增強生成)

前言

RAG(Retrieval-Augmented Generation,檢索增強生成)是一種提高生成式AI回答精確度的方法,本文簡要總結了RAG的相關內容。


什麼是RAG?

RAG是一種將外部資訊檢索與大型語言模型的文字生成相結合來提高大型語言模型答案精確度的技術。因為RAG使用外部資訊來產生答案,所以不需要為了提供新資訊給大語言模型而再一次進行學習,也不存在機密資訊被用於學習的風險。


RAG的應用實例

使用RAG可以簡化公司內部手冊等文件的檢索。因為公司內部手冊可能涉及機密資訊,不宜將其內容用於語言模型學習。使用RAG可以在不學習這些內容的情況下將其用於回答內容。另一方面即使內容不涉及機密資訊,也可以實現簡化。例如,查詢服務手冊或客戶支援。通常用戶需要查閱提供的手冊,或在遇到不明白的地方聯繫客戶服務,使用RAG可以簡化這個過程。


RAG的系統圖

系統圖可以總結如下圖所示,並分成七個步驟:


1. 文件分塊

將較長的文字輸入分割成較小的單位(稱為「塊」或「chunk」)。這個步驟對RAG的性能有重大影響:不同的分塊函式庫(如LangChain、Llama Index、SimplerLLM)可能會產生不同的分塊結果。另外分塊策略(如分割方式和長度)也會影響RAG的回答準確性。最近的研究正在探索最佳化分塊方法,以提高RAG的效能。

2. 向量化

將分割後的文本塊轉換為高維向量表示,這些向量通常有數千個維度。

通常使用預訓練的嵌入模型(如OpenAI或Amazon Titan Embeddings)來進行向量化。

3. 儲存向量

將向量化後的文本塊儲存在專門的向量資料庫中,常用的向量資料庫包括pgvector和Chroma DB。選擇向量資料庫時需考慮性能、相容性和特定使用場景的需求。

4. 查詢向量化

將用戶的查詢也轉換為向量表示。

5. 相似度搜索

在向量資料庫中搜索與查詢向量最相似的文本塊。

6. 組合輸入

將搜索到的相關文本塊與原始查詢組合,作為輸入傳遞給大型語言模型(如GPT-4、LLAMA、Gemini)。

7. 生成回答

大型語言模型根據提供的文字輸入生成最終回答。這個流程的每一步都對RAG系統的整體性能有重要影響。優化每個環節,特別是文件分塊和向量化步驟,可以大大提高RAG的效果。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.