Semantic knowledge bases
========================

セマンティックナレッジベースセマンティックKBは、データベースの
*スキーマ*\ テーブル、ビュー、列、およびそれらのコメントを検索可能なベクターストアにインデックス付けするため、あなたまたは :ref:`Agents reference <Agents reference>` は、正確な名前ではなく意味で適切なリレーションと列を見つけることができます。
。これは、\*\* text-to-
SQL**の基礎です。自然言語の質問を、独自のスキーマに対する正しいSQLクエリーに変換します。

セマンティックKBとベクターナレッジベース
----------------------------------------

セマンティックKBと :ref:`Knowledge bases reference <Knowledge bases reference>` は、どちらもエンベディングを保存し、類似性検索に回答しますが、それらは異なるものにインデックスを付け、異なる問題を解決します。

.. csv-table::
  :header: "",Vector knowledge base,Semantic knowledge base
  :widths: 12,15,15
  :align: left
  :class: longtable

  What it embeds,"Your  **data**  (rows, documents, images)","Your  **schema**  (table, view, and column metadata)"
  What you search,"Content, by meaning","Schema structure, by meaning"
  Created by,`aidb.create_pipeline()` with a  :ref:`AI pipelines <Pipeline steps>` ,`aidb.create_semantic_kb()`
  Typical use,"Retrieval-augmented generation, semantic search","Natural-language schema discovery, agent tools, text-to-SQL"

データベースの *内容*
を検索する場合は、ベクトルナレッジベースを使用してください。
*データベースの形状*
を検索し、質問がマップするテーブルと列を見つけたい場合は、セマンティックKBを使用します。

セマンティックKBインデックスとは
--------------------------------

セマンティックKBはスキーマをクロールすると、構造要素ごとに1つのエントリを埋め込みます。

- **テーブル** は、テーブル定義とテーブルコメントを提供します。

- **ビュー** は、ビュー定義とビューコメントを提供します。

- **Columns**
  は、各列の定義名前、タイプ、NULL可能性、デフォルトおよび列のコメントに貢献します。

各エントリには、\ ``Table`` 、\ ``View`` 、または\ ``Column``
の\ ``entity_type`` があります。コメントは重要です。 ``COMMENT ON``
ステートメントの自然言語インテントは構造定義とともに埋め込まれ、直接照合できるため、適切にコメントされたスキーマは、より有用なセマンティックKBを生成します。

セマンティックKBを作成および管理する
------------------------------------

``aidb.create_semantic_kb()``
を使用して1つ以上のスキーマにセマンティックKBを作成します。渡されたモデルにスキーマメタデータを埋め込み、KBの内部ベクトルテーブルを構築し、すぐにスキーマをクロールします。

.. code:: sql

   SELECT aidb.create_semantic_kb(
       name    => analytics_kb,
       model   => my_embedding_model,
       schemas => ARRAY[sales],
       auto_processing => Live
   );

``model``
は埋め込みモデルであり、常に必要です。セマンティックKBは、すべてのメタデータおよびそのメンバーである :ref:`Semantic aliases <Semantic aliases>` に
**単一の埋め込みモデル**
を使用するため、検索は常に同じ空間内のベクトルを比較します。

管理機能は次のとおりです。

.. csv-table::
  :header: Function,Purpose
  :widths: 10,30
  :align: left
  :class: longtable

  "`aidb.create_semantic_kb(name, model, schemas, auto_processing, bypass_triggers, vector_index)`",Create a KB over one or more schemas. Returns the KB name.
  `aidb.list_semantic_kbs()`,"List every KB with its model, schemas, and processing mode."
  `aidb.refresh_semantic_kb(name)`,Re-crawl the KB's schemas from scratch to pick up structural changes.
  "`aidb.update_semantic_kb_auto_processing(name, auto_processing)`",Change how the KB keeps itself current.
  `aidb.semantic_kb_stats(kb_name)`,"Return entity counts (`total`, `tables`, `views`, `columns`) and the number of `pending` schema changes."
  `aidb.delete_semantic_kb(name)`,Delete a KB and its indexed metadata.

