Day12 談的是「找回來的資料,有多少是相關的」,今天要換一個角度:「真正需要的資料,有多少被找回來」。這就是 Context Recall。
只看 Context Precision 其實還不夠。假設回答一個問題真正需要五項資訊,而 Retriever 最後只找到其中兩項,這兩項也確實都正確無誤,此時 Precision 會很高,因為找回來的內容全部相關;但另外三項完全沒有被找到,代表這次檢索其實漏掉了大半必要資訊。這就是 Context Recall 想觀察的問題:真正需要的資訊,究竟有多少被成功找回來了。
可以用一句話把兩者的差異記下來:Context Precision 問的是「找回來的東西,有多少是對的」,Context Recall 問的是「真正需要的東西,有多少被找回來」。前者關心雜訊多不多,後者關心遺漏多不多,兩者看起來很接近,實際上是在觀察完全不同的面向。
舉個例子。假設使用者問「特休一天需要提前幾天申請?」,完整回答這個問題需要三項資訊:申請的提前天數、核准流程、以及未提前申請時的例外處理方式。這三項就是真正需要的參考資訊。但 Retriever 最後找回的內容是:提前天數的規定、核准流程的說明,以及一段跟加班申請有關、其實無關緊要的片段。對照之後可以發現,「提前天數」與「核准流程」這兩項需要的資訊都成功找到了,只有「例外處理方式」被漏掉,同時還多找回了一項不相關的內容。真正需要的三項資訊裡,有兩項被找回,因此 Context Recall 大約是三分之二,接近 67%。也就是說,真正需要的資訊裡,大約三分之二被成功找回來了。

這裡最需要留意的是,Precision 高並不代表 Recall 也會高。延續剛才的情境,如果真正需要的資訊有五項,Retriever 卻只找到其中兩項,而這兩項恰好都正確,那麼 Precision 依然會很高,因為找到的內容全部相關;但另外三項完全沒有進入 Context,Recall 就會偏低。找得準,不代表找得完整,這正是為什麼不能只用 Context Precision 判斷一次檢索做得好不好。
再進一步看,「找到相關內容」和「找到足夠回答問題的內容」其實是兩件不同的事。假設 Retriever 找到的片段只寫著「特休需要提前申請」,這段內容確實與問題相關,從 Precision 的角度來看可能會被判定為相關資訊;但如果內容裡沒有明確寫出究竟要提前幾天,那麼即使找到的這段文字方向正確,也不足以讓語言模型產生一個真正有用的答案。這種「相關但不完整」的情況,正是 Context Recall 要捕捉的問題。
Context Recall 偏低時,代表 Retriever 沒有把回答問題所需要的重要資訊完整找回來,這時候值得回頭檢查的環節,其實跟 Context Precision 偏低時類似,只是問題的性質不同。可能是 Chunking 把本來該放在一起的資訊拆散了——比如把「提前天數」和「核准流程」切進了兩個不同的片段,而 Retriever 只找到了其中一個;也可能是 Embedding 模型沒有把問題與真正相關的片段放進足夠接近的向量位置,導致關鍵內容沒有被排進候選清單;也可能是 Top-K 設得太小,真正需要的資訊分散在排名比較後面的片段裡,卻因為只取前幾筆而被排除在外;也可能是使用者的提問本身不夠明確,讓 Retriever 難以判斷真正需要鎖定哪一段內容;甚至可能是 Reranker 把重要片段排到了後面,導致它沒有進入最終送給語言模型的 Top-N 之中。可以看到,Reranker 不只會影響 Context Precision,也同樣會影響 Context Recall。
把 Precision 與 Recall 放在一起看,會出現四種不同的組合。找得準又找得完整,是最理想的狀況;找得準但不完整,代表結果雖然精簡,卻可能漏掉關鍵內容;找得完整但不夠精準,代表雖然幾乎沒有漏掉重要資訊,卻同時混入了大量無關內容;而找得既不準也不完整,則代表 Retrieval 同時存在雜訊與遺漏兩種問題,需要更全面地檢查整條流程。這也是為什麼實務上不能只看單一指標,而需要同時觀察 Precision 與 Recall,才能判斷一次檢索結果究竟是哪一種狀況。
這也正是評測真正的價值所在。如果沒有拆解指標,我們看到答案錯誤,很可能只會說「語言模型答錯了」;但如果透過 Context Recall 發現,其實是必要資訊一開始就沒有被找回來,就會知道問題根本不在語言模型有沒有能力回答,而是它從一開始就沒有拿到足夠的資料可以作答。答案錯誤不等於語言模型有問題,也有可能是檢索階段就已經漏掉了關鍵內容,讓語言模型在資訊不足的情況下勉強作答。
不過,「必要資訊」裡的每一項,重要程度其實並不相同。以特休申請的例子來說,如果漏掉的是「核准流程」這類補充說明,答案可能還算堪用;但如果漏掉的是「提前幾天申請」這個核心數字,那答案基本上就答不出重點了。也就是說,有些資訊的漏失,會比其他資訊的漏失更致命,尤其是那些精確的人名、日期、數字或編號。這也讓我們可以從「整體必要資訊有沒有找回」,進一步縮小範圍到「關鍵實體有沒有完整找回」——這就是下一篇要介紹的 Context Entities Recall。