# CM979B 10/03 Wiki 與 RAG 實作包

這是〈文獻知識庫的兩條路：Wiki 化與 RAG〉講義的可發布包，內含講義用到的程式、提示詞與範本。可以整包下載 zip，也可以從講義上的連結個別開啟。

## 內容與用途

| 檔案或資料夾 | 用途 | 講義對應章節 |
|---|---|---|
| `cm979-rag-notebook-20261003.ipynb` | 在 Colab 從頭跑一次 RAG 的筆記本 | 第 4 節 |
| `kmdb_rag.py` | 筆記本裡用到的 RAG 程式：讀檔、前處理、七種切分、BM25／向量／RRF、評估、提示詞 | 第 3–5 節 |
| `eval_questions.json` | 完整實驗的 20 道評估題，每題標註答案所在的書與 PDF 頁碼 | 第 5 節 |
| `prompts/A-search-program.md` | One-shot 提示詞 A：寫出檢索程式並驗證 | 第 6、7 節 |
| `prompts/B-database-frontend.md` | 提示詞 B：升級成 RAG 資料庫＋Streamlit 網頁前端 | 第 6 節 |
| `prompts/C-mcp-tool.md` | 提示詞 C：包成 MCP 工具，讓 Claude Code 與 Codex 直接查 | 第 6 節 |
| `prompts/D-wiki-ingest.md` | 匯入提示詞：請 AI 依規則把一本書匯入 Wiki | 第 8 節 |
| `prompts/E-wiki-query.md` | 查詢提示詞：請 AI 先讀索引再回答，並把答案存回 Wiki | 第 8 節 |
| `templates/AGENTS.md` | 寫程式專案的規則檔，Codex 會自動讀取 | 第 7 節 |
| `templates/CLAUDE.md` | 讓 Claude Code 也讀同一份 AGENTS.md | 第 7 節 |
| `wiki-starter/` | 空白 Wiki 骨架（各資料夾內的 README.txt 說明用途）：維護規則、索引、紀錄、資料夾與工具程式；整個資料夾可直接用 Obsidian 開成 vault | 第 8 節 |
| `wiki-examples/` | 一張書目頁與一張概念頁的完成範例，用來對照格式 | 第 2、8 節 |

## 練習資料（Google Drive）

書稿與課程示範放在 Google Drive，可以直接檢視與下載。在 Drive 對資料夾按右鍵選「下載」，會打包成 zip；整個資料夾約 150 MB，建議只下載需要的幾本書。

- [KMDB 練習資料夾](https://drive.google.com/drive/folders/1xrR7imeEtNgxofx5EBytHBFfHVyg2Kzu?usp=sharing)：226 本書的清理稿與知識萃取、書目檔、處理紀錄、課程示範
- [books/](https://drive.google.com/drive/folders/13bn-wQZOVbva6v8MoGCtJUCUnLznw9xq?usp=sharing)：每本書一個資料夾，內有 `cleaned_*.md` 與 `knowledge_extraction_*.md`
- [00_課程示範/](https://drive.google.com/drive/folders/1sxzOUzbNBHK5CgaotCwEDaZzvfNI2hSY?usp=sharing)：講義的 Wiki 示範與 RAG 筆記本
- [講義：Wiki 與 RAG 實作](https://537sonic.github.io/SONIC/share/cm979-ai-collaborative-research-wu/weekly/2026-10-03-wiki-rag-handout.html)

## 快速開始

**RAG**：直接[在 Colab 開啟課程版筆記本](https://colab.research.google.com/drive/1h4xG-wf1BiwQDiSg6KrL3x7qtAmXk28O)，或把 `cm979-rag-notebook-20261003.ipynb` 上傳到 Colab（檔案 → 上傳筆記本），再依講義第 4 節依序執行。本包不含任何書籍全文，書稿請到下面的 KMDB 練習資料下載。

**Wiki**（講義第 8 節）：

1. 解壓縮 zip，把 `wiki-starter/` 複製一份並改名，例如 `my-literature-wiki/`。之後只改這份副本；不要放在 OneDrive 或 Google 雲端硬碟的同步資料夾裡。
2. 打開[第一本練習書](https://drive.google.com/drive/folders/1EqGrQh1S_UcfEcNCYfQLFnCNbpbekRnT?usp=sharing)，下載 `cleaned_…md` 與 `knowledge_extraction_…md` 兩個檔案，放進 `raw/data-analysis-to-theory-breakthrough/`。
3. 用 Obsidian 開成 vault，依講義第 8 節「階段一」手動建一張書目頁、一張概念頁，並練習回原文核對頁碼。
4. 「階段二」再用 Claude Code 或 Codex 搭配提示詞 D（匯入）與 E（查詢）。
5. 每次修改後執行：

```bash
python tools/build_index.py      # 依各頁的 summary 重建 index.md（不會自動更新）
python tools/wiki_lint.py        # 健康檢查：斷鏈、缺欄位、孤兒頁、檔名、別名重複、未附頁碼的原文依據
```

`wiki-examples/` 裡的範例頁會連到其他尚未建立的概念頁。把範例單獨放進 `sources/` 或 `concepts/` 時，健康檢查會回報「斷掉的連結」，這是預期的結果，正好可以練習怎麼補齊。

## 使用範圍

本包只供 CM979B 課程練習使用。範例頁只引用頁碼與一兩句原文，正式引用時請回到原書。
