Creating pipelines
==================

パイプラインは、データがソースから1つ以上の変換ステップを介してAI対応の宛先に移動する方法を定義します。
パイプラインの作成は、データを検索可能にするための最初のステップです。パイプラインがないと、埋め込みを生成したり、ナレッジベースとソースデータの同期を維持したりするプロセスがありません。

``aidb.create_pipeline()``
を使用してパイプラインを定義します。そのパラメーターは4つのグループに分類されます。

.. csv-table::
  :header: Parameter group,Parameters,More information
  :widths: 12,25,15
  :align: left
  :class: longtable

  **Source** ,"`source`, `source_key_column`, `source_data_column`",This page
  **Steps** ,"`step_1` … `step_10`, `step_N_options`",:ref:`Pipeline steps<Pipeline steps>` 
  **Orchestration** ,"`auto_processing`, `background_sync_interval`, `batch_size`",:ref:`Orchestration<Orchestration>` 
  **Destination** ,"`destination`, `destination_key_column`, `destination_data_column`","Set automatically by the `KnowledgeBase` step, or specify explicitly"

テーブルソース
--------------

Postgresテーブルから読み取るには、 ``source``
パラメーターをテーブル名に、\ ``source_key_column``
を一意キー列に、および\ ``source_data_column``
を処理するデータを含む列に設定します。

.. code:: sql

   SELECT aidb.create_pipeline(
       name               => my_pipeline,
       source             => my_table,
       source_key_column  => id,
       source_data_column => content,
       step_1             => KnowledgeBase,
       step_1_options     => aidb.knowledge_base_config(my_model, Text)
   );

ボリュームソースPGFS
--------------------

外部クラウドストレージS3、GCS、またはAzureに保存されているファイルを処理するために、パイプラインは
:ref:`Postgres File System (PGFS) </pg_extensions/pgfs/>`  を使用します。
PGFSは、外部オブジェクトストレージを、パイプラインがファイルをスキャンできるボリュームとしてマウントします。ボリュームの詳細については、
:ref:`Configuring external storage <Configuring external storage>` を参照してください。

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

``pgfs.create_storage_location``
を使用して外部ストレージ接続を定義します。

.. code:: sql

   SELECT pgfs.create_storage_location(
       name     => my_s3_location,
       uri      => s3://my-bucket/my-folder,
       options  => {"region": "us-east-1"}
   );

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

保存場所を参照する :ref:`Configuring external storage <Configuring external storage>` を作成します。パイプラインは、このボリュームをスキャンして、新しいファイルまたは変更されたファイルを見つけます。

.. code:: sql

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

ステップ3ボリュームをパイプラインソースとして参照する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``source`` パラメーターをボリューム名に設定します。

.. code:: sql

   SELECT aidb.create_pipeline(
       name       => my_pdf_pipeline,
       source     => my_volume,
       step_1     => ParsePdf,
       step_2     => KnowledgeBase,
       step_2_options => aidb.knowledge_base_config(my_model, Text)
   );

PGFSの完全なリファレンスについては、 :ref:`PGFS documentation </pg_extensions/pgfs/>` を参照してください。

テーブルソース、パイプラインステップ、取得を組み合わせた完全なチュートリアルについては、
:ref:`Examples <Examples>` を参照してください。
