10月10日
憑感覺抓味道會燒鍋,照清單找食材才不會:一篇 RAG 文章的廚房翻譯
一篇講大廠 RAG 不用純向量檢索的技術文章,被我們翻譯成廚房裡「照著清單找食材」與「憑感覺抓味道」的分寸故事。
2026 年 10 月 9 日,掘金上一篇技術長文被工程師圈熱議:為什麼大公司的 RAG 系統,從來不靠純向量檢索?文章的結論很直白:只靠語意相似度,專有名詞會搜錯、產品型號會串、程式碼關鍵字會漏,最後還得請出老派的 BM25 關鍵詞檢索來兜底。
這句話翻成廚房語言,你大概馬上就懂了。
憑感覺做菜,和照著食譜找料
向量檢索像什麼?像一個做菜全憑手感的人。你說「想喫點暖暖的、有點家常的」,他端出一鍋薑絲蛤蠣湯,也可能端出一碗麻油雞,兩者都對,也都差一點。語意模糊的時候,這種人很厲害。
但你問他「阿嬤那罐民國八十幾年買的豆瓣醬放在哪」,他就開始在整個儲藏室裡抓「類似的味道」。文章裡舉的例子是:你搜「華為 Mate60 Pro 拆機」,向量檢索會把 Mate50、Mate70 的內容全撈回來,語意相近,可是你要的那一篇被擠到後面。廚房版本就是:你要的是那一罐,他給你一整排長得像的醬料,紅燒的、乾燒的、辣豆瓣,瓶身都油亮亮的,開起來味道也像,但炒出來的菜就是差那麼一口。
文章說,BM25 的邏輯是「有詞就打分、沒詞就零分」。這其實和你家那本貼好標籤的調味架是同一件事:標籤上寫「白醋」就是白醋,不會因為烏醋看起來也是深色液體就被牽拖進來。我們先前寫過的查食材不用翻整個冰庫,講的也是這種分寸:索引存在的意義,就是讓你不用把整個冷凍庫倒出來翻。
「的、了、是」不配進鍋:稀缺的才值得放
BM25 靠兩個東西打分:詞頻 TF,和逆文檔頻率 IDF。後者的意思是,一個詞越少見、越稀有,權重越高。文章舉例,有人搜「SpringBoot 事務失效場景」,拆出來的詞裡,「的、了、是」幾乎每篇文檔都有,權重趨近零;「SpringBoot」「事務失效」少見、辨識度高,權重極高。
這簡直是熬高湯的道理。一鍋湯什麼都放的話,就什麼味道都不是。老師傅下手,蔥薑米酒這種到處都用的東西給得節制,真正稀缺的那一味,乾貨、陳年醬、一小把金華火腿,才是整鍋湯的辨識度所在。停用詞就是那些「的、了、是」:每一鍋都有,等於沒有。
兩種人,一張餐桌
文章最後的核心主張其實很溫和:向量負責讀懂意思,BM25 負責認準關鍵詞,兩者搭配才有準確率。翻回餐桌,就是家裡最好有兩種人。一種懂你今晚想喫什麼心情,一種記得住醬油擺在哪一層、哪一罐是上次用完的。只靠前者,你會喫到一堆「差不多」的菜;只靠後者,你永遠點不出新的東西。
下次你在超市貨架前猶豫,想買「那個喫起來像小時候的什麼餅」,記得也把包裝上的名字看清楚。憑感覺找到的常常很好喫,但只有名字對得上,你才回得了第二次家。