跳至主要内容

Vector Search

What?​

向量搜尋(Vector Search)是什麼?

向量搜尋是一種基於數學向量空間的資料檢索方法,用來找到與查詢最相關的資料項目。它通常應用在需要處理非結構化資料的情境,例如圖像、文本或音頻。其核心概念是將這些非結構化資料轉換成高維度的數學向量,並透過計算向量之間的相似度來完成搜尋。

假設你有一個大量的產品圖片庫,使用者上傳一張鞋子的照片想找類似款式,你可以透過向量搜尋直接比對該圖片與庫中所有圖片的特徵,找到最接近的一些選項,而不需要逐一人工標記。


Who?​

誰會使用或受影響?

  1. 開發者:建立 AI 搜尋系統或推薦系統時,開發者需要掌握向量搜尋。
  2. 數據科學家:分析非結構化資料(如文本或影像)時,這是非常重要的工具。
  3. 企業用戶:如電商平台、影音串流服務等,需要快速匹配內容以提升使用者體驗。

例如,如果你是一位電商技術人員,可能需要在商品推薦系統中使用此技術,以便根據使用者行為和偏好找到合適產品。


When?​

什麼時間點會用到?

  1. 當你需要處理大量非結構化資料(例如文字、影像或音頻)且希望進行快速檢索時。
  2. 在建構搜索引擎、推薦系統或內容匹配工具時。
  3. 當傳統關鍵字檢索不再有效,例如語意模糊或資料太多而難以精確匹配。

舉例來說,在社交媒體平台上,如果希望使用者能夠透過簡單描述(例如「夏日海灘照片」)找到相關貼文,就可以運用向量搜尋技術實現語意層面的匹配。


Where?​

出現在架構哪個部分?

  1. 模型輸出後處理階段:通常在 AI 模型生成特徵嵌入(Feature Embedding)後進行。
  2. 資料庫層級:專門存儲高維度特徵向量並支持快速相似度比較,如 FAISS 或 Milvus。
  3. 查詢階段前端與後端交互部分:提供 API 或接口讓使用者進行查詢。

例如,一個完整的架構可能包含:

  • 使用 NLP 模型生成文本嵌入
  • 存儲嵌入至專門設計的向量資料庫
  • 前端依照查詢結果返回相關內容

Why?​

解決什麼問題?

  1. 解決非結構化資料檢索困難:傳統的方法依賴明確標籤,但很多情況下無法提供足夠精確的結果。
  2. 提升語意理解能力:能基於上下文及語意進行匹配,而不僅僅是表面字詞。
  3. 提供更高效、更快速的大規模檢索能力:尤其是在百萬甚至億級別以上的大型資料集上工作時。

比如,在影音串流平台中,你希望根據某部影片找到風格相似但不同主題的新片推薦,就可以利用影片特徵所生成的向量進行搜索,而不是僅靠分類標籤。


How?​

🛠️ 建立階段​

建立一個基本的向量搜尋流程:

  1. 資料準備:

    • 收集要處理的原始資料,例如圖像、文本或音頻。
    • 清理並標準化原始資料以便後續處理。
  2. 特徵提取(Feature Extraction):

    • 使用深度學習模型(如 BERT、ResNet 等),將原始資料轉換為嵌入表示(Embedding)。
    • 嵌入表示通常是一個高維度數值陣列,用於捕捉該項目的重要特性。

    $$ \text{Embedding} = \text{Model}(Input) $$

  3. 存儲到 Vector DB:

    • 將生成好的 Embedding 存到專門設計好的 Vector Database 中,如 FAISS、Milvus 或 LanceDB 等工具,以支持快速相似度比對。

🔍 查詢階段​

執行一個查詢流程:

  1. 輸入查詢內容

    • 使用者提交要檢索的信息,例如文字描述或圖像文件。
  2. 生成 Query 向量

    • 利用同樣的方法將查詢輸入轉換為嵌入表示。
  3. 相似度計算

    • 比較 Query 向量與 Vector Database 中所有 Embedding 的距離。常見方法包括歐幾里得距離(Euclidean Distance)、餘弦相似度(Cosine Similarity)。
  4. 返回結果

    • 根據距離排序,返回最相關的一些項目給使用者。

補充說明​

📌 範例比較​

以下為不同方法對同一組圖像嵌入執行搜索所耗費時間:

方法資料集大小 (100萬)搜索時間 (秒)
傳統 SQL無法完成超過 600
FAISS0.5 秒0.5
Annoy0.7 秒0.7

🧠 延伸/常見誤解​

  1. 誤解:「只有大企業才會用得到」

    • 實際上,中小型企業也可以利用開源工具實現類似功能。例如小型電商網站就能透過免費資源打造圖片搜索功能。
  2. 誤解:「越高維越好」

    • 高維可能導致「維度詛咒」,使得相似性變得不清楚。因此選擇合理維度才是真正有效的方法。