Knowledge bases#

ナレッジベースは、エンベディングのベクトルインデックス付きストアです。これは、パイプラインに ナレッジベース が含まれる場合に自動的に作成されます。パイプラインはエンベディング生成とインデックス作成を処理し、ナレッジベースは、結果のクエリ可能ストアです。

Page

What it covers

Hybrid search

Combining semantic search with relational filters and BM25 keyword search

Vector extensions

VectorChord and VectorChord-BM25 for high-performance dense and sparse vector search

Examples

End-to-end worked examples for table and volume sources

取得ファンクション#

パイプラインが実行されたら、 aidb.retrieve_text() またはaidb.retrieve_key() を使用してナレッジベースを照会します。どちらもベクトルの類似度を使用して、正確なキーワードではなく意味に基づいて結果を検索し、クエリ入力としてTEXT とBYTEA の両方をサポートしています。

検索ファンクションの流れ#

取得ファンクションが呼び出されると、システムは内部で次の手順を実行します。

  • 埋め込み 入力クエリテキストまたは画像は、そのナレッジベース用に構成された特定の埋め込みモデルを使用してベクトルに変換されます。

  • 類似性検索 ベクトル類似性検索は、ナレッジベースの内部ベクトルテーブルに対して実行され、上位Kの最近傍を見つけます。

  • ソースルックアップテキストのみ retrieve_text の場合、システムはソーステーブルを識別し、一致したキーに対応する生のコンテンツを取得します。

promoteb.retrieve_text()#

このファンクションは、最も近いベクトル一致に関連付けられた実際のソーステキストを取得する必要がある場合に使用します。

  • プロセス ファンクションはクエリーを埋め込み、類似性検索を実行して、第2フェーズを実行して、pipeline_id を使用して元のテーブルからソーステキストをルックアップします。

  • 戻り値 以下を含む列のセット

  • key ソーステーブルの識別子

  • value 実際のソーステキスト

  • distance 類似性スコア。通常、低いほど、より近い一致を示します。

  • part_ids 一致した特定のチャンクまたはパーツを示すIDの配列。

  • pipeline_name データを提供したパイプラインの名前。

  • **intermediate_steps* * ナレッジベースの前に発生するステップからのデータを含むJSONB列。例、ChunkText。

promoteb.retrieve_key()#

このファンクションは、完全なソースコンテンツではなく、一致の一意の識別子のみが必要な高パフォーマンスの検索に使用します。

  • 戻り値 以下を含む列のセット

  • key ソーステーブルからの識別子

  • distance 類似度スコア。通常、低い値は、より近い一致を示します。

  • part_ids 一致した特定のチャンクまたはパーツを示すIDの配列。

  • pipeline_name データを提供したパイプラインの名前。

高度なクエリー 中間ステップの結合#

ChunkTextやParseHtmlなどの中間変換を含むパイプラインの場合、 part_ids 列を使用して取得結果を中間パイプラインテーブルと結合することにより、特定の変換済みセグメントにアクセスできます。

構文の例#

次のクエリは、取得結果を中間ステップテーブルと結合して、特定のチャンク値にアクセスします。

SELECT
    r.key,
    r.value,
    r.distance,
    r.part_ids,
    int_step.value AS chunked_content
FROM aidb.retrieve_text(my_kb, search query, 5) AS r
JOIN pipeline_my_pipeline_step_1 AS int_step
  ON int_step.source_id = r.key
  AND int_step.part_ids = (r.part_ids)[:1];