Configuring AIDB#

AIDBを使用するには、shared_preload_libraries に追加し、データベースに拡張機能を作成し、ユーザーアクセスを管理し、インストールを確認します。このページでは、プロキシ設定と、後で調整できるAIDB構成パラメーターGUCについても説明します。

shared_preload_librariesの構成#

  1. postgresql.conf ファイルで、 aidb をshared_preload_libraries パラメーターに追加します。

shared_preload_libraries = aidb
!!!note shared_preload_libraries に既に他の拡張機能がリストされている場合、コンマ区切りを使用して`aidb` を追加します。順序は関係ありません。 .. ::
  1. Postgresを再起動します。

拡張機能を作成します#

  1. データベースにAIDB拡張機能を作成します。

CREATE EXTENSION aidb CASCADE;

CASCADE オプションは、必要なvector 拡張機能がまだ存在していない場合は、自動的にインストールします。

!!!注PGDユーザーEDB Postgres分散PGDを実行している場合、拡張機能を作成した後に次を実行して、レプリケーションセットにAIDBカタログテーブルを登録します。

SELECT aidb.bdr_setup();
CREATE EXTENSION pgfs;

詳細については、 PGFS documentation を参照してください。

aidb_usersロールを使用してユーザーアクセスを管理する#

AIDB拡張機能を作成すると、Postgresはaidb_users という名前のロールを自動的に作成します。このロールのユーザーメンバーシップを付与して、AIDBのSQLファンクションへのアクセスを付与します。後で拡張機能を削除しても、このロールは削除されません。

aidb_users は、AIDB機能のアクセス管理を簡素化するように設計されています。

  • 目的 ユーザーにaidb_users ロールを付与すると、すべてのAIDB機能にアクセスできるため、拡張機能の機能を使用できます。

  • セキュリティ aidb_users ロール はAIDBの内部テーブルへのアクセスを付与しない ため、拡張機能のパブリックAPIのみがそれを保持しているユーザーに公開されます。

  • バックグラウンドワーカー バックグラウンドワーカーが使用される場合、バックグラウンドワーカーは、定義したユーザーとして、またはユーザーが指定したロールとして実行されます。そのユーザーがそのロールにアクセスできる場合。

ユーザーにAIDB機能を使用させるには、aidb_users ロールを付与します。

GRANT aidb_users TO your_user;

たとえば、最初に特権またはロールメンバーシップのないalice という名前のロールを作成します。

CREATE ROLE alice
  LOGIN
  PASSWORD change_me;   -- replace with a real password

次に、 alice をaidb_users ロールに追加します。

GRANT aidb_users TO alice;

alice は、aidb_users が持っている特権、たとえば、aidb スキーマのルーチンに対するEXECUTE を継承するようになりました。

aidb_users のメンバーシップは、自分のデータへのアクセスを付与しません。 alice aidb_users ではない に、AIDBが読み取りまたは書き込みをするテーブルで必要な特権を付与します。この例では、通常はパイプラインで使用されるソーステーブルである3つの任意のテーブルへのアクセスを付与します。

GRANT SELECT, INSERT, UPDATE, DELETE
  ON public.documents,
     public.email_text,
     public.chats
  TO alice;

alice もpublic スキーマにオブジェクトを作成する必要がある場合

GRANT CREATE ON SCHEMA public TO alice;

!!!note パイプラインデザイナーを介してAIDBを使用する ハイブリッドマネージャーのパイプラインデザイナーを介してAIDBにアクセスする場合、パイプライン操作は別のロールvisual_pipeline_user の下で実行されます。これは、 aidb_users のメンバーシップを付与する必要があります。その設定については、 VPU and permissions を参照してください。

プロキシ設定#

ご使用の環境がプロキシを介してアウトバウンドHTTPトラフィックをルーティングする場合、 Postgres環境ファイルでHTTP_PROXY およびHTTPS_PROXY 環境変数を設定します。コミュニティPostgresを使用するUbuntuでは、このファイルは/etc/postgresql/<version>/main/environment にあります。

echo "HTTP_PROXY = http://<your-proxy-settings>/" | sudo tee -a /etc/postgresql/16/main/environment
echo "HTTPS_PROXY = http://<your-proxy-settings>/" | sudo tee -a /etc/postgresql/16/main/environment

次に、 Postgresを再起動して変更を有効にします。

sudo systemctl restart postgresql@16-main

<your-proxy-settings> をプロキシアドレスに置き換え、16 をPostgresバージョンに置き換えます。環境ファイルの正確な場所については、Postgresディストリビューションのドキュメントを参照してください。

!!!注 AIDBのエアギャップサポートは制限されています。ビルトインCPUモデルランタイムCandleおよびllama.cppは、モデルファイルがローカルで利用できるようになると、完全にオフラインで実行されますが、リモートモデルプロバイダーを呼び出すパイプラインステップまたはエージェントツールは、そのプロバイダーへのアウトバウンドネットワークアクセスが必要です。

