本頁說明向量搜尋功能,以及在 Spanner 中的運作方式。
向量搜尋是內建的高效能功能,可對高維度向量資料執行語意搜尋和相似度比對。Spanner 可直接在交易資料庫中儲存及建立向量嵌入索引,因此您不必使用獨立的向量資料庫和複雜的 ETL 管道。
基本概念
本節將介紹向量搜尋的下列重要概念:
- 向量嵌入
- 搜尋方法 (KNN 和 ANN)
- 距離函式
向量嵌入
向量嵌入是高維度非結構化資料的數值表示法。這些摘要是使用機器學習模型,從非結構化資料生成。舉例來說,您可以透過 Vertex AI 文字嵌入 API,為儲存在 Spanner 中的資料生成、儲存及更新文字嵌入。
搜尋方法
Spanner 支援兩種尋找相似向量的方法:
K 近鄰 (KNN): 計算查詢與資料集中每個向量之間的距離,執行精確搜尋。可提供更準確的召回率,但對於大量資料集而言,運算成本較高。
近似近鄰 (ANN): 使用向量索引 (以 Google 的 ScaNN 演算法為基礎),在大量向量中快速尋找相符項目。這項技術會犧牲少量準確度 (喚回率),換取速度和擴充性。
主要功能
可擴充性:支援數十億個向量,用於未分區的 ANN 搜尋, 或數兆個向量,用於分區的 KNN 工作負載。
整合式 AI 資料庫和引擎:使用 GoogleSQL
ML.PREDICT或 PostgreSQLspanner.ML_PREDICT_ROW函式,直接在查詢流程中從 Vertex AI 模型生成嵌入。內嵌篩選:有效結合向量搜尋與結構化中繼資料篩選器 (例如「尋找類別為『鞋子』且價格低於 100 的類似圖片」),同時維持效能。
LangChain 整合:內建支援 LangChain,可讓您使用 Spanner 做為向量儲存庫,建構檢索增強生成 (RAG) 應用程式。
混合型搜尋功能
搭配使用 Spanner 的其他資料功能,向量搜尋的效用將發揮到極致:
| 組合 | 效益 |
|---|---|
| 使用 SQL 篩選條件進行向量搜尋 | 有效結合向量搜尋與篩選器 (例如「尋找類別為『鞋子』且價格低於 100 的類似圖片」)。 |
| 向量搜尋 + 全文搜尋 | 使用相互排名融合 (RRF) 技術,結合語意相似度和關鍵字精確度,提供更符合需求的搜尋結果。 |
| 向量 + 圖表 | 使用向量搜尋在屬性圖中找出相關的進入點 (節點),然後遍歷複雜的關係。 |
後續步驟
- 進一步瞭解 Spanner AI。
- 進一步瞭解如何取得 Vertex AI 文字嵌入。
- 進一步瞭解如何執行 K 近鄰 (KNN) 搜尋。
- 進一步瞭解如何執行近似最近鄰 (ANN) 搜尋。