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

ナレッジベースの機能とビューのリファレンス。ガイドスタイルのドキュメントについては、
: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_stats
^^^^^^^^^^^^^^^^^^^^^^^^^^

``aidb.kbstat``
としてもアクセスできます。すべてのナレッジベースパイプラインの現在の処理統計を提供します。

:raw-latex:`\d a`gentb.knowledge_base_stats View
“aidb.knowledge_base_stats” 列 \| タイプ \|照合 \| Nullable \|デフォルト
————+———-+———–+———-+— —— 名前 \|テキスト \| \| \|パイプライン \|整数 \|
\| \| <- 埋め込みにアタッチされたパイプラインの数 \| bigint \| \| \|
←これは古い「count(embeddings)」ステータスです。テキスト \| \| \| <–
“aidb.pipeline_metrics”と同じステータスフィールドですが、接続されているすべてのパイプラインの「最悪」ステータスを収集します

例
^^

.. code:: sql

   SELECT * from aidb.kbm;

   __OUTPUT__
                    name                 | pipelines | embeddings |  status
   - -------------------------------------+-----------+------------+----------
    public.pipeline_pipeline__7471a      |         1 |          5 | UpToDate
    public.pipeline_pipeline__7471b      |         1 |          5 | UpToDate
    public.pipeline_animal_facts_kb      |         1 |        372 | UpToDate
    public.pipeline_animal_facts_kb_bert |         1 |        372 | UpToDate
    public.mpkb_shared_vectors           |         2 |          4 | UpToDate
   (5 rows)

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

タイプ
------

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.bulk_embedding()`で手動実行

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

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

promoteb.set_auto_knowledge_base
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

既存のナレッジベースの自動処理モードを更新します。

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

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

  `knowledge_base_name`,TEXT,Required,ナレッジベースの名前。
  `mode`,:ref:`helpb.PipelineAutoProcessingモード<helpb.PipelineAutoProcessingモード>` ,Required,新しい自動処理モード。
  `batch_size`,INTEGER,NULL,バッチごとに処理されたレコードバックグラウンドおよび無効モード。
  `background_sync_interval`,INTERVAL,NULL,ポーリング間隔バックグラウンドモード。

.. _例-1:

例
^^

.. code:: sql

   SELECT aidb.set_auto_knowledge_base(my_kb, Live);
   SELECT aidb.set_auto_knowledge_base(my_kb, Background, background_sync_interval => 1 minute);
   SELECT aidb.set_auto_knowledge_base(my_kb, Disabled, batch_size => 200);

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

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

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

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

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

  `knowledge_base_name`,TEXT,Required,ナレッジベースの名前。
  `query`,TEXT,Required,検索するクエリテキスト。
  `topk`,INTEGER,`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,このソースレコードを処理するパイプラインの名前

.. _例-2:

例
^^

.. code:: sql

   SELECT * FROM aidb.retrieve_key(public.pipeline_animal_facts_kb, birds, topk=>3);

   __OUTPUT__
    key |      distance      | part_ids |  pipeline_name
   - ----+--------------------+----------+-----------------
    5   | 1.1931772046185758 | {0,0}    | animal_facts_kb
    93  | 1.1980633963685476 | {2,0}    | animal_facts_kb
    98  | 1.2150919866080878 | {2,0}    | animal_facts_kb
   (3 rows)

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

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

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

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

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

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

  `knowledge_base_name`,TEXT,Required,ナレッジベースの名前。
  `query_string`,TEXT,Required,検索するクエリテキスト。
  `number_of_results`,INTEGER,`0`,返される結果の数。 `0`の場合、デフォルトの`topk`を使用します。
  `knowledge_base_name`,TEXT,Required,ナレッジベースの名前。
  `query`,TEXT,Required,検索するクエリテキスト。
  `topk`,INTEGER,`1`,返される結果の数。
  `deduplicate`,BOOLEAN,`true`,複数の「部分」チャンク/ページなどが一致する場合でも、各ソースの結果を1回だけ返します

.. _返品-1:

返品
^^^^

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

  `key`,text,ソースレコードキー
  `value`,text,ソーステキストの内容
  `distance`,double precision,クエリーからのベクトル距離
  `part_ids`,bigint[],どの部分つまりパイプラインステップの結果が一致するチャンクまたはページ
  `pipeline_name`,text,このソースレコードを処理するパイプラインの名前
  `intermediate_steps`,jsonb,マッチングは中間ステップからの結果です。つまり、「part_ids」に属する値

.. _例-3:

例
^^

.. 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
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ナレッジベースを削除します。つまり、その宛先ベクトルテーブルとその構成。アタッチされたすべてのパイプラインも削除します。基になるソーステーブルは削除しません。

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

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

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

  `knowledge_base_name`,TEXT,削除するナレッジベースの名前。

.. _例-4:

例
^^

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

ボリュームファンクション
------------------------

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

ナレッジベースデータソースとして使用するために、PGFS格納場所からAIDBボリュームを作成します。最初にPGFSストレージの場所を設定するには、
:ref:`Configuring external storage <Configuring external storage>` を参照してください。

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

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

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

  `name`,TEXT,ボリュームの名前。
  `server_name`,TEXT,PGFS格納場所の名前。
  `path`,TEXT,保存場所内のサブパス。
  `mime_type`,TEXT,データ型 `Text`、`Image`、または`Pdf`。

.. _例-5:

例
^^

.. code:: sql

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

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

promoteb.list_volumes
^^^^^^^^^^^^^^^^^^^^^

データベース内のすべてのAIDBボリュームをリストします。

.. code:: sql

   SELECT * FROM aidb.list_volumes();

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

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

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

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

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

.. 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);
