使用向量輔助功能

選取說明文件版本:

使用向量輔助功能,在 AlloyDB Omni 執行個體上部署及管理向量工作負載。

如要進一步瞭解向量輔助功能及其運作方式,請參閱「向量輔助功能總覽」。

事前準備

  • 確認 AlloyDB Omni 執行個體執行的是 18.1.0 以上版本。如要進一步瞭解升級,請參閱「管理 AlloyDB Omni」。

  • 在要使用的資料庫中,執行下列指令來啟用向量輔助擴充功能:

    CREATE EXTENSION vector_assist CASCADE;
    

    這會產生向量輔助功能使用的 vector_assist 結構定義。

使用向量輔助功能部署向量工作負載

如要使用向量輔助功能部署及管理向量工作負載,請務必完成下列操作:

定義向量規格

如要使用向量輔助功能,第一步是定義向量規格 (vector spec)。視向量工作負載類型而定,定義向量規格時使用的欄位可能不同。

舉例來說,如要對資料表中的特定資料欄啟用語意搜尋,請執行 vector_assist.define_spec 函式來定義向量規格:

SELECT
  recommendation_id,
  REGEXP_REPLACE(query, 'SET hnsw.ef_search TO \d+', 'SET hnsw.ef_search TO') AS query_1,
  recommendation,
  vector_spec_id,
  table_name,
  applied,
  modified
FROM vector_assist.define_spec(
  table_name => 'TABLE_NAME',
  vector_column_name => 'VECTOR_COLUMN_NAME',
  target_recall => TARGET_RECALL,
  tune_vector_index => TUNE_INDEX
);

替換下列參數:

  • TABLE_NAME:要在向量工作負載中使用的資料表名稱。

  • (選用) VECTOR_COLUMN_NAME:要執行語意搜尋的資料欄。如果資料表中只有一個資料欄含有向量,vector_assist 可以自動設定這個值。如果有多個資料欄含有向量,則必須指定要使用的資料欄。

  • (選用) TARGET_RECALL:向量輔助功能應達到的目標喚回度。如果指定,vector_assist 會使用不同的 ef_search 值進行實驗,比較精確、最近鄰搜尋中的喚回度。vector_assist 會將 ef_search 設為最接近目標喚回度的值。預設值為 0.95。

  • (選用) TUNE_INDEX:布林值,指定向量輔助是否會調整工作負載中的向量索引。預設值為 false,表示系統只會調整搜尋相關參數 (ef_search),不會調整建構時間參數 (m、ef_construction)。

如要查看向量規格的所有可用參數完整清單,請參閱「向量輔助函式參考資料」。

執行查詢來建立向量規格後,向量輔助功能會自動產生步驟 (稱為建議),您必須執行這些步驟,才能部署向量工作負載。

查看 Vector Assist 建議

如要查看向量輔助功能根據向量規格產生的建議,請執行 vector_assist.get_recommendations 函式:

SELECT vector_assist.get_recommendations(
  spec_id => 'SPEC_ID'
);

將 SPEC_ID 替換成要查看建議的向量規格 ID。如要取得可用的向量規格清單,請參閱「列出向量規格」。

vector_assist.get_recommendations 會傳回名為 vector_assist.RECOMMENDATIONS 的資料表,其中包含所有建議。每項建議都會儲存在含有相關聯 spec_id 的資料表中。每項建議通常包含下列資訊:

  • 需要執行的 SQL 查詢
  • 建議的詳細說明
  • 其他有助於說明建議的相關資訊

套用向量輔助建議

您可以逐一套用產生的建議,也可以一次全部套用。

如要套用特定建議,請執行 vector_assist.apply_recommendation 函式:

SELECT vector_assist.apply_recommendation(
  recommendation_id => 'RECOMMENDATION_ID'
);

將 RECOMMENDATION_ID 替換為要從 vector_assist.RECOMMENDATIONS 資料表套用的向量輔助建議 ID。

如要一次套用所有建議,請使用 spec_id 或 table_name 參數執行 vector_assist.apply_spec 函式:

SELECT vector_assist.apply_spec(
  spec_id => 'SPEC_ID'
);

將 SPEC_ID 替換為要使用的向量規格 ID。

您也可以視需要輸入 schema_name 或 column_name 參數。如要瞭解所有可用的查詢參數,請參閱「向量輔助函式參考資料」。

套用向量輔助功能產生的建議後,即可使用向量索引。

生成搜尋查詢

您可以使用向量輔助功能,根據工作負載的向量規格和生成的向量索引,為已部署的向量工作負載建構最佳化的搜尋查詢。如要生成最佳化搜尋查詢,請執行 vector_assist.generate_query 函式:

SELECT vector_assist.generate_query(
  spec_id => 'SPEC_ID',
  search_vector => 'SEARCH_VECTOR',
  top_k => TOP_K,
  target_recall => TARGET_RECALL,
  filter_expression => 'FILTER_EXPRESSION'
);

替換下列參數:

  • SPEC_ID:要使用的規格 ID。

  • SEARCH_VECTOR:搜尋查詢的向量。例如:[1, 2, 3]。

  • (選用) TOP_K:要傳回的最近鄰數量。如未指定,則預設值為 10。

  • (選用) TARGET_RECALL:向量輔助功能應達到的目標喚回度。如果指定,vector_assist 會使用不同的 ef_search 值進行實驗,比較精確、最近鄰搜尋中的喚回度。vector_assist 會將 ef_search 設為最接近目標喚回度的值。

  • (選用) FILTER_EXPRESSION:搜尋查詢的任何篩選條件。例如根據其他資料欄進行篩選。

如要查看生成搜尋查詢的所有可用參數完整清單,請參閱「向量輔助函式參考資料」。

這個函式的輸出內容會傳回包含 SQL 查詢的文字。您可以視需要執行或儲存這項 SQL 查詢。

列出向量規格

如要列出個別或所有現有向量規格,請執行 vector_assist.list_specs 函式:

SELECT vector_assist.list_specs(
  spec_id => 'SPEC_ID',
  table_name => 'TABLE_NAME'
);

替換下列參數:

  • (選用) SPEC_ID:要使用的向量規格 ID。

  • TABLE_NAME:用於定義向量規格的資料表名稱。

後續步驟