Ian Chou's Blog

終極檢索架構: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 適用場景


Part 3:GraphRAG CLI — 知識圖譜

3.1 為什麼需要 GraphRAG?

向量搜尋的問題:只看局部,看不到全局

例如查詢 "整個 RAG 流程":

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"

自動做的事

  1. Chunk 文件
  2. LLM 提煉 entities(Kubernetes, LanceDB, deploy)
  3. LLM 提煉 relations("依賴", "用於", "pipeline")
  4. 建立圖譜索引

時間:100 文件約 3-5 分鐘

3.3 查詢模式

# Global(全局摘要)
graphrag query "Kubernetes 部署依賴哪些元件?" --method global

# Local(局部搜尋)
graphrag query "LanceDB 如何與 RAG 整合?" --method local --json
模式 說明 適用
Global 遍歷全圖,社區摘要 「整體流程」「全景」
Local 局部圖 + 向量 「具體問題」

3.4 成本


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

ultimate-rag.SKILL.md 範例

---
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/次查詢

關鍵學習

  1. 三 CLI 互補:多模態 + Hybrid + 圖譜,覆蓋所有場景
  2. Skills 自動切換:Claude 根據 query 特性選擇最佳路徑
  3. GraphRAG 解決全局問題:向量搜尋的盲點
  4. 成本可控:GraphRAG 索引一次,後續便宜
  5. CLI > MCP:更少 token、更可靠、更易維護

相關資源