1. 為什么在 RAG 里要用關鍵詞檢索?
- 向量檢索(embedding-based retrieval)是找語義相近的內容,但有時候不夠準確。
- 比如用戶問了具體人名、產品型號、年份,這類關鍵詞強指向性的信息,用向量檢索可能匹配不到最相關內容。
- **關鍵詞檢索(keyword-based retrieval)**可以直接通過詞匹配(如倒排索引、BM25)拿到精準結果。
所以,在 RAG 里常常會混合用:
→ 先關鍵詞召回,再向量檢索排序,或者兩者結合。
2. 關鍵詞檢索的基本實現方式
主流有幾種方法:
(1)簡單倒排索引
- 建一個詞到文檔ID的倒排表(Elasticsearch、Lucene 就是干這個的)
- 用戶query分詞后,直接去倒排表里查有哪些文檔包含這些詞
- 計算一個得分,比如常見的 BM25
例子:
query: "Apache Flink 流式計算"
分詞: