ページの先頭行へ戻る
Enterprise Postgres 17 SP1 オペレーターユーザーズガイド

5.16.1 ベクトルデータ管理機能のセットアップ

5.16.1.1 pgvectorのセットアップ

pgvectorを利用することで、ベクトル型の格納と類似検索が標準で利用可能となります。

本機能を利用するデータベースに対してCREATE EXTENSIONを実施します。psqlコマンドを利用して、セットアップするデータベースに接続します。

postgres=# CREATE EXTENSION vector;
CREATE EXTENSION

SUPERUSERのパスワード自動生成機能を利用していて本機能をセットアップする場合、“6.6.1 CREATE EXTENSION”を参照してCREATE EXTENSIONを実施してください。

注意

OSSの名前は“pgvector”ですが、バイナリと拡張機能自体の名前は“vector”であることに注意してください。

5.16.1.2 pgvectorscaleのセットアップ

pgvectorscaleを利用することで、ベクトルデータ処理高速化が実現可能となります。

本機能を利用するデータベースに対してCREATE EXTENSIONを実施します。CASCADEオプションを追加することで依存しているpgvectorも同時にCREATE EXTENSIONします。psqlコマンドを利用して、セットアップするデータベースに接続します。

postgres=# CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;
CREATE EXTENSION

SUPERUSERのパスワード自動生成機能を利用していて本機能をセットアップする場合、“6.6.1 CREATE EXTENSION”を参照してCREATE EXTENSIONを実施してください。

注意

OSSの名前は“pgvectorscale”ですが、バイナリと拡張機能自体の名前は“vectorscale”であることに注意してください。

5.16.1.3 ベクトルデータベースの再現率測定のセットアップ

ベクトルデータベースは、近似検索により応答を高速化します。近似検索と全件検索の比較を再現率という指標で表すことができます。

再現率を測定することで、ベクトルデータベース検索の精度を測定することができるようになります。

定期的に再現率の測定することで、目標とする再現率を満たしていることを確認できます。再現率が目標値を下回った場合、ベクトルデータベースのパラメータのチューニングやインデックスの再構築を検討してください。

Operatorでは、定期的にベクトルデータベースの再現率を測定し監視することができます。本節ではベクトルデータベースの再現率の定期的な測定と監視を有効化する手順を説明します。

FEPClusterカスタムリソースのspec.fep.measurement.recallForVector.enableをtrueにすることでベクトルデータベースの再現率測定が有効化されます。

ベクトルデータベースの再現率測定が有効化されると、測定用のCronjobが構築します。測定用のCronjobは、定期的に指定したベクトルデータベースのオブジェクトに対して、ランダムなベクトルに関する近似検索と全件検索を複数回実行し再現率を測定します。

測定した結果は平均され、vector_database_recall_summaryテーブルに格納されます。テーブルを参照することで、測定時点の平均の再現率を知ることができます。

ベクトルデータベースの再現率測定を有効化しているときに、spec.fep.monitoring.enableをtrueにしてFEPExporterのモニタリング機能を有効化することで、vector_database_recall_summaryテーブルの情報をメトリクスとして収集しベクトルデータベースの再現率を監視することができます。

モニタリング機能の有効化に加えて、FEPClusterカスタムリソースのパラメータspec.fep.measurement.recallForVector.alertThresholdを定義することで、ベクトルデータベースの再現率が指定値を下回ったときAlertManagerからアラートを通知できるようになります。

5.16.1.3.1 FEPClusterカスタムリソースの定義例

ベクトルデータベースの再現率測定を有効化するFEPClusterのカスタムリソースの定義例を説明します。

この定義例では、毎月1日0時に測定を開始し、測定開始から40時間経過したら測定を終了します。

spec:
  fep:
    measurement:
      recallForVector:
        enable: true
        schedule: "0 0 1 * *"
        maxDuration: "40h"
        parallelJobs: 5
        topK: 50
        alertThreshold: 0.7 # モニタリング機能が有効な時にアラート通知する閾値を指定

        # 測定対象のデータベースオブジェクトを指定
        targets:
        - database: "mydb"
          tableConfigs: # データベースに対して複数のオブジェクトを指定
          - schemaObject: "schema.table1.column1"
          - schemaObject: "schema.table2.column2"
            distanceMetric: l2

    # ベクトルデータベースの再現率測定とモニタリング機能を有効化するとPrometheusで再現率の監視が有効
    monitoring:
      enable: true

ベクトルデータベースの再現率測定のスケジュールは、測定を実行しても影響の少ない業務負荷の低い時間帯を指定してください。

5.16.1.3.2 vector_database_recall_summaryテーブル

ベクトルデータベースの再現率測定の結果を格納するvector_database_recall_summaryテーブルには下記の情報が含まれます。測定対象のオブジェクトごとに行が挿入され、測定されるごとに情報が更新されます。

カラム名

説明

db_name

text

データベース名

schema_object_name

text

スキーマオブジェクト名

start_time

timestamp with timezone

開始時刻

end_time

timestamp with timezone

終了時刻

avg_recall

numeric

平均再現率

mean_num

numeric

ベクトルの平均個数

expected_sample_size

integer

期待される試行回数

actual_sample_size

integer

実際の試行回数

failure_count

integer

失敗回数

created_at

timestamp with timezone

レコード挿入時刻

5.16.1.3.3 ベクトルデータベースの再現率の監視/通知

ベクトルデータベースの再現率測定を有効にして、FEPClusterカスタムリソースのspec.fep.monitoring.enableをtrueにするとFEPExporterのモニタリング機能で、再現率の監視が有効になります。

ベクトルデータベースの再現率測定が有効な時に有効なメトリクス

メトリクス名

説明

avg_vector_recall

ベクトルデータベースの近似検索における再現率の測定値を監視します。

また、FEPClusterカスタムリソースのパラメータspec.fep.measurement.recallForVector.alertThresholdを定義することで下記のアラートルールを追加します。

追加されるアラートルール

アラートルール

アラートレベル

条件の永続性

説明

VectorDbLowRecall

Warning

-

ベクトルデータベースの再現率がFEPClusterカスタムリソースのspec.fep.measurement.recallForVector.alertThreshold指定された閾値を下回っています。