Configuring external storage#

AIDBパイプラインは、2種類のデータソースから読み取ることができます。

  • Postgresテーブル — aidb.create_pipeline() のsource パラメーターを使用して、名前で直接テーブルを参照します。 Creating pipelines を参照してください。

  • 外部ストレージボリューム — S3互換オブジェクトストア、Google Cloud Storage、Azure、またはローカルファイルシステムをPGFSを介して接続します。このページの残りの部分では、これを設定する方法について説明します。

外部ストレージは、 PostgresファイルシステムPGFS拡張機能を介してアクセスされます。これは、外部ストレージを ストレージ場所 としてPostgresにマップします。 AIDBは、各保存場所を名前でパイプライン参照する ボリューム でラップします。

その仕組み#

外部ストレージをAIDBパイプラインに接続することには、2つのオブジェクトが関係します。

  • PGFSストレージ場所 — 外部ストレージプロバイダーのURI、資格情報、および接続オプションを定義します。 pgfs.create_storage_location() で作成されました。

  • AIDBボリューム — PGFSストレージ場所をAIDBに接続します。データ形式Text、Image、Pdfと、保存場所内のオプションのサブパスを指定します。 aidb.create_volume() で作成されました。

ボリュームが存在したら、Postgresテーブル名と同様に、aidb.create_pipeline() のsource として参照します。

!!!注 ストレージの場所を作成する前に、PGFS拡張機能をインストールする必要があります。 Configuring AIDB を参照してください。

ステップ1保存場所を作成する#

pgfs.create_storage_location() を使用して、外部ストレージへの接続を定義します。 uri パラメーターは、ストレージバックエンドとパスを識別します。 options JSONBオブジェクトは、リージョンや資格情報などのプロバイダー固有の設定を保持します。

S3互換オブジェクトストア#

- - Private S3 bucket with credentials
SELECT pgfs.create_storage_location(
    name    => my_s3_location,
    uri     => s3://my-bucket/my-folder,
    options => {"region": "us-east-1", "access_key_id": "<key>", "secret_access_key": "<secret>"}
);

- - Public S3 bucket (no credentials required)
SELECT pgfs.create_storage_location(
    name    => my_public_bucket,
    uri     => s3://aidb-rag-app,
    options => {"region": "eu-central-1", "skip_signature": "true"}
);

ローカルファイルシステム#

ローカルファイルシステムアクセスの場合、保存場所を作成する前にpostgresql.conf で許可されるベースパスを宣言します。 PGFSは、セキュリティのためにこれらのパスへのアクセスを制限します。

#  postgresql.conf

pgfs.allowed_local_fs_paths = /tmp/pgfs

Postgresを再起動した後、file:// URIを使用して保存場所を作成します。

SELECT pgfs.create_storage_location(
    name => local_tmp_pgfs,
    uri  => file:///tmp/pgfs/
);

S3、GCS、およびAzureのストレージ場所オプションの詳細については、 PGFS documentation を参照してください。

ステップ2ボリュームを作成する#

aidb.create_volume() を使用して、PGFS格納場所をAIDBに接続します。ボリュームは、パイプラインとSQLファンクションが参照するものです。

SELECT aidb.create_volume(
    name             => my_volume,
    server => my_s3_location,
    path         => /,
    data_format      => Text
    );

パラメーター

Parameter

Description

name

ボリュームの一意の名前。パイプラインで参照するために使用されます。

storage_location

アタッチするPGFSストレージ場所の名前。

sub_path

格納場所内のオプションのパス。同じバケット内の異なるフォルダーを複数のボリュームでポイントする場合に役立ちます。

data_format

このボリュームのデータの種類。 Text、Image、または`Pdf`のいずれか。パイプラインはこれを使用して、正しい解析ステップを選択します。

!!!注 data_format はメタデータです。オブジェクトを処理する方法をAIDBに指示しますが、フィルタリングはしません。ボリュームには、宣言されたフォーマットのオブジェクトのみが含まれていることを確認します。

例S3のPDF#

SELECT pgfs.create_storage_location(
    pdf_bucket,
    s3://my-docs-bucket,
    options => {"region": "us-east-1", "access_key_id": "<key>", "secret_access_key": "<secret>"}
);

SELECT aidb.create_volume(pdf_volume, pdf_bucket, /, Pdf);

例ローカルディレクトリ内の画像#

SELECT pgfs.create_storage_location(local_tmp_pgfs, file:///tmp/pgfs/);

SELECT aidb.create_volume(ocr_input_volume, local_tmp_pgfs, ocr_input/, Image);

ステップ3ボリュームをパイプラインソースとして使用する#

aidb.create_pipeline() のsource パラメーターをボリューム名に設定します。ボリュームソースは、パイプラインの観点からテーブルソースと同じように動作します。

SELECT aidb.create_pipeline(
    name       => my_pdf_pipeline,
    source     => pdf_volume,
    step_1     => ParsePdf,
    step_2     => ChunkText,
    step_3     => KnowledgeBase,
    step_3_options => aidb.knowledge_base_config(bert_local, Text)
);

完全なウォークスルーについては、 Create a pipeline を参照してください。

ボリュームの管理#

リストと削除#

すべてのボリュームをリストします。

SELECT aidb.list_volumes();

ボリュームを削除します。

SELECT aidb.delete_volume(my_volume);

!!!注 PGFSストレージ場所を削除すると、その上に作成されたすべてのボリュームも削除されます。

ボリュームの内容を検査する#

ボリュームをパイプラインに接続する前に、次の機能を使用して検証します。

- - List all objects in the volume
SELECT * FROM aidb.list_volume_content(my_volume);

- - Read a specific file as BYTEA
SELECT aidb.read_volume_file(my_volume, report.pdf);

- - Read a plain text file as text
SELECT convert_from(
    aidb.read_volume_file(my_volume, notes.txt),
    utf8
);

これらの直接アクセス機能は、パイプラインから独立して、外部ストレージに対するカスタムSQLクエリーを構築するのにも役立ちます。