Knowledge bases reference
=========================

ナレッジベースKB機能とビューのリファレンス。ガイドスタイルのドキュメントについては、
:ref:`Knowledge bases reference <Knowledge bases reference>`  を参照してください。

カタログビュー
--------------

helpb.Knowledge_bases
^^^^^^^^^^^^^^^^^^^^^

``aidb.kbs``
としてもアクセスできます。データベース内のすべてのナレッジベースとその完全な構成をリストします。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `id`,integer,内部識別子
  `name`,text,ナレッジベース名
  `vector_schema`,text,エンベディングテーブルのスキーマ
  `vector_table`,text,エンベディングストレージテーブル
  `model_name`,text,使用される埋め込みモデル
  `distance_operator`,:ref:`helpb.DistanceOperator<helpb.DistanceOperator>` ,検索に使用されるベクトル距離ファンクション
  `distance_operator_sql`,text,SQL演算子構文の距離演算子たとえば `<->`、`<=>`
  `vector_data_column`,text,エンベディング列
  `vector_key_column`,text,エンベディングテーブルのキー列
  `vector_index`,jsonb,ベクトルインデックス構成
  `pipeline_ids`,integer[],このナレッジベースに接続されているすべてのパイプラインのID
  `pipeline_names`,text[],このナレッジベースに接続されているすべてのパイプラインの名前

--------------

helpb.Knowledge_base_metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``aidb.kbm``
としてもアクセスできます。各ナレッジベースの集計統計—パイプライン数、埋め込み行数、および最悪のパイプラインステータス。パイプラインごとの進行状況バックログ、エラー、ソース/宛先数については、
:ref:`promoteb.pipeline_metrics <promoteb.pipeline_metrics>` を参照してください。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `name`,text,ナレッジベース名 `schema.vector_table` 。
  `pipelines`,integer,このKBに接続されているパイプラインの数。
  `embeddings`,bigint,ベクタテーブルの行数。
  `status`,text,アタッチされているすべてのパイプラインで最悪のステータス  :ref:`AI pipelines <Pipelines API reference>` を参照してください。

例
^^

.. code:: sql

   SELECT * FROM aidb.kbm;

   __OUTPUT__
                name             | pipelines | embeddings |  status
   - -----------------------------+-----------+------------+----------
    public.product_catalog_kb    |         1 |       1842 | UpToDate
    public.customer_feedback_kb  |         2 |        915 | UpToDate
   (2 rows)

古いビュー名 ``aidb.knowledge_base_stats`` および\ ``aidb.kbstat``
は、下位互換性を保つために\ ``aidb.knowledge_base_metrics``
のエイリアスとして保持されます。

--------------

タイプ
------

helpb.DistanceOperator
^^^^^^^^^^^^^^^^^^^^^^

取得中に使用されるベクトル距離ファンクション。

.. csv-table::
  :header: Value,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `L2`,ユークリッド距離
  `InnerProduct`,内積
  `Cosine`,コサイン類似度
  `L1`,L1距離
  `Hamming`,ハミング距離
  `Jaccard`,Jaccard距離

--------------

helpb.PipelineDataFormat
^^^^^^^^^^^^^^^^^^^^^^^^

パイプラインソースまたはボリュームのデータのフォーマット。

.. csv-table::
  :header: Value,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `Text`,プレーンテキスト
  `Image`,バイナリ画像データ
  `Pdf`,PDFドキュメント

--------------

helpb.PipelineAutoProcessingモード
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ナレッジベースパイプラインの自動処理モード。

.. csv-table::
  :header: Value,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `Live`,データが変更されるたびにPostgresトリガーを介した即時処理
  `Background`,Postgresバックグラウンドワーカーを介した定期処理
  `Disabled`,自動処理なし。 `aidb.run_pipeline()`で手動実行

--------------

ナレッジベース機能
------------------

パイプラインの自動処理モードを変更するには、 :ref:`promoteb.update_pipeline <promoteb.update_pipeline>` 
を使用します。

