Day 26|Embedding 是什麼?Vector Database 又在做什麼?
前面介紹了 Hidden Context Exposure,今天來看看 LLM Application 中很常見的一組技術:Embedding 與 Vector Database。
如果你有使用過 RAG,這兩個名詞應該不陌生。
什麼是 Embedding?
簡單來說,Embedding 就是把文字、圖片或其他資料轉換成一組向量(Vector)。
例如:
「我喜歡吃台灣料理」
經過 Embedding Model 處理後,會變成一串數值。
這些數值本身看起來沒有什麼意義,但它可以代表原本資料的「語意特徵」。
因此,意思相近的內容,通常會得到比較接近的向量。
例如:
「我喜歡吃台灣料理」
「我很喜歡台灣美食」
這兩句話雖然文字不同,但語意很接近,所以產生的 Embedding 也可能比較接近。
那 Vector Database 是什麼?
既然資料都被轉成 Vector,就需要一個地方把它們存起來。
這就是 Vector Database(向量資料庫)。
它主要負責儲存這些向量,並且根據相似程度快速找出相關資料。
例如使用者問:
「台灣有哪些好吃的小吃?」
系統可以把這個問題也轉成 Vector,再去 Vector Database 裡尋找「語意最接近」的資料。
最後把找到的內容交給 LLM,讓模型根據這些資料產生答案。
這就是 RAG 常見的運作方式:
使用者問題 → Embedding → Vector Search → 找到相關資料 → LLM → 產生答案
為什麼這跟資安有關?
問題就在於:
Vector Database 裡存的,可能不是普通資料,而可能是公司的內部文件、客戶資料或其他敏感資訊。
而且系統是透過「語意相似度」來找資料,不是單純的關鍵字搜尋。
因此,如果 Embedding、Vector Database 或 Retrieval 的設計出現問題,就可能造成:
找到不該取得的資料
不同使用者之間資料混在一起
搜尋結果被攻擊者影響
從 Embedding 中推測原始資訊
也因此,Embedding 與 Vector Database 雖然主要是為了讓 RAG 更好用,但同時也增加了新的攻擊面。