構成パラメーター#

AIDBは、 aidb.* 名前空間でPostgres構成パラメーターGUCのセットを公開します。 postgresql.conf で設定し、SET とセッションごとに、または-c と接続ごとに設定します。以下のパラメーターのほとんどはUSERSET です。ロールは自分のセッションでそれらを変更できます。異なるコンテキストを持つパラメーターは個別に呼び出されます。

スレッド制限#

Parameter

Type

Default

Range

Description

aidb.max_threads

integer

0

0–1024

ローカルモデルの推論Candleおよびllama.cppに使用されるCPUスレッドの最大数。 0`は、デフォルトの使用可能なCPUの半分を使用します。 `SUSET.

aidb.max_io_threads

integer

0

0–1024

AIDBの非同期I/OランタイムリモートモデルHTTP呼び出し、およびボリューム/オブジェクトストアI/Oの最大スレッド数。 0`は、 `TOKIO_WORKER_THREADS`環境変数、またはTokio独自のデフォルトCPUごとに1つが設定されていない場合は、それにフォールバックします。 `SUSET.

どちらもライブで適用されます。セッションローカルSET は、そのバックエンドでのみすぐに有効になります。 ALTER SYSTEM またはpostgresql.conf での設定は、pg_reload_conf() またはSIGHUP の後に有効になり、すべてのバックエンドとバックグラウンドワーカーに伝播します。再起動は必要ありません。

promoteb.max_threads#

SET aidb.max_threads = 4;

quietb.max_io_threads#

SET aidb.max_io_threads = 4;

これら2つのパラメーターが制御するもの、相互作用、およびそれらを下げる場合については、 スレッド制限 を参照してください。

モデルのダウンロード#

次のパラメーターは、 AIDBがHuggingFaceからローカルモデルファイルをダウンロードする方法を制御します該当するプロバイダーについては Local models を参照してください。

Parameter

Type

Default

Range

Description

aidb.download_log_level

string

notice

—

ルーチンのダウンロード進行状況メッセージたとえば、ダウンロードの開始/完了、バイト進行状況ハートビート、アダプターのロードラインなどの出力チャネルを制御します。有効な値 notice、log、off。以下を参照してください。

aidb.download_max_attempts

integer

30

1–500

AIDBが異常終了するまでのファイルごとの最大合計ダウンロード試行初期要求と再試行。再試行動作については、 ローカルモデルのダウンロード を参照してください。

helpb.download_log_level#

ルーチンのダウンロード進行状況メッセージの送信先を制御します。警告とエラーは影響を受けません。

Value

Behavior

notice

`NOTICE`レベルでメッセージをクライアントに送信します。 `psql`のインタラクティブセッションに役立ちます。

log

メッセージをサーバーログのみに送信します`log_min_messages`の対象。これは、クライアント出力がコールドおよびウォームキャッシュにわたって安定する必要があるバッチジョブとテストに使用します。

off

ルーチンの進行状況メッセージを完全に抑制します。

例

SET aidb.download_log_level = log;

quietb.download_max_attempts#

ファイルごとのダウンロード試行の合計数を制限します。ダウンローダーは、連続した試行で進行状況がゼロの場合、早期に中断するため、このパラメーターは主に過剰な再試行ループに対する安全上限です。

CIまたはスクリプト化されたバッチジョブでのフェイルファスト動作の場合、これを3 または5 などに下げます。損失の多いリンク上の非常に大きなファイルの場合にのみこの値を上げます。

例

SET aidb.download_max_attempts = 5;

llama.cppネイティブログ#

Parameter

Type

Default

Range

Description

aidb.enable_llamacpp_logs

boolean

false

—

llama.cpp自身の診断出力GGUFメタデータ、テンソルシェイプ、およびバックエンド/モデルの初期化をサーバーログに書き込むかどうかを制御します。 SUSET.拡張機能の初期化時に1回読み取ります。以下を参照してください。

agentb.enable_llamacpp_logs#

デフォルトでオフ llama.cppのネイティブロギングは冗長であるため、モデルロードごとに数百行ため、必要な場合を除き、抑制されます。これは、AIDB自分自身のダウンロード進行状況メッセージを制御する上記のaidb.download_log_level とは別です。 2つは独立しています。

このページの他のパラメーターとは異なり、 aidb.enable_llamacpp_logs はSUSET スーパーユーザー、またはパラメーターでSET が付与されたロールは変更できます。拡張機能の初期化時に1回読み取られます。 SET 、ALTER SYSTEM で設定するか、postgresql.conf の編集とリロードpg_reload_conf() は、Postgresが再起動されるまで有効になりません。

aidb.enable_llamacpp_logs = true
sudo systemctl restart postgresql@16-main

llamacpp_generate およびllamacpp_embeddings モデルにのみ適用されます。Candleベースのモデルbert_local 、clip_local 、t5_local 、llama_instruct_local には影響しません。これを使用する場合については、 Local models — Troubleshooting を参照してください。

