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:`aidb.pipeline_metrics <aidb.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:`Reference → Functions <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:`aidb.update_pipeline <aidb.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,`0`,返される結果の数。 `0`はデフォルトの1を使用します。
  `deduplicate`,BOOLEAN,`true`,複数の「部分」チャンク/ページなどが一致する場合でも、各ソースの結果を1回だけ返します

返品
^^^^

.. 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,`0`,返される結果の数。 `0`はデフォルトの1を使用します。
  `deduplicate`,BOOLEAN,`true`,複数の「部分」チャンク/ページなどが一致する場合でも、各ソースの結果を1回だけ返します

.. _返品-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,マッチングは中間ステップからの結果です。つまり、「part_ids」に属する値

.. _例-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:`aidb.delete_pipeline <aidb.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`` を返します。

.. 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,削除するボリュームの名前。

.. code:: sql

   SELECT aidb.delete_volume(pdf_volume);
