Searching a semantic knowledge base#

セマンティックKBがスキーマをクロールしたら、自然言語クエリで検索します。 KBは、スキーマのインデックス付けに使用したものと同じモデルでクエリを埋め込み、メタデータがクエリに最も近いテーブル、ビュー、および列を結果ます。すべての検索ファンクションは、KB名をkb_name として取得します。これは、KBが1つだけ存在する場合に省略できます。

スキーマメタデータファンクション#

より狭いニーズの場合、4つのファンクションはスキーマメタデータのみを検索します。これらは同じオプショナルのkb_name およびsimilarity スコアコサイン類似度、高いほど近いを共有し、min_similarity はオプショナルのフロアとして、ページング用にはtop_k / offset を使用します。

promoteb.get_metadata()#

これは最も広範なスキーマ検索であり、完全なメタデータとともに列、テーブル、およびビューを結果ます。

SELECT schema_name, relation_name, column_name, entity_type, similarity
FROM aidb.get_metadata(
    kb_name    => analytics_kb,
    query_text => customer email address,
    top_k      => 10
);

パラメーター kb_name 、 query_text 、 min_similarity 、 top_k デフォルト10 、offset デフォルト0 。 schema_name 、relation_name 、column_name 、entity_type 、definition 、comment 、definition_vector 、およびsimilarity を返します。

promoteb.get_entity_Definitions()#

テーブルとビュー のみに一致します。

SELECT schema_name, relation_name, entity_type, similarity
FROM aidb.get_entity_definitions(
    kb_name      => analytics_kb,
    query_text   => orders and line items,
    entity_types => ARRAY[Table, View]
);

パラメーター kb_name 、query_text 、min_similarity 、entity_types デフォルトARRAY['Table','View'] 、top_k 、offset 。 schema_name 、relation_name 、entity_type 、definition 、comment 、similarity を返します。

promoteb.get_column_definings()#

一致する列とテーブルの 定義 、最もリーンな結果のみを返します、 SQL生成のコンパクトな基礎として役立ちます。

SELECT definition
FROM aidb.get_column_definitions(
    kb_name    => analytics_kb,
    query_text => order total amount
);

パラメーター kb_name 、query_text 、min_similarity 、top_k 、offset 単一のdefinition 列を結果ます。

promoteb.search_by_comment()#

スキーマ、テーブル、列に添付された自然言語COMMENT ON テキストのみと一致します。

SELECT relation_name, column_name, comment, similarity
FROM aidb.search_by_comment(
    kb_name    => analytics_kb,
    query_text => order status values
);

パラメーター kb_name 、query_text 、min_similarity 、top_k 、offset schema_name 、relation_name 、column_name 、entity_type 、definition 、comment 、similarity を返します。

これは、スキーマに既に書き込んだドキュメントを活用する最も直接的な方法です。たとえば、 「order lifecycle state: pending、confirmed、shiped、delivered、Cancelled」 とコメントされた列は、列自分自身の名前がst であっても、 「order statusvalues」 のようなクエリーに表示されます。コメント検索は十分に文書化されたオブジェクトに依存しているため、 COMMENT ON ステートメントを最新の状態に保つことが、セマンティックKBの結果を向上させる最も効果的な方法です。

チューニング結果#

  • ``min_similarity`` は、再現率を犠牲にして精度を高めます。クエリが何も返さない場合、それを下げますたとえば 0.3 。結果が広範すぎる場合に上げます。

  • ``top_k`` / ``offset`` 結果をページスルーします。

  • ``entity_types`` 特定のフィールドをハンティングしているときに、ARRAY['Column'] などの関心のある種類に絞り込みます。

次のステップ#

  • よくある質問を Semantic aliases を使用して、再利用可能なパラメーター化クエリーとして保存します。

  • 例 text-to- SQLエージェント ワークフローでエージェントにこれらの検索をエンドツーエンドで駆動させます。