Configuring AIDB
================

AIDBを使用するには、\ ``shared_preload_libraries``
に追加し、データベースに拡張機能を作成し、インストールを確認します。

shared_preload_librariesの構成
------------------------------

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

.. code:: ini

      shared_preload_libraries = aidb

!!! 노트: `shared_preload_libraries` 에 이미 다른 확장자가 나열되어 있는 경우 쉼표로 구분하여 `aidb` 를 추가하십시오. 순서는 중요하지 않습니다. .. ::
   1. Postgres 다시 시작하십시오.

拡張機能を作成します
--------------------

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

.. code:: sql

      CREATE EXTENSION aidb CASCADE;

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

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

.. code:: sql

      SELECT aidb.bdr_setup();

.. ::
   1. S3 호환 객체 저장소 또는 로컬 파일 시스템 볼륨과 같은 외부 데이터 소스를 사용할 계획이라면 Postgres 파일 시스템(PGFS) 확장 프로그램도 설치하십시오.

.. code:: sql

      CREATE EXTENSION pgfs;

詳細については、 :ref:`PGFS documentation </pg_extensions/pgfs/>` を参照してください。

プロキシ設定
------------

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

.. code:: bash

   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を再起動して変更を有効にします。

.. code:: bash

   sudo systemctl restart postgresql@16-main

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

!!!注 エアギャップ環境は現在サポートされていません。

構成パラメーター
----------------

AIDBは、 ``aidb.*``
名前空間でPostgres構成パラメーターGUCのセットを公開します。
``postgresql.conf`` で設定し、\ ``SET``
とセッションごとに、または\ ``-c``
と接続ごとに設定します。以下のすべてのパラメーターは\ ``USERSET``
です。ロールは自分のセッションでそれらを変更できます。

モデルのダウンロード
^^^^^^^^^^^^^^^^^^^^

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

.. csv-table::
  :header: Parameter,Type,Default,Range,Description
  :widths: 12,8,10,8,16
  :align: left
  :class: longtable

  `aidb.download_log_level`,string,`notice`,—,ルーチンのダウンロード進行状況メッセージダウンロードの開始/完了、バイト進行状況ハートビート、アダプターのロードラインなどの出力チャネルを制御します。有効な値 `notice`、`log`、`off`。以下を参照してください。
  `aidb.download_max_attempts`,integer,`30`,1–500,AIDBが異常終了するまでのファイルごとの最大合計ダウンロード試行初期要求と再試行。再試行動作については、  :ref:`ローカルモデルのダウンロード<ローカルモデルのダウンロード>` を参照してください。

helpb.download_log_level
^^^^^^^^^^^^^^^^^^^^^^^^

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

.. csv-table::
  :header: Value,Behavior
  :widths: 20,25
  :align: left
  :class: longtable

  `notice`,`NOTICE`レベルでメッセージをクライアントに送信します。 `psql`のインタラクティブセッションに役立ちます。
  `log`,メッセージをサーバーログのみに送信します`log_min_messages`の対象。これは、クライアント出力がコールドおよびウォームキャッシュにわたって安定する必要があるバッチジョブとテストに使用します。
  `off`,ルーチンの進行状況メッセージを完全に抑制します。

例

.. code:: sql

   SET aidb.download_log_level = log;

quietb.download_max_attempts
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

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

例

.. code:: sql

   SET aidb.download_max_attempts = 5;

ネットワーク下り
^^^^^^^^^^^^^^^^

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

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `aidb.egress_allowlist`,string,unset,AIDBが到達できるホストおよび/またはCIDRレンジのコンマ区切りリスト。設定すると、リストにない宛先への送信要求は、接続が確立される前に拒否されます。
  `edb.egress_allowlist`,string,unset,拡張機能ごとの`aidb.egress_allowlist`が設定されていない場合に、すべてのEDB拡張機能で使用される共有フォールバックホワイトリスト。 AIDBと他のEDB拡張機能PGFSなどが同じネットワークポリシーを共有する場合に役立ちます。

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

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

.. csv-table::
  :header: Form,Matches
  :widths: 15,25
  :align: left
  :class: longtable

  `host.example.com`,Exact hostname match (case-insensitive).
  `.example.com`,Any subdomain of `example.com` (does not 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. Does not match hostnames.
  `2001:db8::/32`,IPv6 CIDR range.

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

解決順序
^^^^^^^^

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

例
^^

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

.. code:: ini

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

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

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

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

.. ::
   ## 설치 유효성 검사

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

::

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