iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0
ChatGPT & Codex

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

Day 21|Retrieval:RAG 找到的資料真的就是最適合的嗎?

  • 分享至 

  • xImage
  •  

前幾天整理了 Chunking、Embedding 和 Vector Database。

到這裡,RAG 的前半段流程已經差不多建立起來:

文件
→ Chunking
→ Embedding
→ Vector Database
→ 搜尋相關內容

但接下來還有一個很重要的問題:

系統搜尋到的內容,真的就是最適合拿來回答問題的資料嗎?

這就是今天要整理的 Retrieval。


Retrieval 不只是「搜尋」

Retrieval 可以理解成:

根據使用者目前的問題,從知識庫中找出最相關的內容。

例如使用者問:

最近晚上都睡不好,有什麼需要注意的?

系統會先把問題轉成 Embedding,再到 Vector Database 裡搜尋語意相近的 Chunk。

最後可能找到:

  1. 睡眠與生活作息
  2. 睡眠環境注意事項
  3. 壓力與睡眠品質

這些內容才會被交給 AI,作為回答的依據。

所以 Retrieval 的品質會直接影響最後的回答。


找到「相似」不代表一定「適合」

Vector Search 找的是:

語意上相近的內容。

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

例如使用者問的是:

怎麼改善睡眠環境?

系統可能同時搜尋到:

  • 睡眠環境
  • 睡眠時間
  • 睡眠障礙
  • 睡眠與情緒

這些內容都和「睡眠」有關,但真正最重要的應該是「睡眠環境」。

所以 Retrieval 不能只看:

有沒有相關。

還要看:

哪一筆最相關。


Top-K 要取多少?

搜尋時通常會設定一個 Top-K。

例如:

Top-3
代表取最相關的 3 個 Chunk。

Top-5
代表取前 5 個。

如果取太少,有可能漏掉重要資訊。

但如果取太多,又可能加入很多不相關內容,反而干擾 AI。

所以 Top-K 並不是越大越好。

重點還是:

取得足夠,而且真正有用的內容。


還可以加入條件篩選

除了語意相似度之外,也可以搭配前一天提到的 Metadata。

例如每個 Chunk 都保存:

  • 文件類型
  • 主題
  • 來源
  • 日期

那搜尋時就可以限制:

只搜尋「睡眠」相關資料。

或:

只搜尋某一份指定文件。

這樣可以先縮小搜尋範圍,再做 Vector Search。

也就是:

Metadata Filter + Vector Search

兩者一起使用,可以讓搜尋結果更準。


Retrieval 也需要測試

RAG 做完之後,不能只確認:

「搜尋功能有正常執行。」

更重要的是檢查:

「搜尋出來的內容是不是對的?」

例如準備幾個固定問題:

忘記密碼怎麼辦?

最近睡不好要注意什麼?

VoCare 的語音功能怎麼使用?

再檢查系統搜尋出的 Chunk 是否真的包含正確資訊。

這樣才能知道問題到底出在:

  • Chunking
  • Embedding
  • Metadata
  • Retrieval
  • 還是後面的 AI 回答

Retrieval 在 RAG 裡的位置

到目前為止,RAG 的流程可以整理成:

使用者問題
→ Embedding
→ Metadata Filter
→ Vector Search
→ Top-K Relevant Chunks
→ 提供給 AI
→ 產生回答

所以 Retrieval 其實就是連接:

知識庫

和

AI 回答

之間最重要的一層。


上一篇
Day 20|Chunk 到底怎麼切?從 Chunk Size、Overlap 到 Metadata
下一篇
Day 22|Reranking:搜尋到了之後,還要再排一次順序嗎?
系列文
AI 不只會聊天:30 天打造 VoCare 智慧陪伴系統 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言