
圖 1|關鍵字搜尋重視字面匹配,語意搜尋則試圖理解使用者真正想找的概念
前一篇我們把文件切成 chunks 並建立向量索引,接下來真正決定 RAG 品質的,就是「怎麼把正確內容找回來」。搜尋方式看似只是技術細節,但它其實會直接影響最後回答是否有根據。 最常見的兩種方法,是關鍵字搜尋與語意搜尋。兩者不是誰取代誰,而是各自擅長不同問題。關鍵字搜尋:字要對得上
關鍵字搜尋的優點是精確、容易理解,也很適合產品代碼、專有名詞、錯誤訊息或固定欄位名稱。假設使用者查詢一個工單編號,直接比對字串通常比向量搜尋更可靠。 但它的限制也很明顯。如果文件使用「退貨期限」,使用者卻問「幾天內可以把商品退回」,兩邊沒有完全相同的字,傳統 keyword search 就可能漏掉相關內容。語意搜尋:找的是意思接近
語意搜尋(Semantic Search)透過向量化(Embedding)比較文字在語意上的接近程度。這讓系統可以處理不同說法、同義詞與較自然的問句,因此特別適合企業文件問答。 不過語意搜尋也不是萬能。當問題包含非常精確的代碼、版本號或人名時,向量相似度不一定比關鍵字可靠;如果文件內容彼此很相近,也可能找回「語意很像但事實不對」的段落。混合搜尋(Hybrid Search):不要逼一種方法做所有事
實務上更穩定的做法通常是結合兩者。先利用關鍵字保留精確匹配,再用語意搜尋補上不同說法,最後把結果重新排序。這就是常見的 Hybrid Search 思維。 Data Machi 的文件搜尋不需要一開始就做得非常複雜,但設計時應該先知道:如果未來出現產品代碼、正式政策名稱與自然語言混在一起的場景,只靠單一向量相似度可能不夠。搜尋品質要先看結果,不要只看最終回答
測試 RAG 時,我會建議把 Retrieval 結果直接印出來。先問:「正確段落有沒有出現在前幾名?」如果沒有,問題在搜尋階段;如果有,但模型仍回答錯,才往 Prompt 或 Generation 檢查。 這個習慣可以避免大量無效調參。因為最常見的錯誤不是模型不會回答,而是模型根本沒看到真正需要的證據。延伸閱讀|搜尋品質不只看「有沒有找到」
如果要把 RAG 做成可持續改善的系統,下一步不能只靠主觀感覺判斷搜尋結果好不好。可以先建立一小組代表性問題,記錄每題預期應命中的文件或段落,再比較 Keyword Search、Semantic Search 與 Hybrid Search 的 Top-k 結果。最簡單的做法,是觀察正確段落是否出現在 Top 3 或 Top 5;資料量變大後,再進一步加入 reranking,把「看起來都相關」的候選內容重新排序。 這裡的重點不是追求一開始就建立完整 benchmark,而是養成一個習慣:先評估 Retrieval,再評估 Generation。 如果正確證據根本沒有被找回來,就不應該把問題歸因到模型或 Prompt。再往前一步:Metadata Filter 與 Reranking
企業搜尋往往還知道更多條件,例如「台灣」「IT Security」「目前有效版本」。這些資訊不一定要交給向量相似度自己猜,可以先用 Metadata Filter 縮小範圍,再做 Keyword + Semantic Search。候選結果很多時,再透過 Reranking 重新排序。 可以把它理解成:先決定「應該在哪個書架找」,再決定「哪一本書最像我要的」。此外,相似度高只代表語意接近,不代表內容一定正確;正式系統仍需要來源、版本與查核機制。今天先記住一件事:關鍵字搜尋擅長精確匹配,語意搜尋擅長理解不同說法。企業搜尋真正重要的不是選邊站,而是根據資料型態選擇適合的方法。