RAG
標籤「RAG」底下的 46 篇文章。
RAG 學習筆記
從「為什麼需要 RAG」到「怎麼評估和改進」,一章一章整理我學 RAG 的筆記。
第 1 章:檢索增強生成簡介
先搞懂 RAG 要解決什麼問題、它怎麼運作,以及它跟微調差在哪。
1.1 標準大型語言模型的限制
LLM 能生成流暢文字,但仍有知識截止、幻覺、專業知識不足與來源難以追溯等問題。
1.2 什麼是檢索增強生成(RAG)?
RAG 的定義,以及一次問答從頭到尾經過哪三個步驟。
1.3 RAG 系統的核心架構
一個 RAG 系統由檢索器和生成器組成,再加上事先準備好的知識庫。
1.4 RAG 對比微調:理解其差異
兩種都能讓模型更適合你的用途,但解決的是不同的問題。
1.5 使用 RAG 的優勢
RAG 好在哪裡,以及它不是萬靈丹的地方。
第 2 章:檢索組件
文字怎麼變成向量、怎麼找出意思最接近的內容,以及向量要存在哪裡。
2.1 檢索器在 RAG 中的作用
檢索器負責把「最有用的幾段資料」交給模型,它找得準不準,決定了整個 RAG 的上限。
2.2 向量嵌入簡介
嵌入(embedding)把一段文字變成一串數字,讓電腦可以比較意思像不像。
2.3 常用嵌入模型
嵌入模型有雲端 API 和開源模型兩大類,選的時候要看語言、成本和部署方式。
2.4 相似度搜尋:找出相關向量
兩個向量有多像、怎麼量,以及資料很多時怎麼快速找到最接近的那幾個。
2.5 向量資料庫簡介
專門用來存向量、並且能快速找出最接近的那幾個的資料庫。
2.6 選擇向量資料庫:考量因素
沒有最好的向量資料庫,只有適合你的規模、預算和團隊的那一個。
2.7 實踐:生成文字嵌入
用一小段 Python,把句子轉成向量,並且實際算出哪些句子意思相近。
第 3 章:準備檢索所需資料
把 PDF、網頁、文字檔,處理成檢索器找得到、找得準的一小塊一小塊資料。
3.1 從不同來源載入文件
知識庫的資料有各種格式,第一步是把它們都讀成乾淨的純文字,並且記得它是從哪來的。
3.2 文件分塊的必要性
為什麼不能把整份文件當成一筆資料,以及塊的大小怎麼取捨。
3.3 固定大小分塊策略
最簡單的切法:每隔固定的字數切一刀,相鄰的塊再重疊一點。
3.4 內容感知的分塊方法
順著文件本來的結構來切,讓每一塊都是一個完整的意思。
3.5 資料塊的元資料(metadata)關聯
每一塊除了內容,還要記得它從哪來、屬於什麼,後面的過濾、引用、權限都靠它。
3.6 將處理後的資料儲存到向量資料庫
把每一塊的向量、原文和 metadata 一起存進去,以及資料更新時怎麼處理。
3.7 動手實踐:文件分塊
用純 Python 實作三種分塊方法,並用同一份文件比較它們切出來的結果。
第 4 章:生成模組與增強
檢索到資料之後,怎麼組成提示詞交給 LLM,並且讓答案有根據、標得出處。
4.1 生成器(LLM)在 RAG 中的作用
在 RAG 裡,LLM 的工作從「憑記憶回答」變成「根據資料整理出答案」。
4.2 RAG 提示詞的結構化
一份好的 RAG 提示詞有固定的結構:指示、參考資料、問題。
4.3 上下文注入方法
把檢索到的資料放進提示詞,看起來只是貼上去,但放法和順序都有差。
4.4 管理上下文長度限制
模型一次能讀的長度有限,資料放不下的時候該怎麼取捨。
4.5 生成最終回覆
提示詞交給模型之後,怎麼控制輸出、讓答案穩定,以及拿到答案之後的處理。
4.6 生成內容中的來源歸屬
讓答案說明它是根據哪段資料,使用者才能查證,也才有辦法信任。
第 5 章:建立基本 RAG 流程
把前四章學的東西接起來,做出一個從文件到答案、真的能跑的 RAG 系統。
5.1 RAG 框架概述(LangChain、LlamaIndex)
框架把載入、分塊、檢索、生成這些常用零件包好,但要不要用、什麼時候用,值得想一下。
5.2 開發環境設定
準備 Python 環境、安裝套件,以及怎麼安全地處理 API 金鑰。
5.3 實現檢索器
建立索引,並寫一個 retrieve 函式:問題進去,最相關的幾段資料出來。
5.4 實現生成器整合
組好提示詞,接上 LLM,並處理沒有金鑰、呼叫失敗這些實際情況。
5.5 結合檢索與生成
把 retrieve、build_prompt、generate 串成一個 ask 函式,並處理「找不到資料」的情況。
5.6 在流程中執行查詢
實際丟幾個問題進去,觀察每一步發生了什麼,以及門檻值調整的過程。
5.7 動手實踐:端到端 RAG 系統
一個約一百行的完整 RAG 程式,從文件到答案,可以直接複製執行。
第 6 章:RAG 系統的評估與改進
系統搭起來之後,怎麼知道它好不好、哪裡壞了,以及怎麼一步步改進。
6.1 評估 RAG 的挑戰
為什麼「感覺不錯」不夠,以及 RAG 的評估難在哪裡。
6.2 組件層面的評估:檢索
用 Hit Rate、MRR 等指標,衡量檢索器有沒有把對的資料找出來。
6.3 組件級別評估:生成
檢索找對了,模型有沒有照著資料回答、回答得切不切題。
6.4 端到端 RAG 評估框架
把檢索、生成放在一起看,建立一個可以重複執行的評估流程。
6.5 常見故障模式
RAG 常見的出錯方式,依流程的順序整理,以及怎麼判斷問題出在哪裡。
6.6 改進的基本策略
從資料、檢索、提示詞各個環節,整理可以嘗試的改進方向,以及怎麼驗證有沒有用。
6.7 實踐:分析 RAG 輸出品質
用一份小測試集,實際計算檢索的 Hit Rate 和 MRR,並分析「找不到」門檻的取捨。