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

ドキュメントのバージョンを選択してください。

ベクトル アシストを使用して、AlloyDB Omni インスタンスにベクトル ワークロードをデプロイして管理します。

ベクトル アシストとその仕組みについて詳しくは、ベクトル アシストの概要をご覧ください。

始める前に

  • AlloyDB Omni インスタンスがバージョン 18.1.0 以降を実行していることを確認します。アップグレードの詳細については、AlloyDB Omni をアップグレードするをご覧ください。
  • 使用するデータベースで次のコマンドを使用して、ベクトル アシスト拡張機能を有効にします。

    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 に置き換えます。

すべての推奨事項をまとめて適用するには、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: ベクトル仕様の定義に使用したテーブルの名前。

次のステップ