Databricks 向量搜尋

重要

這項功能在下列區域中處於公開預覽狀態:canadacentral、、eastus2centralussoutheastasiaeastusnortheurope、、 westuswestus2westeurope

本文提供 Databricks 向量資料庫解決方案 Databricks 向量搜尋的概觀,包括它是什麼及其運作方式。

Databricks 向量搜尋是一個向量資料庫,內建於 Databricks Intelligence Platform,並與其治理和生產力工具整合。 向量資料庫是經過優化以儲存和擷取內嵌的資料庫。 內嵌是數據語意內容的數學表示法,通常是文字或影像數據。 內嵌是由大型語言模型所產生,而且是許多 GenAI 應用程式的關鍵元件,相依於尋找彼此類似的檔或影像。 範例包括RAG系統、推薦系統,以及影像和視訊辨識。

使用向量搜尋,您可以從 Delta 資料表建立向量搜尋索引。 索引包含內嵌數據與元數據。 然後,您可以使用 REST API 來查詢索引,以識別最類似的向量,並傳回相關聯的檔。 您可以建構索引,以在更新基礎 Delta 資料表時自動同步處理。

Databricks 向量搜尋會使用階層式導覽小型世界 (HNSW) 演演算法來測量其近似近鄰搜尋和 L2 距離度量來測量內嵌向量相似度。 如果您想要使用餘弦相似性,您需要先將數據點內嵌正規化,再將它們饋送至向量搜尋。 當數據點正規化時,L2 距離所產生的排名與餘弦相似度所產生的排名相同。

向量搜尋如何運作?

若要在 Databricks 中建立向量資料庫,您必須先決定如何提供向量內嵌。 Databricks 支援三個選項:

  • 選項 1 您提供來源 Delta 數據表,其中包含文字格式的數據。 Databricks 會使用您指定的模型來計算內嵌。 隨著 Delta 數據表的更新,索引會與 Delta 數據表保持同步。

    下圖說明此程式:

    1. 計算查詢內嵌。 查詢可以包含元數據篩選。
    2. 執行相似度搜尋以識別最相關的檔。
    3. 傳回最相關的檔,並將其附加至查詢。

    vector 資料庫,Databricks 會計算內嵌

  • 選項 2 您提供來源 Delta 資料表,其中包含預先計算的內嵌。 隨著 Delta 數據表的更新,索引會與 Delta 數據表保持同步。

    下圖說明此程式:

    1. 查詢是由內嵌所組成,而且可以包含元數據篩選。
    2. 執行相似度搜尋以識別最相關的檔。 傳回最相關的檔,並將其附加至查詢。

    vector 資料庫,預先計算的內嵌

  • 選項 3 提供來源 Delta 資料表,其中包含預先計算的內嵌。 當 Delta 資料表更新時,沒有自動同步處理。 當內嵌資料表變更時,您必須使用 REST API 手動更新索引。

    下圖說明此程式,與選項 2 相同,不同之處在於差異資料表變更時不會自動更新向量索引:

    vector 資料庫,未自動同步處理的預先計算內嵌

若要使用 Databricks 向量搜尋,您必須建立下列專案:

  • 向量搜尋端點。 此端點會提供向量搜尋索引。 您可以使用 REST API 或 SDK 來查詢和更新端點。 端點會自動調整以支援索引的大小或並行要求數目。 如需指示,請參閱 建立向量搜尋端點
  • 向量搜尋索引。 向量搜尋索引是從 Delta 數據表建立,並經過優化以提供即時近似近鄰搜尋。 搜尋的目標是要識別類似查詢的檔。 向量搜尋索引會出現在 和 中,由 Unity 目錄控管。 如需指示,請參閱 建立向量搜尋索引

此外,如果您選擇讓 Databricks 計算內嵌,您也必須為內嵌模型建立服務端點的模型。 如需指示,請參閱建立提供端點的基礎模型。

若要查詢服務端點的模型,您可以使用 REST API 或 Python SDK。 您的查詢可以根據 Delta 資料表中的任何數據行來定義篩選。 如需詳細資訊,請參閱 在查詢API 參考Python SDK 參考上使用篩選。

需求

  • 已啟用 Unity 目錄的工作區。
  • 已啟用無伺服器計算。
  • 源數據表必須啟用變更數據摘要。
  • 建立索引之目錄架構的 CREATE TABLE 許可權。
  • 已啟用個人存取令牌。

數據保護和驗證

Databricks 會實作下列安全性控件來保護您的數據:

  • 向量搜尋的每個客戶要求都會以邏輯方式隔離、驗證和授權。
  • Databricks 向量搜尋會加密待用所有數據(AES-256)和傳輸中 (TLS 1.2+)。

Databricks 向量搜尋支援兩種驗證模式:

  • 個人存取權杖 - 您可以使用個人存取權杖向量搜尋進行驗證。 請參閱 個人存取驗證令牌。 如果您在筆記本環境中使用 SDK,它會自動產生 PAT 令牌以進行驗證。
  • 服務主體令牌 - 系統管理員可以產生服務主體令牌,並將其傳遞至 SDK 或 API。 請參閱 使用服務主體。 針對生產使用案例,Databricks 建議使用服務主體令牌。

資源和數據大小限制

下表摘要說明向量搜尋端點和索引的資源和資料大小限制:

資源 資料粒度 限制
向量搜尋端點 每個工作區 10
Embeddings 每個端點 100,000,000
內嵌維度 每個索引 4096
索引數 每個端點 20
資料行 每個索引 20
資料行 支援的類型:Bytes、short、integer、long、float、double、boolean、string、timestamp、date
元數據欄位 每個索引 20
索引名稱 每個索引 128 個字元

下列限制適用於建立和更新向量搜尋索引:

資源 資料粒度 限制
差異同步索引的數據列大小 每個索引 100KB
內嵌差異同步索引的源數據行大小 每個索引 32764 個字節
直接向量索引的大量向上插入要求大小限制 每個索引 10MB
直接向量索引的大量刪除要求大小限制 每個索引 10MB

下列限制適用於向量搜尋的查詢 API。

資源 資料粒度 限制
查詢文字長度 每個查詢 32764
Num 結果 每個查詢 50

限制

  • PrivateLinkIP 存取清單 支援目前僅限於選取的客戶集。 如果您想要搭配 PrivateLink 或 IP 存取清單使用此功能,請連絡您的 Databricks 支援。
  • 公開預覽不支援客戶自控密鑰 (CMK)。
  • 不支援受管制的工作區,因此此功能不符合 HIPAA 規範。
  • 不支援數據列和數據行層級許可權。 不過,您可以使用篩選 API 來實作自己的應用層級 ACL。

其他資源