ベクトル アシストを使用する

ベクトル アシストを使用して、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: セマンティック検索を実行する列。テーブルにベクトルを含む列が 1 つしかない場合、vector_assist はこれを自動的に設定できます。ベクトルを含むテーブルが複数ある場合は、使用する列を指定する必要があります。
  • (省略可)TARGET_RECALL: ベクトル アシストで達成することを必要とする目標再現率。指定すると、vector_assist はさまざまな ef_search 値を試して、完全一致検索と近似最近傍検索の再現率を比較します。vector_assist は、最も近い目標再現率を提供する値に ef_search を設定します。デフォルト値は 0.95 です。
  • (省略可)TUNE_INDEX: ベクトル アシストがワークロードのベクトル インデックスをチューニングするかどうかを指定するブール値。デフォルト値は false です。これは、検索関連のパラメータ(ef_search)のみがチューニングされることを意味します。ビルド時間のパラメータ(mef_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 に置き換えます。

すべての推奨事項をまとめて適用するには、 vector_assist.apply_spec 関数をspec_idパラメータまたはtable_nameパラメータのいずれかで実行します。

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: ベクトル仕様の定義に使用したテーブルの名前。

次のステップ