Examples
========

次の例は、AIパイプラインを使用して大量のナレッジベースKB埋め込みを実行する方法を示しています。各ステージで予想される出力を含みます。これらの例は、標準のPostgresテーブルと外部S3バケットボリュームからのデータの取り込みをカバーしています。

例1 Postgresテーブルからの大量埋め込み
--------------------------------------

このワークフローは、ソースデータがデータベース内に既に保存されている場合に使用されます。

ステップ1AIモデルを初期化する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

テキストエンコード操作をサポートするモデルを登録します。

.. code:: sql

   SELECT aidb.create_model(model__6545, bert_local);
   __OUTPUT__
    create_model 
   - -------------
    model__6545
   (1 row)

ステップ2ソースデータを準備する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

テーブルを作成し、埋め込むレコードを挿入します。

.. code:: sql

   CREATE TABLE source_table__6545 (
       id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
       content TEXT NOT NULL
   );

   INSERT INTO source_table__6545 (id, content)
   VALUES (43941, Catwalk Women Brown Heels),
          (55018, Lakme 3 in 1 Orchid Aqua Shine Lip Color),
          (19337, United Colors of Benetton Men Stripes Black Jacket);

ステップ3パイプラインを定義する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ソーステーブルをナレッジベースの宛先に接続するパイプラインを作成します。

.. code:: sql

   SELECT aidb.create_pipeline(
       name => pipeline__6545,
       source => source_table__6545,
       source_key_column => id,
       source_data_column => content,
       step_1 => KnowledgeBase,
       step_1_options => aidb.knowledge_base_config(
           model => dummy,
           data_format => Text
       )
   );
   __OUTPUT__
   INFO:  Created pipeline "pipeline__6545"
   INFO:  Created knowledge base "public.pipeline_pipeline__6545" for pipeline "pipeline__6545"
                                  create_pipeline                            
   - ----------------------------------------------------------------------
    (pipeline__6545,Table,public,pipeline_pipeline__6545,source_id,value)
   (1 row)

ステップ4実行と確認
^^^^^^^^^^^^^^^^^^^

処理エンジンをトリガーし、生成されたベクトルテーブルを検査します。

.. code:: sql

   SELECT aidb.run_pipeline(pipeline__6545);

   - - View the generated embeddings
   SELECT * FROM pipeline_pipeline__6545 ORDER BY id;
   __OUTPUT__
    id | pipeline_id | source_id | part_ids |     value     
   - ---+-------------+-----------+----------+---------------
     1 |          49 | 43941     | {0}      | [0.1,0.2,0.3]
     2 |          49 | 55018     | {0}      | [0.1,0.2,0.3]
     3 |          49 | 19337     | {0}      | [0.1,0.2,0.3]
   (3 rows)

例2 S3バケットPGFSからの大量埋め込み
------------------------------------

このワークフローは、外部クラウドストレージに保存されている非構造化データに使用されます。

ステップ1外部ストレージとボリュームを構成する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

S3バケットの場所を定義し、AIDBボリュームにマッピングします。

.. code:: sql

   SELECT pgfs.create_storage_location(
       bucket__6545,
       s3://noah-html-test,
       options => {"region": "eu-central-1", "skip_signature": "true"}
   );

   SELECT aidb.create_volume(volume__6545, bucket__6545, /, Text);

ステップ2ボリュームコンテンツをリストする
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

処理可能なファイルを確認します。

.. code:: sql

   SELECT * FROM aidb.list_volume_content(volume__6545);
   __OUTPUT__
       file_name     | size  |      last_modified      
   - -----------------+-------+-------------------------
    Bilge Ince.html  |  8878 | 2025-02-19 09:58:29 UTC
    all_tags.html    | 11170 | 2025-02-19 09:58:29 UTC
    hello_world.html |   108 | 2025-02-19 09:58:30 UTC
    simple.html      |   662 | 2025-02-19 09:58:29 UTC
   (4 rows)

ステップ3ボリュームパイプラインを作成して実行する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: sql

   SELECT aidb.create_pipeline(
       name => volume_pipeline__6545,
       source => volume__6545,
       step_1 => KnowledgeBase,
       step_1_options => aidb.knowledge_base_config(
           model => dummy,
           data_format => Text
       )
   );

   SELECT aidb.run_pipeline(volume_pipeline__6545);

ステップ4埋め込みを検証する
^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: sql

   SELECT source_id, part_ids, value FROM pipeline_volume_pipeline__6545 ORDER BY source_id;
   __OUTPUT__
       source_id     | part_ids |     value     
   - -----------------+----------+---------------
    Bilge Ince.html  | {0}      | [0.1,0.2,0.3]
    all_tags.html    | {0}      | [0.1,0.2,0.3]
    hello_world.html | {0}      | [0.1,0.2,0.3]
    simple.html      | {0}      | [0.1,0.2,0.3]
   (4 rows)
