iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
ChatGPT & Codex

AI 不只會聊天:30 天打造 VoCare 智慧陪伴系統系列 第 22 篇

Day 22|Reranking:搜尋到了之後,還要再排一次順序嗎?

  • 分享至 

  • xImage
  •  

Day 21 整理了 Retrieval。

系統會根據使用者的問題,從 Vector Database 裡找出最相關的幾個 Chunk。

但這裡還有一個問題:

Vector Search 排在最前面的資料,就一定是最適合拿來回答的嗎?

不一定。

所以今天要整理另一個概念:

Reranking。


什麼是 Reranking?

Reranking 可以簡單理解成:

先搜尋出一批候選資料,再重新判斷一次相關程度,重新排序。

例如第一次 Retrieval 找到:

  1. 睡眠與生活作息
  2. 睡眠障礙介紹
  3. 睡眠環境注意事項
  4. 情緒與睡眠關係
  5. 常見失眠原因

如果使用者真正問的是:

睡覺的房間要注意什麼?

第一次搜尋可能只是因為這些內容都和「睡眠」有關,所以一起被找出來。

但經過 Reranking 之後,就可以把:

睡眠環境注意事項

重新排到最前面。


為什麼 Retrieval 之後還需要再排序?

Vector Search 主要依照 語意相似度 找資料。

但語意相似,不一定代表最適合回答目前的問題。

例如:

最近晚上都睡不好,房間環境可以怎麼調整?

「失眠原因」和「睡眠環境」可能都很相似。

但真正能直接回答問題的,其實是:

睡眠環境相關內容。

所以 Reranking 的目的,就是進一步判斷:

哪一段資料對目前這個問題最有幫助。


Retrieval 和 Reranking 的關係

可以把兩個步驟理解成:

Retrieval:先找出可能相關的資料

Reranking:再從裡面挑出最適合的資料

所以完整流程會變成:

使用者問題
→ Retrieval
→ 找出候選 Chunks
→ Reranking
→ 重新排序
→ 取出最相關內容
→ 提供給 AI

例如 Retrieval 先找出 Top-10。

經過 Reranking 後,再從裡面選出真正最適合的 Top-3 給 AI。


為什麼不直接搜尋 Top-3?

如果一開始就只取 Top-3,有可能真正重要的資料剛好排在第四或第五。

所以有一種做法是:

第一次搜尋範圍稍微放大,再透過 Reranking 縮小。

例如:

Vector Search:Top-10

↓

Reranking

↓

最後提供 Top-3

這樣可以同時保留搜尋範圍,又減少不相關資料進入 Prompt。


Reranking 對 RAG 有什麼幫助?

加入 Reranking 之後,可以改善幾個問題:

  • 搜尋結果順序不夠準
  • 相似但不適合回答的資料排名太高
  • Prompt 裡出現太多不相關 Chunk
  • 真正重要的內容沒有排在前面

所以 Reranking 並不是取代 Retrieval。

而是在 Retrieval 之後,再增加一層篩選。


在 VoCare 裡的例子

假設使用者問:

VoCare 的語音功能要怎麼使用?

第一次 Retrieval 可能找到:

  • 語音功能操作方式
  • VoCare 聊天功能介紹
  • 麥克風權限設定
  • 長者端介面說明
  • 語音辨識技術介紹

這些內容都有關係。

但真正最適合回答問題的,應該優先是:

  1. 語音功能操作方式
  2. 麥克風權限設定
  3. 長者端介面說明

Reranking 就可以協助把這些真正能回答問題的內容排到前面。


上一篇
Day 21|Retrieval:RAG 找到的資料真的就是最適合的嗎?
系列文
AI 不只會聊天:30 天打造 VoCare 智慧陪伴系統 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言