部落格

不定期分享最新資訊文章

  • article-建立電子書 AI 知識庫的完整實務:VLM + Hierarchical RAG 架構

    2026/3/16

    RAG VLM 向量資料庫
    建立電子書 AI 知識庫的完整實務:VLM + Hierarchical RAG 架構
    近年很多人開始把電子書、PDF、技術文件做成 AI 知識庫。但如果只是「把 PDF 文字丟進向量資料庫」,通常效果會不太好。 原因很簡單:書籍本身是有結構的。 例如一本完整的書通常包含: 章節 小節 段落 圖表 表格 公式 頁面排版 如果忽略這些結構,搜尋品質會下降很多。本文整理一套目前常見、實務上效果不錯的架構,包含 VLM(Vision-Language Model)、Hierarchical RAG、Metadata augmentation 與 Hybrid search,能讓電子書知識庫的搜尋與回答品質明顯提升。 為什麼電子書知識庫不能只依賴「文字向量搜尋」?最常見的 RAG 做法是: 12PDF → 抽文字 → chunk → embedding → vector DB 然後在查詢時: 12query → embedding → vector search → 找到 chunk → LLM 回答 這種方式在短文件通常沒問題,但在處理書籍時會遇到三個核心問題: 書本內容很長:一本 400 頁的書可能有 2000+ 個 chunks。 Chunk 會失去上下文:段落被強制切開後,單一區塊的語意可能不完整。 使用者問法和書本寫法不同: 書本裡的專業用語可能是:token embedding 使用者查詢的口語可能是:文字向量化如果沒有額外的語意補強,純文字搜尋很容易發生 miss(漏找)。 電子書 AI 知識庫的推薦架構 Pipeline為了達到高精準度,完整的知識庫處理流程可以這樣設計: 123456789101112131415161718192021222324252627電子書 PDF / EPUB ↓ 文件解析 ↓ 章節結構抽取 ↓ 段落 chunk ↓LLM 產生 Metadata - summary - keywords - possible questions ↓ VLM 解析頁面 - page summary - figure caption - table summary ↓ 建立向量索引 - chapter index - chunk index - page index ↓ Hybrid search ↓ LLM 組成答案 Hierarchical RAG:長文件搜尋的關鍵處理長篇書籍最常用的技巧是 Hierarchical RAG(階層式檢索)。其核心概念是:先找章節,再找段落,而不是直接在整本書的所有 chunk 中大海撈針。 一般 RAG 流程12query → vector search → 所有 chunks 如果一本書有 2000 個 chunks,搜尋範圍過大,容易引入雜訊。 Hierarchical RAG 流程建立兩層索引: Level 1:chapter / section (章節) Level 2:paragraph / chunk (段落) 查詢流程則改為: 12345678910query ↓搜尋 chapter vectors ↓找到最相關的章節 ↓只在該「特定章節」內搜尋 chunk ↓LLM 回答 架構優勢: 大幅降低搜尋範圍 提升檢索精準度 回答內容更符合書本原有的邏輯結構 為每個段落增加 Metadata 語意補強高品質的 AI 知識庫都會對每個 chunk 增加額外的語意資訊(Metadata),通常包含: summary (摘要) keywords (關鍵字) possible questions (可能的問題) entities (專有名詞 / 實體) Metadata JSON 結構範例: 123456789101112131415161718{ "chapter": "Self Attention", "section": "Attention Score", "page": 121, "content": "Attention score 計算為 softmax(QKᵀ / √d_k)", "summary": "說明 Transformer attention score 的公式", "keywords": [ "transformer", "attention", "softmax", "QK" ], "possible_questions": [ "attention score 怎麼算?", "Transformer attention 公式是什麼?" ]} 為什麼要加入 Possible Questions?因為使用者問問題時,通常不會使用書中的原句。如果書本寫 token embedding,而使用者問 文字向量化,只要在該 chunk 的 Metadata 補上: 123possible_questions: - Transformer 如何將文字轉成向量? 搜尋命中率就會產生質的飛躍。 為什麼 Embedding 不建議只做一個?很多系統會偷懶,把所有內容合併成一段文字再做 embedding (summary + keywords + content)。但更好的做法是建立多個獨立向量: content_vector (偏向細節) summary_vector (偏向抽象概念) question_vector (偏向使用者真實語言) 這三種內容的語意分布完全不同,分開建立索引能帶來更精確的比對結果。 Chunk 大小設定建議切分文本的顆粒度對結果影響甚鉅。以下是一個常見的 Baseline 參考: 內容類型 Chunk Size (Tokens) Overlap (Tokens) 一般文字書 300 – 700 50 – 100 技術專業書 200 – 500 50 – 100 實務提醒: 如果文章內容包含大量的程式碼、表格或數學公式,Chunk 通常需要切得更小,以確保每個區塊的資訊足夠聚焦。 VLM 在電子書知識庫扮演的角色傳統 OCR 無法處理複雜版面,而 VLM(Vision-Language Model) 可以深入理解視覺元素,例如:圖表、表格、UI 截圖、架構圖與流程圖。 處理流程: 12PDF page image → VLM → 產出 page summary / figure caption / table summary 將這些圖表解說文字一併做 embedding 後,當使用者提問:「這張架構圖在講什麼?」時,系統才有能力精準作答。 Hybrid Search:向量與關鍵字的完美結合單純依賴向量搜尋(Vector Search)並不一定最穩定。實務上最強悍的檢索組合是: Vector Search (語意) + BM25 Keyword Search (關鍵字) + Reranker (重新排序) 查詢流程: 12345678910query ↓Vector search 與 Keyword search 雙軌並行 ↓合併候選名單 (Candidates) ↓Rerank (利用重排模型選出最相關的 Top K) ↓LLM 回答 這個做法能完美互補語意搜尋與精確字詞比對的缺點,大幅降低 miss 機率。 建議的資料表 Schema 設計為了配合上述架構,建議的資料庫 Schema 可設計如下: Chapters (章節層級資料)123456789{ "chapter_id": "ch05", "title": "Self Attention", "summary": "介紹 self-attention 原理", "keywords": ["transformer", "attention"], "page_start": 101, "page_end": 145} Chunks (段落層級資料)123456789101112{ "chunk_id": "ch05-sec03-p02", "content": "...", "summary": "...", "keywords": ["attention score"], "possible_questions": [ "attention score 怎麼算" ], "page_start": 121, "page_end": 122} Pages (頁面層級資料)1234567{ "page_number": 121, "page_summary": "...", "figures": ["transformer attention diagram"], "tables": []} 常見問答 FAQQ:如果用 NotebookLM,還需要這些技術嗎?不一定。 NotebookLM 的特點是可以直接讀 PDF、支援長 context,且會自動建立引用。 適合直接使用 NotebookLM 的情境: 文件數量不多、每本書僅幾百頁、不需要自己建置系統。 必須自己建構 RAG 的情境: 準備打造自己的 AI 產品、需要支援大量文件庫、要整合企業內部搜尋系統、需要建立 API 或自訂檢索邏輯。(備註:NotebookLM 本質上也是在使用類似的技術,只是 Google 已經幫你完美封裝好了。) Q:是不是可以直接把整本書塞進 LLM?有時可以。 如果書本總字數不大(例如 < 200k tokens),某些支援超長 Context 的模型確實可以直接吃下全文。 優點: 不用做 RAG,省去 chunking 的麻煩。 缺點: Token 成本極高、無法應付跨多份大文件的全庫搜尋。 Q:RAG 效果不好,通常是哪裡出問題?實務上最常見的 5 大地雷: Chunk 切得不好(斷句生硬或長度不對)。 沒有做 Metadata 語意擴充。 忽略了書籍原有的章節結構。 只依賴 Vector Search,沒用 Hybrid Search。 沒有使用 Reranking 進行最終排序。 結論: RAG 表現不佳通常不是 LLM 模型本身的問題,而是資料處理與結構設計的問題。 總結建立電子書 AI 知識庫時,決定最終品質上限的往往不是你用了多強大的 LLM,而是: Chunk 的切割策略 Metadata 的語意補強 (Augmentation) Hierarchical RAG 的階層式設計 Hybrid Search 的雙軌檢索 VLM 對於圖文內容的深度理解 只要將這些基礎工程扎實做好,即使是搭配輕量級的開源模型,也能打造出極具水準的知識問答系統。