promoteb.retrieve_key
^^^^^^^^^^^^^^^^^^^^^

ソースデータを取得せずに、上位一致するエンベディングのソースレコードキーと距離を結果ます。
``part_ids``
では、マルチステップパイプラインの各ステップに一致するパーツのIDも結果ます。たとえば、単一のソースレコードが\ ``ChunkText``
ステップによって10の部分に分割されている場合、 ``part_ids``
は、どのチャンクが一致したかを示します。

パラメーター
^^^^^^^^^^^^

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

  `knowledge_base_name`,TEXT,Required,ナレッジベースの名前 `schema.vector_table` 。
  `query`,TEXT or BYTEA,Required,テキストまたは画像のバイトを照会します。エンベディングモデルのデータ形式と一致する必要があります。
  `topk`,INTEGER,`1`,返される結果の数。正の整数である必要があります。`0`または負の値はエラーを発生します。
  `deduplicate`,BOOLEAN,`true`,複数の「部分」チャンク/ページなどが一致する場合でも、各ソースの結果を1回だけ返します。  :ref:`重複排除と中間結果<重複排除と中間結果>` を参照してください。

返品
^^^^

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `key`,text,ソースレコードキー
  `distance`,double precision,クエリーからのベクトル距離
  `part_ids`,bigint[],ソースレコードのどの部分たとえばチャンクまたはページが一致するベクトルを生成した
  `pipeline_name`,text,この行を提供したパイプラインの名前。 KBに複数のパイプラインが接続されている場合に役立ちます。

.. _例-1:

例
^^

.. code:: sql

   SELECT * FROM aidb.retrieve_key(public.customer_feedback_kb, late delivery, topk=>3);

   __OUTPUT__
    key  |      distance      | part_ids |   pipeline_name
   - -----+--------------------+----------+------------------
    1042 | 1.1931772046185758 | {0,0}    | feedback_eu_pipe
    318  | 1.1980633963685476 | {2,0}    | feedback_na_pipe
    1057 | 1.2150919866080878 | {2,0}    | feedback_eu_pipe
   (3 rows)

--------------

helpb.retrieve_text
^^^^^^^^^^^^^^^^^^^

エンベディングテーブルをソーステーブルに結合することにより、上位に一致するエンベディングのソーステキストと距離を結果ます。
``part_ids``
では、マルチステップパイプラインの各ステップに一致するパーツのIDも結果ます。たとえば、単一のソースレコードが\ ``ChunkText``
ステップによって10の部分に分割されている場合、 ``part_ids``
は、どのチャンクが一致したかを示します。戻り列\ ``intermediate_steps``
には、実際の中間ステップ出力が含まれます。

.. _パラメーター-1:

パラメーター
^^^^^^^^^^^^

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

  `knowledge_base_name`,TEXT,Required,ナレッジベースの名前 `schema.vector_table` 。
  `query`,TEXT or BYTEA,Required,テキストまたは画像のバイトを照会します。エンベディングモデルのデータ形式と一致する必要があります。
  `topk`,INTEGER,`1`,返される結果の数。正の整数である必要があります。`0`または負の値はエラーを発生します。
  `deduplicate`,BOOLEAN,`true`,複数の「部分」チャンク/ページなどが一致する場合でも、各ソースの結果を1回だけ返します。  :ref:`重複排除と中間結果<重複排除と中間結果>` を参照してください。

.. _返品-1:

返品
^^^^

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `key`,text,ソースレコードキー
  `value`,text,ソーステキストのコンテンツ。 `NULL` 元のソースコンテンツが非テキストPDFまたは画像などの場合。他の列はまだ表面一致するメタデータです。
  `distance`,double precision,クエリーからのベクトル距離
  `part_ids`,bigint[],ソースレコードのどの部分が一致したのかチャンクまたはページなど
  `pipeline_name`,text,このソースレコードを処理するパイプラインの名前
  `intermediate_steps`,jsonb,マッチングは、`intermediate_destination`で構成されたステップからの結果です。つまり、`part_ids`に属する値。パイプライン内のステップがない場合、中間ストレージが有効になっている場合、空 ` []` 。 :ref:`エンドツーエンドの例 中間ストレージを使用したマルチステップパイプライン<エンドツーエンドの例 中間ストレージを使用したマルチステップパイプライン>` を参照してください。

