檢索增強生成 RAG 101

在快速發展的人工智慧領域中,檢索增強生成 (Retrieval-Augmented Generation, RAG) 已成為一項提升大型語言模型 (LLM)能力的關鍵技術。RAG 的核心在於解決了 LLM 的一個根本限制:它們的知識被凍結在最後一次訓練的時間點。RAG 透過在提示過程中動態注入相關的外部資訊來規避這個問題。這是透過向量化 (vectorization) 和上下文整合 (context integration) 的複雜相互作用來實現的,最終為 LLM 提供必要的資料,以生成更準確、及時且符合上下文的回應。
RAG 的神奇之處在於它能夠將您的原始查詢與從知識庫中獲取的資訊無縫地融合在一起。這個過程可以分為兩個關鍵階段:檢索 (retrieval) 和生成 (generation)。
檢索階段:將提示向量化以進行精準搜索
與一個常見的誤解相反,在 RAG 架構中,您的原始文本提示並不會直接被送到 LLM。相反地,它會先進行一個至關重要的第一步:向量化。
您的提示或查詢會被轉換成一種稱為「向量嵌入」(vector embedding) 的數值表示。這是透過一個能夠捕捉您文字背後語義和意圖的嵌入模型 (embedding model) 來完成的。這個向量就像一個複雜的搜索查詢,使 RAG 系統能夠在一個預先索引好的向量資料庫中進行篩選。
這個向量資料庫包含了來自您指定知識來源(例如,公司文件、網站內容或一組精選文章)的資訊片段。這些片段中的每一個也都已經被預先向量化。透過比較您的提示向量與資料庫中的向量,系統可以識別並檢索出語義上最相似和最相關的資訊片段。這個過程類似於一個高度智能的搜尋引擎,它能理解您查詢的「意義」,而不僅僅是關鍵字。
生成階段:為 LLM 精心打造最終提示
一旦檢索到最相關的資訊片段,RAG 系統的下一個任務就是巧妙地將它們與您的原始提示結合起來。這個新形成的、經過增強的提示,接著會被送到 LLM 進行處理。
結合的方法會根據具體的實作方式和 RAG 設置的複雜性而有所不同。在一種常見的方法中,即所謂的「樸素 RAG」(Naive RAG),檢索到的文件會與您的原始提示串接在一起,通常會使用清晰的分隔符來區分用戶的查詢和提供的上下文。
更先進的 RAG 實作,有時被稱為「進階 RAG」(Advanced RAG) 或「模組化 RAG」(Modular RAG),可能會採用更複雜的技術。這些技術可以包括:
- 提示模板 (Prompt Templating): 使用預先定義的結構來組織原始提示和檢索到的上下文,使其達到 LLM 最容易理解和利用的最佳狀態。
- 摘要或提取 (Summarization or Extraction): 系統可能會先將檢索到的文件進行摘要或提取出最顯著的要點,然後再將它們整合到提示中。這有助於管理 LLM 的上下文視窗 (context window) 並更簡潔地呈現資訊。
- 重新排序 (Re-ranking): 在初步檢索之後,可能會使用一個重新排序模型來進一步優化檢索文件的順序,將最相關的文件放在提供給 LLM 的上下文的最前面。
最終,目標是為 LLM 提供一個豐富的、情境化的輸入,其中既包含您的直接問題,也包含回答該問題所需的背景資訊。LLM 接著會利用這個增強後的提示來生成其最終回應,並參考新提供的知識。
從本質上講,RAG 就像一座強大的橋樑,連接了 LLM 的靜態知識和外部資訊的動態世界。透過將您的提示向量化以找到正確的資料,然後再將這些資料智慧地融入發送給 LLM 的提示中,RAG 解鎖了更高層次的性能,使 AI 互動更具事實性、相關性和實用性。
Embedding Model 與普通的 LLM 的分別
角色 | Embedding Model (嵌入模型) | 一般 LLM (大型語言模型) |
比喻 | 圖書館的「首席編目員」 | 知識淵博的「首席科學家」 |
主要工作 | 閱讀每一本書 深刻理解其內容、 主題與語氣, 然後為其分配一個 獨一無二且精確的書架編號(向量) | 接收一個研究問題 (提示),幫你 找來幾本相關書籍 (檢索到的文本),然後撰寫一篇全新的、 有條理的學術報告 (生成的答案) |
核心能力 | 將複雜的人類語言轉換成 機器可以 計算和比較的數學座標 | 根據被賦予的資料和自身 龐大的知識庫,進行推理、 總結、並創造出新的文字 |