小安忘記密碼的那個早上
用一個故事看懂 RAG 的混合檢索、RRF 與 Reranker

小安忘記密碼的
那個早上

一位新人、一間資料室、兩位找資料方法完全不同的同事,還有一位很會審稿的林姐。跟著他們走一趟,你會知道 AI 助理開口回答之前,背後到底發生了什麼事。

讀完大約 12 分鐘,每一章都有可以動手的地方。
故事裡的文件、公司和分數都是教學示意,不是實測數據。

公司 AI 助理

出場人物

AI 助理其實沒讀過你們公司的規定

先弄清楚:為什麼回答之前要「找資料」

星期一早上九點,到職第三天的小安坐在電腦前,發現自己想不起 ERP 的密碼。ERP 是公司用來管訂單、庫存和請款的系統,每天都得登入。她不好意思再去問隔壁同事,於是打開公司的 AI 助理,輸入:「我忘記 ERP 密碼了,要找誰重設?」

這個問題對 AI 助理來說有點尷尬。它背後的大型語言模型(LLM)可以想成一位讀過大量公開文章、文筆很好的寫手,但他從來沒看過你們公司的內部規定。硬要他回答,他只能照「一般公司大概都這樣做」來猜。

兩種回答方式,各按一次看看

我忘記 ERP 密碼了,要找誰重設?
(按上面的按鈕,看寫手怎麼回答)

所以實務上的做法是:先到公司的資料室把相關文件找出來,放在寫手的桌上,請他「看著這幾份資料回答」。這整套做法叫做 RAG(Retrieval-Augmented Generation,檢索增強生成),白話就是「先查資料,再寫回答」。

聽起來不難,麻煩藏在一個小細節裡:寫手的桌子不大。一次塞太多資料給他,費用和等待時間都會增加,而且不相干的內容混進來,他反而容易被帶偏。所以在這個故事裡,我們規定桌上只放得下 2 張資料。找對這 2 張,他就答得好;找錯了,他會照著錯的資料認真寫。

資料室的文件事先都被剪成一小段一小段的資料卡(技術上叫 chunk,片段),每張有自己的編號。下面是 8 張和密碼有關的卡片。在請出專業的同事之前,先請你自己當一次找資料的人。

讀一讀,挑出最能回答小安的 2 張,放到桌上

點卡片選取,再點一次取消。

寫手的桌子
只放得下 2 張

你剛剛做了一件很重要的事:你把 8 張卡片全部讀過,而且是帶著小安的問題去讀的,所以你看得出 F 講的是電子郵件、G 是給還記得舊密碼的人用的。請記住這個感覺,故事後半段會再回來。

問題在於,真正的資料室不是 8 張卡,而是好幾萬張。每來一個問題就全部細讀一遍,小安等到下班都等不到回答。我們需要的是能「很快抓出一小疊可能相關的卡片」的人。資料室剛好有兩位這樣的同事,只是兩個人找資料的方法完全不同。

兩位找資料的同事,各有各的本事

一個看意思,一個看字;兩個都會漏

阿意:靠「意思」找資料

阿意的習慣是事先整理。每進來一張新卡片,她就讀一遍,然後把它釘到牆上的一張大地圖上:講的事情相近的卡片釘在附近,不相干的釘得遠遠的。「登入失敗」和「帳號鎖定」會靠在一起,「VPN 密碼」則在另一個角落。

問題來的時候,她把問題也當成一張卡片,找到它在地圖上該放的位置,然後以那一點為中心畫一個圈,把最靠近的幾張拿下來。她不需要重讀任何卡片,所以非常快。

阿意的地圖:黑點是小安的問題