``intermediate_steps``
は、ステップごとに1つのエントリを含むJSON配列であり、中間ストレージが有効になっており、それぞれの形状は次のとおりです。

.. code:: json

   {"value": "...", "operation": "ChunkText", "step_order": 1, "destination_table": "public.pipeline_my_pipeline_step_1"}

.. _例-2:

例
^^

.. code:: sql

   SELECT * FROM aidb.retrieve_text(my_kb, waterproof jacket, 3);

   __OUTPUT__
     key  |                       value                        |      distance
   - ------+----------------------------------------------------+--------------------
    19337 | Men Stripes Waterproof Shell Jacket                | 0.2994317672742334
    55018 | Women All-Weather Hiking Anorak                    | 0.3804609668507203
   (2 rows)

--------------

promoteb.delete_knowledge_base
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

カスケード
ナレッジベースに接続されているすべてのパイプラインを削除し、ベクターテーブルを削除し、レジストリエントリを削除します。基になるソーステーブルは削除しません。

KBと他のパイプラインのベクトルをそのまま維持しながら、マルチパイプラインKBから単一のパイプラインを削除するには、代わりに :ref:`promoteb.delete_pipeline <promoteb.delete_pipeline>` を使用します。最後に接続されたパイプラインを削除すると、KBがドロップされます。

.. _パラメーター-2:

パラメーター
^^^^^^^^^^^^

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

  `knowledge_base_name`,TEXT,ナレッジベース識別子 `schema.vector_table` 。

.. _例-3:

例
^^

.. code:: sql

   SELECT aidb.delete_knowledge_base(public.customer_feedback_kb);

--------------

ボリューム管理機能
------------------

promoteb.create_volume
^^^^^^^^^^^^^^^^^^^^^^

PGFSストレージ場所からAIDBボリュームを作成します。ボリュームは、格納場所のコンテンツを行として公開する外部テーブルであり、ナレッジベースデータソースとして使用したり、
SQLで直接照会したりできます。最初にPGFSストレージの場所を設定するには、
:ref:`Configuring external storage <Configuring external storage>` を参照してください。

.. _パラメーター-3:

パラメーター
^^^^^^^^^^^^

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

  `name`,TEXT,ボリュームの名前。有効な引用符のないPostgreSQL識別子である必要があります。
  `server_name`,TEXT,PGFS格納場所の名前。
  `path`,TEXT,保存場所内のオプションのサブパス。単一の末尾のスラッシュに正規化されましたたとえば、 `foo`、`/foo`、`foo/`、`/foo/`はすべて`foo/`として保存されます。`NULL`または`/`は`/`として保存されます。
  `data_format`,TEXT,データ形式 `Text`、`Image`、または`Pdf`

.. _例-4:

例
^^

.. code:: sql

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

--------------

helpb.volumes
^^^^^^^^^^^^^

データベース内のすべてのAIDBボリュームをリストするビュー。 ``schema``
、\ ``volume`` 、\ ``storage_location`` 、および\ ``path`` を返します。

.. _例-5:

例
^^

.. code:: sql

   SELECT * FROM aidb.volumes;

--------------

promoteb.delete_volume
^^^^^^^^^^^^^^^^^^^^^^

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

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

.. _パラメーター-4:

パラメーター
^^^^^^^^^^^^

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

  `volume_name`,TEXT,削除するボリュームの名前。

.. _例-6:

例
^^

.. code:: sql

   SELECT aidb.delete_volume(pdf_volume);