シングルKBのショートカット
^^^^^^^^^^^^^^^^^^^^^^^^^^

セマンティックKBが1つだけ存在する場合、すべてのファンクションから\ ``name``
/``kb_name``
を省略でき、呼び出しはそのKBに解決されます。作成時に名前を省略すると、KBは固定名\ ``default_semkb``
で登録されます。
2番目のKBが存在すると、名前を省略した呼び出しがあいまいエラーで失敗するため、それ以降は名前を明示的に渡します。

KBを最新の状態に保つ
--------------------

``auto_processing``
モードは、スキーマの変更にKBが反応する方法を制御します。

.. csv-table::
  :header: Mode,Behavior
  :widths: 10,30
  :align: left
  :class: longtable

  `Disabled` (default),自動更新はありません。スキーマが変更されたときに`aidb.refresh_semantic_kb()`を呼び出します。
  `Live`,DDLは、スキーマが変更されるとすぐに、影響を受けるリレーションを再クロールします。
  `Background`,バックグラウンドワーカーはキューされたDDLイベントを処理するため、再インデックスは書き込みパス外で発生します。

内部的に、\ ``Background``
モードはAIDBのパイプライン機構によって駆動され、\ ``SemanticKB``
パイプラインステップがキューに入れられたスキーマ変更イベントを消費します。そのパイプラインを自分で作成または管理することはありません。
``aidb.create_semantic_kb()`` が設定します。

セマンティックKBの使用方法
--------------------------

- **直接、 SQLで .** :ref:`Searching a semantic knowledge base <Searching a semantic knowledge base>`  ``aidb.semantic_kb_search()``
  およびその仲間たちを呼び出して、質問がマップするスキーマエンティティを見つけます。

- **エージェントから**
  KB検索機能はネイティブの :ref:`agent tools <Knowledge bases reference>` として登録されているため、AIDBエージェントはスキーマを検出し、
  :ref:`例 text-to- SQLエージェント <例 text-to- SQLエージェント>` で質問に回答できます。

- **保存されたクエリーを介して。**
  繰り返しの質問を :ref:`Semantic aliases <Semantic aliases>` としてキャプチャします。意味によって検索ができる自然言語の説明を含むパラメーター化SQL
  。

このセクションでは
------------------

.. csv-table::
  :header: Page,What it covers
  :widths: 10,30
  :align: left
  :class: longtable

  :ref:`Searching a semantic knowledge base<Searching a semantic knowledge base>` ,"The schema-search functions: `semantic_kb_search`, `get_metadata`, comment search, and filters"
  :ref:`Semantic aliases<Semantic aliases>` ,"Named, parameterized SQL queries with vectorized descriptions, enabling reusable, governed text-to-SQL"
  :ref:`例 text-to- SQLエージェント<例 text-to- SQLエージェント>` ,How an AIDB agent uses the KB's search tools to discover schema and generate correct SQL
  :ref:`Examples<Examples>` ,A worked end-to-end example over a sample schema

関連ドキュメント
----------------

- :ref:`Agents reference <Agents reference>` 
  、ツールとしてセマンティックKB検索機能を呼び出すデータベース内エージェントの構築をカバーします。

- :ref:`Semantic knowledge base tools <Knowledge bases reference>` 
  、KB機能のネイティブツールカタログエントリをリストします。

- :ref:`Knowledge bases reference <Knowledge bases reference>` 
  、データのセマンティックおよびハイブリッド検索のためのベクター知識ベースをカバーします。

.. toctree::
  :maxdepth: 3

  semantic-knowledge-bases--searching
  semantic-knowledge-bases--semantic-aliases
  semantic-knowledge-bases--text-to-sql
  semantic-knowledge-bases--example
