使用向量輔助功能,在 AlloyDB for PostgreSQL 執行個體上部署及管理向量工作負載。
如要進一步瞭解向量輔助功能及其運作方式,請參閱「向量輔助功能總覽」。
事前準備
- 確認執行個體使用的維護版本正確無誤。向量輔助功能需要最低維護版本號碼
POSTGRES_17.20260128.03_06。如要進一步瞭解如何執行自助式維護,請參閱「效能自助式維護」。 在要使用的資料庫中,使用下列指令啟用向量輔助擴充功能:
CREATE EXTENSION vector_assist CASCADE;這會產生向量輔助功能使用的
vector_assist結構定義。
使用向量輔助功能部署向量工作負載
如要使用向量輔助功能部署及管理向量工作負載,請完成下列步驟:
定義向量規格
定義向量規格 (或向量規格) 是使用向量輔助功能的第一步。視向量工作負載類型而定,您用來定義向量規格的欄位可能有所不同。
舉例來說,如要在資料表中的特定資料欄上啟用語意搜尋功能,請執行 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.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:用於定義向量規格的資料表名稱。