如要進一步瞭解向量輔助功能及其運作方式,請參閱「向量輔助功能總覽」。
事前準備
確認 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:用於定義向量規格的資料表名稱。
後續步驟
- 進一步瞭解向量輔助。
- 向量輔助函式參考資料。