模型 / 資料集
NirDiamant/RAG_Techniques avatar
NirDiamant/RAG_Techniques

RAG_Techniques:42 本筆記本當教材,不是拿來部署的框架

This repository showcases various advanced techniques for Retrieval-Augmented Generation (RAG) systems. Each technique has a detailed notebook tutorial.

29,490 個 Star3,611 個 ForkJupyter NotebookNOASSERTION

秒懂

它是什麼?
這個倉庫把 RAG 的各種檢索與生成技巧拆成可執行的 Jupyter Notebook,適合用來理解機制、比較做法;它本身不是套件,沒有安裝指令,也沒有 API 可以 import。
適合誰用?
這個倉庫適合已經寫過基本 RAG 流程、想弄懂 reranking、contextual retrieval 這類技巧實際怎麼運作的工程師,也適合在選型會議前需要一份可執行參考的人。不適合的情況同樣明確:如果你要的是能 pin 版本、能寫進 requirements.txt 的檢索層,這裡沒有 wheel、沒有 setup.py、沒有安裝指令,貼進生產程式碼只會得到散落的片段。
可以商用嗎?
請先確認。這個儲存庫使用的授權不在我們自動分類的範圍內,商用前請閱讀儲存庫中的 LICENSE 檔案。
還在維護嗎?
有在維護。儲存庫在最近一天內有新的提交。
用什麼語言寫的?
主要是 Jupyter Notebook(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它解決的是「看不懂論文,也找不到可跑範例」這個問題

RAG 的困難很少在於「把文件切塊、丟進向量庫、檢索前 k 筆」這條主幹。真正卡住人的是主幹之外的東西:檢索回來的段落順序錯了怎麼辦、查詢本身寫得太短怎麼辦、文件切法把一句話切成兩半怎麼辦。這些問題在論文裡有名字,在部落格裡有結論,但很少有一份可以直接按下去執行的程式碼。

這個倉庫針對的就是這個缺口。README 的開頭寫得很直白,它是一個社群驅動的集合,收錄「42+ runnable notebooks」,涵蓋從基礎到前沿的 RAG 技巧,並強調三個部分:直覺、程式碼、參考文獻。目標讀者是已經知道 RAG 是什麼、但還沒把每一種變體親手跑過一遍的工程師,以及在評估檢索方案、需要具體對照材料的技術決策者。

它不是給非技術背景的人看的入門教材,也不是給已經有成熟檢索平台、只想找現成元件的團隊用的。倉庫的定位從頭到尾都是教學材料,這件事決定了後面所有的取捨。

每個技巧一本筆記本,資料流寫在程式碼裡而不是架構圖裡

倉庫的組織單位是筆記本,不是模組。README 說明每種技巧都有對應的 notebook 教學,主題標籤涵蓋 agentic-rag、embeddings、langchain、llama-index、vector-database、semantic-search 等。這意味著你看到的不是一個被抽象化的檢索框架,而是每個技巧各自完整的流程:載入文件、切塊、產生 embedding、寫入索引、檢索、重排、組裝 prompt、呼叫模型。

這種做法的好處是資料流完全攤開。想看 reranking 怎麼運作,就在同一本筆記本裡看到檢索結果被送進重排模型再回到 prompt 的順序;想看查詢改寫,就看到原始查詢被改寫成多個變體、各自檢索、再合併的過程。代價是重複。同一段文件載入與索引建立的程式碼,會在許多筆記本裡各出現一次,因為每本都要能獨立執行。

倉庫的語言組成是 Jupyter Notebook,這點在評估時值得留意。筆記本適合展示與實驗,不適合版本控制下的程式碼審查:diff 難以閱讀,輸出儲存格會混進版控,同一段邏輯散在數十個 .ipynb 裡也無法用一般方式重構。把它當成可執行的說明文件來讀,比當成程式庫來用更貼近它的設計。

取得方式:clone 之後在 Jupyter 裡逐本執行,沒有安裝指令

README 沒有提供 pip install 或 npm 之類的安裝步驟,也沒有列出依賴清單。取得方式就是取得倉庫本身,然後在能執行 Jupyter Notebook 的環境裡打開想看的檔案。依賴項目寫在各筆記本內部的 import 與安裝儲存格裡,因此不同筆記本之間的依賴並不一致,這也是逐本執行的原因之一。

README 中唯一出現的安裝相關指令是課程的推廣內容,描述為「One npm install adds the module's AI assistant to your Claude Code」,那是作者另一項付費課程的免費模組,用來把 AI 助理加進 Claude Code 引導你跟著教學操作,與這個倉庫的筆記本本身無關。把這兩件事分清楚很重要,否則會以為倉庫需要 npm 環境。

執行筆記本時需要自備的通常是模型供應商的 API 金鑰與向量資料庫連線資訊,因為主題涵蓋 OpenAI 與各類 vector-database。這些憑證不會隨倉庫提供,實際的環境變數名稱與設定方式要看各筆記本開頭怎麼寫。倉庫本身沒有集中的 config 檔,也沒有統一的設定鍵可以列出。

授權狀態是 NOASSERTION,這是採用前必須自己確認的一項

GitHub 對這個倉庫的授權標示是 NOASSERTION,意思是平台無法從倉庫內容自動判定出標準授權條款。這不代表沒有授權,也不代表授權有問題,只代表無法從現有資料判斷。要採用其中任何一段程式碼之前,得自己去看 LICENSE 檔案的實際文字。

這在教學型倉庫裡不算罕見,但對工程團隊來說是一個具體的作業項目。如果只是自己讀、自己跑,影響有限;如果要把某段檢索邏輯抄進公司產品,授權條款就必須先釐清。同樣需要留意的是筆記本內引用的第三方套件與模型服務,它們各自有自己的授權與使用條款,倉庫的授權狀態不涵蓋那些部分。這裡不提供法律意見,只指出這是採用流程中不能跳過的一步。

教學倉庫的維護節奏:更新跟著生態走,不跟著版本號走

倉庫仍在維護,預設分支是 main,最後一次推送時間是 2026 年 9 月。近期發布紀錄中有一項 book-v1.0,標題為「RAG Made Simple: Visual Companion Book」,日期是 2026 年 4 月,這是一本視覺化伴讀書,與筆記本內容互相搭配。

這種維護模式的成本結構和一般程式庫不同。程式庫的升級成本出現在依賴版本變動時,你更新版本號、跑測試、修 breaking change。教學倉庫的維護成本出現在生態變動時:某個向量資料庫改了 API、某個模型供應商下架了舊模型、某個框架重寫了檢索介面,對應的筆記本就會失效。失效的表現是執行到一半報錯,而不是版本衝突訊息。

對使用者的實際影響是:不要假設所有筆記本在任何時間點都能順利跑完。挑選你要的那一本,先確認它的依賴與你環境的差距,再決定要花多少力氣讓它跑起來。倉庫沒有提供相容性矩陣,這件事只能自己確認。

什麼時候該改用 LangChain 或 LlamaIndex 這類框架

倉庫的標籤裡同時出現 langchain 與 llama-index,表示部分筆記本是以這兩個框架實作技巧。這帶出一個直接的替代關係:如果你的目標是把檢索流程放進產品,而不是理解它,那麼直接用 LangChain 或 LlamaIndex 會比從筆記本拼裝更合理。

差異在抽象層的位置。這個倉庫把每個技巧的完整流程攤平在筆記本裡,你能看到每一步,但沒有可重用的介面。LangChain 與 LlamaIndex 則提供 retriever、index、chain 這類抽象,代價是細節被包在框架內,要改動就得順著框架的擴充點走。前者適合學習與驗證想法,後者適合組裝與長期維護。

實務上常見的組合是:先在這裡找到對應技巧的筆記本,理解它的資料流與參數,再用框架的對應元件重新實作一次。這樣做的好處是你知道框架在你背後做了什麼,出問題時知道往哪裡看。純粹照抄筆記本進生產環境,通常會在需要調整的那一天付出代價。

誰該用、誰不該用,以及動手前先確認什麼

適合的對象是想建立 RAG 技巧直覺的工程師。你已經跑過基本的檢索流程,知道 embedding 與向量相似度是什麼,現在想弄懂為什麼檢索結果需要重排、查詢需要改寫、文件切法會影響答案品質。這個倉庫把這些技巧各自寫成可執行的流程,讓你能改參數、看輸出、比對差異,這比讀論文摘要具體得多。

不適合的對象是想找現成檢索層的團隊。倉庫沒有套件、沒有安裝指令、沒有穩定的 API 介面,依賴散在各筆記本裡,授權狀態標示為 NOASSERTION。把它的程式碼貼進產品,得到的是沒有測試、沒有版本約束、沒有升級路徑的片段。

動手前先確認三件事:LICENSE 檔案的實際文字、你要跑的那一本筆記本所使用的向量資料庫與模型供應商是否與現行堆疊一致、以及該筆記本的依賴版本。這三項確認完,再決定是要照著跑一遍,還是只讀它的資料流設計。倉庫的價值在於把技巧講清楚,不在於提供可以直接部署的程式碼,這個邊界認清了,用起來就不會失望。

編輯結論

這個倉庫適合已經寫過基本 RAG 流程、想弄懂 reranking、contextual retrieval 這類技巧實際怎麼運作的工程師,也適合在選型會議前需要一份可執行參考的人。不適合的情況同樣明確:如果你要的是能 pin 版本、能寫進 requirements.txt 的檢索層,這裡沒有 wheel、沒有 setup.py、沒有安裝指令,貼進生產程式碼只會得到散落的片段。動手前先確認三件事:LICENSE 檔案的實際內容(GitHub 標示為 NOASSERTION,無法從現有資料判斷授權條款)、筆記本內使用的向量資料庫與模型供應商是否與你現行堆疊一致、以及你打算引用的那一本筆記本所依賴的套件版本。這三項沒確認完,先不要把它當成技術決策的依據。

官方來源

  1. Issues
  2. NirDiamant/RAG_Techniques on GitHub
  3. Project website
  4. README
  5. Releases
社群筆記

社群筆記