切塊與索引:要切多大、用什麼搜,以及怎麼知道選對了
建索引要做三個決定:切塊的單位、用關鍵字還是向量還是兩者都用、用哪個 embedding 模型。這三個都是半永久的選擇,改了就要整批重建。研究的建議偏保守:語意切塊沒有一致比較好,按句子或按文件結構切通常就夠;overlap 的效果很小、依設定而定。繁體中文的一項研究裡,正確段落排在第一名的比例,只用向量搜尋 57%,關鍵字搜尋 76%,兩者混合 81%。不要憑感覺選:用 order 11 的測試題比較兩種設定,一次只改一件事。
建索引要做三個決定:切塊的單位、用關鍵字還是向量還是兩者都用、用哪個 embedding 模型。這三個都是半永久的選擇,改了就要整批重建。研究的建議偏保守:語意切塊沒有一致比較好,按句子或按文件結構切通常就夠;overlap 的效果很小、依設定而定。繁體中文的一項研究裡,正確段落排在第一名的比例,只用向量搜尋 57%,關鍵字搜尋 76%,兩者混合 81%。不要憑感覺選:用 order 11 的測試題比較兩種設定,一次只改一件事。
Ask AI 先由 Planner 抽出 intent、complexity 與 1–4 個搜尋詞,再依查詢型態走 metadata、BM25、Vectorize 與 RRF;第二輪搜尋會加入 Critic gaps,並關閉第一次才允許的 BM25 short circuit。
前身 AutoRAG 的託管搜尋原語:丟文件進內建儲存或綁 R2/網站,自動走 Markdown 轉換、切分與向量加 BM25 索引,透過 hybrid 加 RRF 加 rerank 檢索,並以 namespace 與 instance 兩種綁定或 REST 與 MCP 在 Worker 與 Agent 內查詢。
在 Ask AI 輸入「我想找入門的ai課程」顯示搜尋文章 0 筆並觸發拒答,底部的延伸閱讀卻精準推薦相關文章。第一輪修正中文斷詞、LIKE fallback 與 Vectorize 資料鏈路;第二輪再補漢字+數字短詞、文章 metadata 檢索,以及只在 Validation/Critic 通過後顯示來源。
查「認證」只有 10 筆,149 篇裡 41 篇命中被漏掉:D1 FTS5 的 unicode61 對 2 字中文失效、本地 chunks_fts 0 筆、加上硬上限 12 的共同結果;用 LIKE fallback 與拆字 OR 先把召回補回來,再補 trigram 重建與分頁。
Qdrant 的核心不是把 embedding 存進去,而是先固定 vector schema、替高頻過濾欄位建 payload index,再用 dense + sparse query、租戶邊界、snapshot 與監控把檢索做成可維運的服務。
向量搜尋抓語義,BM25 抓關鍵字,兩者用 RRF 融合才能同時照顧模糊查詢和精確術語。
BM25 只認識查詢裡出現的詞,SPLADE 能推斷相關詞彙並加入搜尋,在保持關鍵字搜尋精確性的同時獲得部分語義能力。