ネットワーク下り#

次のパラメーターは、 AIDBからのアウトバウンドHTTPトラフィック、モデルプロバイダーAPIの呼び出しとHuggingFaceからのモデルファイルのダウンロードの両方を制限します。設定しない場合、制限は適用されず、AIDBは任意のホストに到達できます。

Parameter

Type

Default

Description

aidb.egress_allowlist

string

unset

AIDBが到達できるホストおよび/またはCIDRレンジのコンマ区切りリスト。設定すると、リストにない宛先への送信要求は、接続が確立される前に拒否されます。 SUSET.

edb.egress_allowlist

string

unset

拡張機能ごとの`aidb.egress_allowlist`が設定されていない場合に、すべてのEDB拡張機能で使用される共有フォールバックホワイトリスト。 AIDBと他のEDB拡張機能PGFSなどが同じネットワークポリシーを共有する場合に役立ちます。 SUSET.

エントリーフォーマット#

コンマ区切りの各エントリは、次のいずれかです。

Form

Matches

host.example.com

Exact hostname match (case-insensitive).

.example.com

Any subdomain of example.com (doesn't match example.com itself).

203.0.113.10

Exact IPv4 or IPv6 literal in the destination URL.

203.0.113.0/24

IPv4 CIDR range; matches IP literals in that range. Doesn't match hostnames.

2001:db8::/32

IPv6 CIDR range.

エントリの周囲の空白は無視されます。 CIDRエントリはIPリテラルに対してのみチェックされます。ホスト名はマッチングのために解決されません。

解決順序#

アウトバウンド要求ごとに、AIDBは最初にaidb.egress_allowlist をチェックします。設定されていない場合、AIDBはedb.egress_allowlist にフォールバックします。どちらも設定されていない場合、チェックは適用されません。リダイレクトたとえば、CDNホストへのHuggingFaceリダイレクトなどは、同じ許可リストに対して再チェックされます。リストにないホストへのリダイレクトは拒否されます。

例#

OpenAIおよびHuggingFaceとそのCDNへの直接呼び出しのみを許可します。

aidb.egress_allowlist = api.openai.com, huggingface.co, .huggingface.co, cdn-lfs.huggingface.co

要求が拒否されると、AIDBはアクティブなパラメーターを名前付けるエラーを発生させて、オペレーターがリストを調整できるようにします。

!!!note PGFSは、pgfs.egress_allowlist の下で同じ許可リストメカニズムを実装し、PGFSからクラウドオブジェクトストアエンドポイントS3、Google Cloud Storage、Azure Blobへのトラフィックに適用されます。 edb.egress_allowlist は、両方の拡張機能の共有フォールバックです。1つのリストをAIDBとPGFSに一緒に適用するように設定するか、それぞれが異なるポリシーが必要な場合に拡張ごとのパラメーターを使用します。 PGFS — Network egress を参照してください。

AIDBパイプラインが外部ストレージから読み取る場合、両方の許可リストが関連します。AIDBはモデルプロバイダーとHuggingFaceトラフィックを制御し、PGFSはオブジェクトストアへの接続を制御します。 AIDBとPGFSがどのように連携するかについては、 Configuring external storage を参照してください。

aidb.create_model(credentials_env => ...) およびaidb.import_mcp_tools(headers_env => ...) は、資格情報をデータベースに保存する代わりに、呼び出し者が名前付けたPostgresバックエンドプロセス環境変数を読み取ります。次のパラメーターは、この方法で参照できる変数名を制限します。

Parameter

Type

Default

Description

aidb.env_var_allowed_prefix

string

AIDB_

credentials_env/headers_env`を介して読み取られた環境変数名の必須接頭辞。制限を無効にするには、空の文字列に設定します。スーパーユーザーのみが変更できます。 `SUSET.

呼び出し元制御のプロバイダーまたはMCPサーバーURLと組み合わせると、無制限の変数名は、悪意のある構成にPostgresプロセスの環境に存在する無関係のシークレットを読み取らせる可能性があります。このパラメータは、展開ごとにオーバーライド可能なままで、デフォルトでそれを閉じます。 credentials_env については 環境変数からの資格情報 を、 headers_env については MCP tools を参照してください。

インストールの検証#

psqlで\dx を実行し、出力でaidb 、vector 、pgfs インストールされている場合を探すことにより、拡張機能がインストールされていることを確認します。

aidb=# \dx
__OUTPUT__
                                     List of installed extensions
       Name            | Version |   Schema   |                        Description
- ----------------------+---------+------------+------------------------------------------------------------
 aidb                  | 7.6.0   | aidb       | aidb: makes it easy to build AI applications with postgres
 pgfs                  | 3.3.0   | pgfs       | pgfs: enables access to filesystem-like storage locations
 vector                | 0.8.0   | public     | vector data type and ivfflat and hnsw access methods