Hybrid search reference
=======================

AIDBは、ハイブリッド検索クエリを構成するためのヘルパーファンクションとメタデータビューを提供します。これらを使用して、モデル名やテーブルパスをハードコーディングせずに、特定のナレッジベースに対するクエリーをエンコードし、取得した結果を再ランク付けし、ナレッジベース構成を検査します。

quietb.kb_query_encode()
------------------------

モデル名を検索する必要なく、特定のナレッジベース用に構成された埋め込みモデルを使用してテキストクエリーをエンコードします。

.. code:: sql

   SELECT aidb.kb_query_encode(public.my_kb_vector, test query);

カスタムベクタークエリを構築するときに、
``aidb.encode_text_query('<model>', '<query>')``
の代わりにこれを使用します。

quietb.rerank_text()
--------------------

候補を取得した後、最終的な関連性の高い結果を得るために再ランキングモデルに渡します。

.. code:: sql

   SELECT aidb.rerank_text(my_reranking_model, query text, ARRAY[result1, result2, ...]);

``nim_reranking`` や\ ``hf_tei_reranking``
などの再ランキングモデルは、取得後の別の後処理ステップとしてサポートされています。

``aidb.knowledge_bases`` view
-----------------------------

``aidb.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,このKBで使用される埋め込みモデル
  `distance_operator`,aidb.distanceoperator,距離メトリックの列挙値
  `distance_operator_sql`,text,SQL演算子構文の距離演算子
  `vector_data_column`,text,エンベディングを格納する列
  `vector_key_column`,text,埋め込みをソース行にリンクする列
  `vector_index`,jsonb,ベクトルインデックス構成
  `pipeline_ids`,integer[],このナレッジベースに接続されているすべてのパイプラインのID
  `pipeline_names`,text[],このナレッジベースに接続されているすべてのパイプラインの名前

.. code:: sql

   SELECT name, vector_schema, vector_table, distance_operator_sql
   FROM aidb.knowledge_bases;