阿意還沒出發。按下按鈕,看她的圈圈會圈到哪幾張。
    看一下結果:D 被找到了,E 卻漏掉了D 卡上寫的是「想不起登入密碼」「請洽資訊服務台」「重新設定」,跟小安打的字幾乎沒有重疊,但意思一樣,所以阿意把它排在第 3 名。這是她的本事:不怕你換句話說。

    她的盲點也看得出來。F 卡講的是電子郵件密碼,但「忘記密碼、想辦法重設」這個意思跟問題實在太像,被排到第 2 名。真正需要的 E 卡(辦理前要先驗證身分)主題稍微遠了一點,排第 6,剛好沒被拿到。對阿意來說,「主題很像」和「剛好回答這一題」在地圖上不太分得出來。

    另一個常見的盲點是型號和代碼。NX-24P 和 NX-48P 在意思上都是「某一台交換器」,在地圖上幾乎疊在一起;可是對查規格的人來說,差一個字就是另一台機器。(最後的實驗室有一題型號題可以試。)

    回到電腦裡

    阿意就是向量搜尋(vector search,也叫語意搜尋)。她的地圖座標叫做 embedding(嵌入向量):由一個模型把一段文字轉成一長串數字,意思相近的文字,數字也會相近。真實的座標通常有幾百到上千個數字,這裡畫成平面只是方便看。

    卡片旁的 0.86 是「相似度」的示意分數,代表意思有多接近,不代表「有 86% 的機率是答案」。她之所以快,是因為所有卡片的座標在資料進來時就算好了,提問時只需要算問題自己的座標。

    阿字:靠「字詞」找資料

    阿字不看意思,他看字。他事先做了一本很厚的索引簿,就像書本最後面的索引頁:每個詞底下列著「哪幾張卡片出現過這個詞、出現幾次」。問題一來,他把問題拆成幾個詞,翻索引把卡片找出來,再幫每張卡算分數。

    他算分數有三條很合常理的規則。第一,稀有的詞比較值錢:每張卡都有的詞沒有鑑別力,只有少數卡片才有的詞,命中了才有意義。第二,同一個詞出現越多次分數越高,但加分會越來越少,出現 3 次不會是 1 次的 3 倍,免得有人靠重複灌分。第三,卡片越長越吃虧一點,因為長文本來就容易碰巧出現各種詞。

    阿字把問題拆成 5 個詞。點一個詞,看索引簿怎麼記

    點上面任何一個詞,這裡會顯示它在索引簿裡的那一頁。
    阿字還沒出發。
      這次換成 E 被找到,D 漏掉了E 卡有「密碼」和「重設」,排到第 3 名,補上了阿意漏掉的那張。可是 D 卡寫的是「想不起」「重新設定」「請洽」,沒有「忘記」「重設」「找誰」這幾個字,在阿字眼裡幾乎不相干,排到第 7。

      阿字的本事是精準:問題裡有明確的詞,他就抓得又快又準,型號、代碼、人名、法條編號都是他的強項。他的盲點則是只認字:同一件事換個說法,他就找不到;而字面上全中的 F 卡,雖然講的是電子郵件,卻被他排到第 1 名。

      回到電腦裡

      阿字就是關鍵字搜尋,最常用的計分方法叫 BM25,剛才那三條規則就是它的核心想法。他的索引簿叫做倒排索引(inverted index):一般目錄是「這張卡有哪些詞」,它反過來記「這個詞在哪些卡」,所以查起來很快。

      這一頁的 BM25 分數是瀏覽器用真正的公式即時算出來的,只是把中文斷詞簡化成「直接比對這 5 個詞」。真實系統會先用斷詞工具把句子切開,切法不同,結果也會不同。

      兩個人一起派出去:混合檢索

      到這裡你應該發現了:回答小安需要 D 和 E 兩張卡,阿意只找到 D,阿字只找到 E。一個人漏掉的,另一個人剛好有。既然如此,乾脆兩個人都派出去,把兩疊卡片收在一起。這個做法叫混合檢索(hybrid search)。

      兩疊卡片收進同一個籃子

      阿意的 5 張
      阿字的 5 張
      候選籃收到 0 張 不重複的有 0
      10 張變 7 張,D 和 E 都在籃子裡了C、F、G 三張被兩個人都拿了,內容只留一份,但卡片上記著「阿意排第幾、阿字排第幾」,等一下用得到。

      收的時候有兩個細節。第一,規則是「任何一個人找到就收」,數學上叫聯集;不是「兩個人都找到才收」的交集。如果只收兩人都找到的,剩下的是 C、F、G,D 和 E 反而都被丟掉。第二,判斷是不是同一張卡,看的是卡片編號,不是文件名稱,因為同一份文件會被剪成好幾張卡,名稱一樣但內容不同。

      混合檢索解決的是「找不找得到」的問題。可是故事還沒結束。

      找到了,卻不知道該選哪兩張

      籃子裡有 7 張,桌子只放得下 2 張

      新的麻煩來了。而且有個讓人不安的現象:阿意和阿字「都有找到」的 C、F、G,照理說有兩個人背書,應該最可靠,偏偏都不是答案。到底該讓誰上桌?資料室試過三種辦法,請你一個一個按按看。

      辦法一:直接比分數

      最直覺的想法:兩個人都有給分數,把分數放在一起,高的上桌。一張卡如果兩個人都給了分,就取比較高的那個。

      7 張候選,依「原始分數」排序

      問題出在兩個人用的是兩把不同的尺。阿意的相似度最高就是 1;阿字的分數沒有上限,命中的詞越多越稀有,分數就越高。直接比大小,就像拿公分和公斤比,結果幾乎永遠是阿字那一邊贏,阿意找到的 D 連比的機會都沒有。

      辦法二:不比分數,比名次

      既然分數不能比,那就只看名次。每張卡在每份名單上,第 1 名得 1/(60+1) 分,第 2 名得 1/(60+2) 分,名次越後面得分越少;沒上榜就是 0 分。把兩份名單的得分加起來,重新排一次。這個方法叫 RRF(Reciprocal Rank Fusion,倒數排名融合)。

      分母裡的 60 是一個緩衝用的常數,作用是讓第 1 名和第 2 名的差距不要太懸殊,60 是常見的預設值。RRF 公平、好算,完全不必管兩把尺的差異,所以很多系統用它來合併名單。

      7 張候選,依「名次積分」排序

      名次比得很公平,結果卻還是 C 和 F。原因不在公式,而在於到目前為止,沒有任何人真的帶著問題把卡片讀過一遍。阿意看的是大概的意思,阿字看的是字,RRF 只看名次,連卡片內容都不碰。兩個人都被 F 騙了,合併之後 F 只會排得更前面。

      辦法三:請林姐把每張卡真的讀一遍

      資料室還有一位資深的林姐。她的工作方式和前兩位不同:她把小安的問題和一張卡片擺在一起,逐字對照著讀,然後用紅筆打一個分數,代表「這張卡有多能回答這個問題」。籃子裡有 7 張,她就讀 7 次。阿意和阿字原本給的分數,她完全不參考。

      林姐的閱讀桌

      我忘記 ERP 密碼了,要找誰重設?
      林姐每次只看「問題+一張卡」。讀完之後,點右邊任何一張卡可以回頭看她的評語。

      D 和 E 終於上桌了,而 F 被她一眼看穿:「這張講的是電子郵件。」還記得第一章嗎?你自己挑卡片的時候,做的就是同一件事:帶著問題,把每一張讀過,再判斷它有沒有回答到。林姐就是那個步驟的專業版。

      那麼,既然林姐最準,為什麼不一開始就請她把整間資料室讀完?因為她慢,而且沒辦法事先準備。阿意的座標、阿字的索引都可以在資料進來時先做好;林姐的分數卻取決於「這個問題」配上「這張卡」,問題還沒來,她什麼都算不了。

      拉拉看:交給林姐的卡片越多,小安要等多久

      假設林姐讀一張要 0.05 秒。這是方便心算的示意數字,實際速度依模型和硬體而定。

      交給林姐7 張
      小安大約要等0.35 秒

      所以分工變成兩段:快的人先粗篩出一小疊,慢而準的人再從這一小疊裡精挑。這也帶來一條很重要的限制:林姐只能重排交到她手上的卡片。如果 D 一開始沒被任何人找到,她再厲害也變不出來。這就是為什麼前面要同時派出阿意和阿字。

      辦法二的 RRF 也沒有白學。當兩位同事各拿回 50 張、合起來將近 100 張的時候,可以先用 RRF 依名次留下前 20 張,再交給林姐,省下她的時間。代價是 RRF 如果砍得太兇,答案可能在輪到林姐之前就被淘汰了,這一點可以到實驗室親手試。

      回到電腦裡

      林姐就是 reranker(重新排序模型),最常見的一種叫 Cross-Encoder(交叉編碼器)。「交叉」的意思是:問題和卡片的文字一起送進同一個模型,模型可以逐字對照兩邊,所以注意得到「問的是 ERP、這張講的是電子郵件」這種細節。阿意那種做法則是問題和卡片分開各自轉成座標再量距離,快,但看不到這麼細。

      畫面上林姐一次讀一張,是為了看清楚。實際上系統會把多組「問題+卡片」一起批次計算,但每一組仍然各自得到一個分數,不是把所有卡片黏成一篇長文來打總分。

      桌上放對了兩張卡

      最後一步,才輪到寫手動筆

      現在寫手的桌上有三樣東西:小安原本的問題、D 卡的全文、E 卡的全文,兩張卡都帶著編號。他的工作是看著這些資料,寫出一段人看得懂的回答,並且標明每句話是根據哪一張卡。

      寫手的桌子

      (桌上資料已備妥,等你按下按鈕)

      點回答裡的綠色編號,可以看到那句話是根據哪一張卡寫的。回答是寫手寫的,不是林姐寫的;林姐只負責挑卡片。

      小安打電話給資訊服務台,報上帳號和員工編號,五分鐘後就登入了。而你已經看完 AI 助理背後的整條流程。把它攤開來看是這樣:

      提問同一個問題,同時交給兩個人
      各找一疊一個看意思,一個看字,都很快
      合併去重任何一人找到就收,同一張只留一份
      RRF(可選)卡片太多時,先依名次縮小名單
      細讀重排帶著問題逐張讀,重新打分
      寫回答只看排最前面的幾張
      故事裡的真正的名稱它看的是什麼它負責解決什麼
      資料卡chunk(片段)把長文件剪成可以單獨被找到的小段
      阿意和她的地圖向量搜尋、embedding意思接不接近換句話說也找得到
      阿字和他的索引簿BM25、倒排索引字詞有沒有出現、稀不稀有型號、代碼、專有名詞要精準
      兩疊收進同一個籃子混合檢索(聯集+去重)卡片編號不讓任何一邊找到的好資料漏掉
      名次積分RRF各份名單上的名次公平合併兩份名單,必要時先縮小名單
      林姐reranker(Cross-Encoder)問題和卡片全文,放在一起讀把真正回答問題的卡片排到最前面
      桌子只放 2 張送進 LLM 的片段數量上限控制費用、等待時間和雜訊
      寫手LLM(大型語言模型)問題+上桌的卡片寫出回答並標明出處

      故事沒有說完的部分

      林姐給的高分,意思是「這張卡和問題很相關」,不是「這張卡的內容一定正確」。一份已經過期的舊規定,照樣可能拿到高分。0.96 也不是「96% 的機率正確」,不同的 reranker 模型,分數的刻度各不相同,不能跨模型比較。

      多請一位林姐,就多一段等待時間和運算費用。資料量不大、問題單純的時候,只用混合檢索加 RRF 也可能已經夠用;到底需不需要 reranker,得拿自己的資料實際測過才知道,沒有標準答案。

      真實的系統還有幾件這個故事沒演到的事:文件有新舊版本、不同的人有不同的閱讀權限、找不到答案時要老實說找不到。另外,這條流程也不是唯一的做法,有的系統用加權分數合併兩路結果,有的用別種方式重排。

      換你當資料室主管

      改一個設定,看答案在哪一關消失

      調到 0 等於不派她去。
      調到 0 等於不派他去。
      就是公式 1/(常數+名次) 裡的那個數,不是「取前幾張」。
      三個小任務
      卡片阿意名次阿字名次RRF 積分林姐分數最後去向

      阿字的名次、合併、去重、RRF 積分和名單截取,都是瀏覽器即時計算的。阿意的相似度和林姐的分數是預先設定的示意值,不代表任何實際模型的表現。

      四個問題,確認真的看懂

      選了之後會告訴你原因

      本頁所有文件、公司流程與 NX 系列產品皆為虛構的教學素材。寫手的回答是依上桌卡片組合的示範腳本,頁面不會連線呼叫任何模型,也不會上傳資料。

      📝 iPAS 考點提醒

      這頁對應的是「RAG 檢索增強生成」裡檢索品質這一段。要記的因果鏈:文件先切成 chunk向量搜尋(embedding,看意思,換句話說也找得到,但型號代碼容易混)與 關鍵字搜尋 BM25(倒排索引,看字詞,精準但只認字)各找一疊 → 混合檢索用聯集收進同一個籃子,依片段編號去重 → RRF 只比名次不比分數,公平合併兩份名單 → Reranker(Cross-Encoder)把問題和片段放在一起細讀、重新打分 → 只把最前面幾張交給 LLM 寫回答。易混點有三個:第一,向量相似度和 BM25 是兩把不同的尺,分數不能直接比大小,這正是 RRF 改比名次的原因;第二,reranker 只能重排「已經被找回來」的片段,第一階段沒找到的,它變不出來,所以找得到靠混合檢索、排得對才靠 reranker;第三,reranker 的高分代表「和問題很相關」,不代表內容正確或還沒過期,也不是機率。

      想練情境題與詳解 → AI 學習與考證地圖

      ❓ 常見問題

      混合檢索(hybrid search)是什麼?為什麼不只用向量搜尋?

      混合檢索是同一個問題同時交給向量搜尋和關鍵字搜尋,再把兩邊找到的片段收在一起。向量搜尋看的是意思,換句話說也找得到,但「主題很像」和「剛好回答這一題」它不太分得出來,型號、代碼這類差一個字就不同的東西也容易混在一起;關鍵字搜尋(BM25)看的是字,型號代碼抓得準,可是同一件事換個說法就找不到。兩種方法漏掉的東西不一樣,一起用才不容易漏。合併時收的是聯集,也就是任何一邊找到就收,並且用片段編號去掉重複;如果改成兩邊都找到才收,真正需要的片段反而可能被丟掉。

      RRF 是什麼?為什麼不直接比兩邊的分數?

      因為兩邊用的是不同的尺。向量相似度最高就是 1,BM25 的分數沒有上限,直接比大小幾乎永遠是 BM25 那一邊贏。RRF(Reciprocal Rank Fusion,倒數排名融合)改成只看名次:一個片段在某份名單排第幾名,就得 1/(60+名次) 分,沒上榜是 0 分,把各份名單的得分加起來重新排序。60 是常見的緩衝常數,用來讓第 1 名和第 2 名的差距不要太懸殊,不是「取前 60 筆」的意思。

      Reranker(Cross-Encoder)和向量搜尋差在哪?

      向量搜尋是把問題和片段分開、各自轉成一串數字再量距離,片段的數字可以在資料進來時先算好,所以很快,但看不到細節。Cross-Encoder 這種 reranker 則是把問題和片段的文字一起送進同一個模型,逐字對照著讀,所以注意得到「問的是 ERP、這一段講的卻是電子郵件」這種差別。代價是每一組「問題+片段」都要實際算一次,比較慢,也比較花運算資源。

      既然 reranker 最準,為什麼不一開始就讓它讀完所有資料?

      因為它的分數取決於「這個問題」配上「這個片段」,問題還沒來之前什麼都不能預先算;資料有幾萬段,每來一個問題就要算幾萬次,使用者等不到回答。所以實務上分成兩段:先用快的方法粗篩出一小疊,再讓慢而準的 reranker 從這一小疊裡精挑。這也帶來一個限制——reranker 只能重排交到它手上的片段,第一階段沒找到的,它再準也變不出來。

      reranker 給 0.96 分,代表答案有 96% 的機率正確嗎?

      不是。高分的意思是「這個片段和問題很相關」,不是「內容一定正確」,一份已經過期的舊規定照樣可能拿高分。不同的 reranker 模型,分數的刻度也不一樣,不能跨模型比較。另外,多一道 reranker 就多一段等待時間和運算費用;資料量不大、問題單純時,只用混合檢索加 RRF 也可能就夠用,需不需要加,要拿自己的資料實際測過才知道。