終極檢索架構:NotebookLM + LanceDB + GraphRAG 三 CLI 協作
終極檢索架構:NotebookLM + LanceDB + GraphRAG 三 CLI 協作
TL;DR
| CLI 工具 | 強項 | 適用場景 |
|---|---|---|
| notebooklm-py | 多模態(PDF/YouTube/音訊) | 研究、會議、教學影片 |
| LanceDB CLI | Hybrid Search(向量 + BM25) | 技術文件、程式碼 |
| GraphRAG CLI | 知識圖譜(全局關係) | 長程依賴、流程串接 |
三者透過 Skills 協作,Claude 自動選擇最適合的檢索方式。
Part 1:NotebookLM-py — 多模態 DB
1.1 API 現況
| 版本 | API 支援 |
|---|---|
| NotebookLM Enterprise | ✅ 官方 REST API(Google Cloud) |
| 一般版 NotebookLM | ❌ 無官方 API,需用 notebooklm-py |
notebooklm-py 是逆向工程的 CLI,支援完整功能:
pip install notebooklm-py
1.2 核心能力
# 建立筆記本
notebooklm-py notebook create "tech-research"
# 上傳多模態來源
notebooklm-py sources add tech-research \
--pdf paper.pdf \
--youtube "https://youtube.com/watch?v=xxx" \
--audio meeting.mp3
# 語意檢索
notebooklm-py query tech-research "Kubernetes 部署重點" --json
# 匯出
notebooklm-py export tech-research --format podcast
notebooklm-py export tech-research --format mindmap
1.3 檢索機制
重要:notebooklm-py query 使用 Gemini 1.5 Pro 語意檢索,不是 Hybrid Search。
| 特性 | 說明 |
|---|---|
| 向量類型 | Gemini 內建 embedding |
| BM25 | ❌ 無 |
| 中文 | ✅ 優秀(Gemini 強項) |
| 專有名詞 | 🟡 偶爾漏(純語意) |
輸出格式:
{
"answer": "Kubernetes 部署需要...",
"sources": [
{"text": "相關段落", "page": 5, "source": "paper.pdf"}
]
}
Part 2:LanceDB CLI — Hybrid 精準檢索
2.1 與 NotebookLM 的互補
| 面向 | notebooklm-py | LanceDB CLI |
|---|---|---|
| 檢索類型 | 純語意 | Hybrid(向量 + BM25) |
| 多模態 | ✅ 原生 | ❌ 需自己處理 |
| 中文分詞 | Gemini 內建 | 需加 jieba |
| 專有名詞 | 🟡 偶漏 | ✅ BM25 精準 |
| Index 控制 | 黑盒 | ✅ IVF-PQ 可調 |
2.2 使用方式
# 安裝
pip install lancedb[cli]
# Hybrid 查詢
lancedb query ./blog.lance \
--hybrid "Kubernetes 台積電" \
--top-k 10
# 建立優化索引
lancedb create-index blog.lance --ivf-pq
2.3 適用場景
- 技術 blog / 程式碼
- 需要精確關鍵字匹配
- 需要自訂 rerank 策略
Part 3:GraphRAG CLI — 知識圖譜
3.1 為什麼需要 GraphRAG?
向量搜尋的問題:只看局部,看不到全局。
例如查詢 "整個 RAG 流程":
- 向量搜尋:抓到零散段落
- GraphRAG:遍歷圖譜,找出完整 pipeline
3.2 一鍵建圖譜
# 安裝
pip install graphrag
# 初始化
mkdir graphrag-blog && cd graphrag-blog
graphrag init --root .
# 複製文件
cp ../blog/*.md ./
# 建圖譜(自動提煉 entities/relations)
graphrag index --root . \
--llm-model "openai/gpt-4o-mini" \
--embedding-model "openai/text-embedding-3-small"
自動做的事:
- Chunk 文件
- LLM 提煉 entities(Kubernetes, LanceDB, deploy)
- LLM 提煉 relations("依賴", "用於", "pipeline")
- 建立圖譜索引
時間:100 文件約 3-5 分鐘
3.3 查詢模式
# Global(全局摘要)
graphrag query "Kubernetes 部署依賴哪些元件?" --method global
# Local(局部搜尋)
graphrag query "LanceDB 如何與 RAG 整合?" --method local --json
| 模式 | 說明 | 適用 |
|---|---|---|
| Global | 遍歷全圖,社區摘要 | 「整體流程」「全景」 |
| Local | 局部圖 + 向量 | 「具體問題」 |
3.4 成本
- 首次索引:約 $0.5(小型 blog)
- 後續查詢:按 token 計費
- 可存 Git,不需重建
Part 4:三 CLI 協作架構
4.1 架構圖
flowchart TB
Q[Claude 收到 Query] --> S[Skills 匹配]
subgraph T[三路檢索]
direction TB
N[notebooklm-py
(多模態)]
L[LanceDB
(Hybrid)]
G[GraphRAG
(圖譜)]
end
S --> N
S --> L
S --> G
N --> F[融合 top-5]
L --> F
G --> F
F --> C[Context]
4.2 Skills 設定
選擇邏輯:
| Query 類型 | CLI |
|---|---|
| PDF/影片/會議 | notebooklm-py query |
| 技術/程式碼 | lancedb query --hybrid |
| 全局流程/關係 | graphrag query --global |
---
name: Ultimate RAG
description: 三路檢索:多模態 + Hybrid + 知識圖譜
keywords: ["search", "rag", "vector", "graphrag", "multimodal"]
---
# 三路 CLI 檢索
## 執行
### 多模態
notebooklm-py query my-notebook "{query}" --json
### Hybrid
cd mcp-server && bun run search-material-cli.ts --focus "{query}" --limit 5
### GraphRAG
graphrag query "{query}" --method global --json
## 融合
取各路 top-3,去重後組成 context。
4.3 實際效果
| Query | 單一向量 | 三路協作 |
|---|---|---|
| "K8s 部署流程" | 零散段落 | 完整 pipeline(GraphRAG) |
| "會議錄音重點" | ❌ 無法處理 | ✅ 轉錄 + 摘要(NotebookLM) |
| "台積電 RAG" | 🟡 語意模糊 | ✅ BM25 精準(LanceDB) |
Part 5:實作建議
5.1 遷移步驟
# 1. 安裝三個 CLI
pip install notebooklm-py lancedb graphrag
# 2. 建立各自索引
# NotebookLM
notebooklm-py notebook create "my-research"
notebooklm-py sources add my-research --pdf *.pdf
# LanceDB(你已有)
# 無需額外操作
# GraphRAG
mkdir graphrag-blog && cd graphrag-blog
graphrag init --root .
cp ../blog/*.md ./
graphrag index --root .
# 3. 建立 Skills
cp ultimate-rag.SKILL.md .agent/skills/
5.2 何時用哪個?
你的 Query 是?
├── 涉及 PDF/影片/音訊
│ └── notebooklm-py
│
├── 需要精確關鍵字匹配
│ └── LanceDB Hybrid
│
├── 問「全局流程」「整體關係」
│ └── GraphRAG global
│
└── 一般技術問題
└── LanceDB Hybrid(預設)
5.3 成本估算
| 工具 | 初始成本 | 持續成本 |
|---|---|---|
| notebooklm-py | 免費(一般版) | 免費 |
| LanceDB | 免費 | 免費 |
| GraphRAG | ~$0.5/次索引 | ~$0.01/次查詢 |
關鍵學習
- 三 CLI 互補:多模態 + Hybrid + 圖譜,覆蓋所有場景
- Skills 自動切換:Claude 根據 query 特性選擇最佳路徑
- GraphRAG 解決全局問題:向量搜尋的盲點
- 成本可控:GraphRAG 索引一次,後續便宜
- CLI > MCP:更少 token、更可靠、更易維護
相關資源
- ← Previous
Hybrid Search 實戰:從中文分詞到向量資料庫選型完整指南