iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0
ChatGPT & Codex

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

Day 18|Vector Database:向量要怎麼存,又怎麼被找出來?

  • 分享至 

  • xImage
  •  

Day 17 整理了 Embedding。

我們知道文字可以先轉成 Vector,讓系統用來比較不同內容之間的語意相似程度。

但當系統裡開始出現大量 Vector 之後,下一個問題就是:

這些 Vector 到底要存在哪裡?又要怎麼快速找到最相近的資料?

這就是今天要整理的:

Vector Database。


什麼是 Vector Database?

Vector Database 可以簡單理解成:

專門用來儲存、搜尋 Vector 的資料庫。

一般資料庫比較常處理的是:

  • ID
  • 姓名
  • 日期
  • 類別
  • 文字內容

而 Vector Database 除了保存原始資料之外,還會保存對應的 Embedding Vector。

例如:

原始內容:睡眠品質下降可能和生活作息有關
Vector:Embedding 產生的向量

之後系統就可以利用這個 Vector 進行相似度搜尋。


為什麼需要 Vector Database?

假設 VoCare 的知識庫裡只有 10 筆資料,直接逐筆比較可能還沒有太大問題。

但如果未來有:

幾千個 Chunk、幾萬筆 Memory,甚至更多資料

每一次提問都重新比較全部 Vector,效率就會越來越差。

所以 Vector Database 的作用,就是:

快速從大量向量中找到最接近的幾筆資料。


Vector Search 怎麼運作?

假設使用者問:

最近一直睡不好怎麼辦?

系統會先把這句話轉成 Embedding。

接著拿這個 Query Vector 去 Vector Database 裡搜尋。

流程可以整理成:

使用者問題
→ Embedding
→ Query Vector
→ Vector Database
→ Similarity Search
→ 找出最相關資料

最後可能找到:

  1. 睡眠品質與生活作息相關資料
  2. 常見睡眠影響因素
  3. 睡眠相關衛教內容

再把這些內容交給 AI。


Top-K 是什麼?

Vector Search 通常不會只找到一筆資料。

而是會取出最相關的幾筆結果。

例如:

Top-3

代表找出最相近的 3 筆資料。

Top-5

就是找出最相近的 5 筆。

但並不是取得越多越好。

如果一次把太多內容都交給 AI,也可能加入很多其實沒有那麼相關的資訊。

所以 Retrieval 的重點還是:

找到足夠,而且真正相關的資料。


Vector Database 不只存 Vector

實際上除了 Vector 之外,通常還會一起保存一些 Metadata。

例如:

  • 原始文字
  • 文件來源
  • Chunk ID
  • 類型
  • 建立時間

假設搜尋出某個 Vector,系統就可以知道:

這個 Vector 對應的是哪一段原始資料。

之後才能把真正的文字內容交給 AI,而不是把一串數字交給 AI。


在 VoCare 裡可以用在哪裡?

Vector Database 不只可以用在 RAG。

前面提過的 Memory Retrieval 也可以使用類似方式。

例如:

RAG

使用者問題
→ Vector Search
→ 找到相關知識

Memory Retrieval

長者目前說的內容
→ Vector Search
→ 找到相關 Memory

所以兩個功能雖然搜尋的資料不同,但底層概念很接近。

一個搜尋:

外部知識。

另一個搜尋:

長者過去的記憶。


上一篇
Day 17|Embedding:AI 要怎麼知道兩段文字意思很像?
下一篇
Day 19|Chunking 是什麼?為什麼 RAG 不能直接丟整份文件?
系列文
AI 不只會聊天:30 天打造 VoCare 智慧陪伴系統 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言