RAG 的最後一哩路:別急著導入向量資料庫,你可能只需要 Lucene
在人人都在談論 RAG 與向量資料庫的時代,我們是否忽略了既有技術的潛力?本文探討為何對許多團隊而言,成熟的搜尋基礎設施(如 Lucene)不僅足夠,甚至可能是比導入全新專用資料庫更明智的選擇。關鍵不在追逐新工具,而在於深化索引與營運能力。
在建構檢索增強生成(RAG)應用時,許多團隊第一個想到的問題就是:「該用哪個向量資料庫?」但這可能問錯了問題。答案可能早已存在於你我熟悉的技術堆疊中:Lucene。
一篇來自滑鐵盧大學在 2023 年 8 月發表的研究明確指出,對於多數基於 OpenAI embeddings 的場景,我們其實並不需要一個全新的、專門的向量儲存庫。這篇名為 《Vector Search with OpenAI Embeddings: Lucene Is All You Need》的論文,為那些在技術選型十字路口徘徊的團隊,提供了一個更務實、也更具成本效益的視角。
核心論點很簡單:與其引入一個全新的、需要獨立維運的專用向量資料庫,不如先善用既有搜尋基礎設施的延伸能力。許多團隊真正缺乏的,不是一個閃閃發亮的新工具,而是更成熟的索引策略、排序邏輯與系統營運能力。
為什麼我們對專門的向量資料庫如此著迷?
這股風潮並非空穴來風。隨著大型語言模型(LLM)的普及,RAG 成為解決模型知識邊界與幻覺問題的主流架構。其核心機制,就是透過語義搜尋(Semantic Search)從龐大資料庫中找出與使用者提問最相關的幾段內文,再將其作為上下文(Context)餵給 LLM,以生成更精確、更有根據的答案。
這個「語義搜尋」的環節,正是由向量搜尋(Vector Search)所驅動。它將文字轉換為高維度向量,並在向量空間中計算彼此的「距離」,距離越近,代表語義上越相似。專門的向量資料庫(如 Pinecone, Weaviate, Milvus)應運而生,它們標榜針對高維度向量的儲存與近鄰搜索(Approximate Nearest Neighbor, ANN)進行了極致優化,承諾帶來極致的效能與擴展性。在追求極致效能的氛圍下,導入一個專門工具似乎成了理所當然的選擇。
Lucene 的向量搜尋,真的足以應付現代 AI 需求嗎?
答案是肯定的,而且表現可能遠超你的預期。事實上,自 Lucene 9.0 版本開始,這個開源搜尋引擎的函式庫就已經內建了強大的 k-NN 向量搜尋功能。它採用的核心演算法,是目前業界公認最先進的 HNSW (Hierarchical Navigable Small World),與許多專門向量資料庫所採用的技術並無二致。
前述論文的作者 Jimmy Lin 透過在標準評測集 BEIR 上的實驗證明,使用 Lucene 的 KnnVectorField 進行向量搜尋,在 MS-MARCO 資料集上可以達到 Recall@10 超過 0.98 的高召回率,同時維持著具競爭力的查詢延遲。這意味著,在搜尋結果的「品質」上,Lucene 完全不遜色於專門的解決方案。
這給了我們一個重要的提醒:在評估新技術時,我們應該問的不是「它能做什麼?」,而是「相較於已經穩定運行的既有系統,它『無可替代』的獨特價值是什麼?」
當一個通用且成熟的工具已經能「足夠好」地完成任務時,我們就必須更嚴謹地評估導入新工具所帶來的額外營運成本、學習曲線與系統複雜度。
真正該關注的,是成熟的索引與營運能力
將向量搜尋的議題拉回更宏觀的系統建構視角,我們會發現,單純的向量相似度比對,只是整個 RAG 流程中的一小環。一個真正能落地產生價值的系統,更依賴於搜尋基礎設施的綜合能力。而這正是 Lucene(以及建立在其之上的 Elasticsearch、OpenSearch)最大的優勢所在。
超越向量搜尋:成熟搜尋引擎的綜合優勢
選擇一個成熟的搜尋基礎設施,你獲得的不只是一個向量索引,而是一整套經過戰場考驗的解決方案:
- 混合式搜尋(Hybrid Search): 你可以輕易地將傳統的關鍵字搜尋(如 BM25 演算法)與向量搜尋結合,並透過 Reciprocal Rank Fusion (RRF) 等方式融合排序結果。實務上,混合式搜尋的效果往往遠勝於任何單一的搜尋方法。
- 強大的後設資料過濾(Filtering): 在真實世界的應用中,使用者通常需要在特定範圍內(例如特定時間、特定類別、特定使用者權限)進行搜尋。成熟的搜尋引擎提供了極其高效且靈活的過濾能力,這是許多早期向量資料庫的弱項。
- 穩定的營運與擴展性: 備份、還原、監控、權限管理、水平擴展——這些看似枯燥的營運細節,卻是決定一個系統能否穩定上線的關鍵。這些能力是 Lucene 生態系數十年發展的積累。
- 豐富的生態系與社群: 無論是除錯、效能調校,或是尋找整合工具,成熟的技術都有著龐大的社群與文件支援,能大幅降低開發與維運的阻力。
說到底,許多團隊在建構 RAG 系統時遇到的真正瓶頸,並非向量搜尋不夠快,而是缺乏對資訊檢索(Information Retrieval)這門學問的系統性理解。例如,如何設計文件切分(Chunking)策略、如何評估檢索品質、如何根據使用者回饋迭代排序模型等。這些問題,並不會因為你換了一個更快的向量資料庫就自動消失。
因此,在急著為你的技術堆疊增加新成員之前,不妨先回頭檢視一下,你是否已經將手中現有的工具發揮到極致?對於絕大多數的團隊而言,答案或許是否定的。與其追逐下一個閃亮的新名詞,不如先將精力投入到打磨更穩固的搜尋地基上。畢竟,一個成功的 AI 應用,靠的是堅實的工程實踐,而不僅僅是演算法的堆砌。
延伸閱讀
- Vector Search with OpenAI Embeddings: Lucene Is All You Need
- Hierarchical Navigable Small World Graphs
- Lucene 9.10.0 KnnVectorField Documentation
- FAISS: A Library for Efficient Similarity Search
我是江中喬,一位具有 TPM 與產品管理背景的 AI 系統建構者,目前專注於 AI 認知增強系統與多 Agent 協作架構的設計與實踐。