Text-to-SQL#

Text-to- SQLは、 「前四半期に最も費やした顧客はどこですか?」 などの自然言語の質問を、独自のスキーマに対する正しいクエリーに変換します。セマンティックKBにより、これが信頼できます。テーブル名と列名を推測するのではなく、質問は最初にKBのインデックス付けされたスキーマに基づいています。

2つの補完的なパスが Searching a semantic knowledge base にビルドされます。

  • エージェント駆動。 Agents reference は、関連するスキーマを検出するツールとしてKBの検索機能を呼び出し、 SQLを生成および実行します。オープンエンドの会話型分析に最適です。

  • アプリケーション駆動 アプリケーションは エイリアスを見つける および エイリアスを実行する を呼び出して、確認されたパラメーター化されたクエリーに質問を解決します。決定論的で管理された回答が必要な繰り返しの質問に最適です。

text-to- SQLエンジンとしてのエージェント#

セマンティックKB検索機能は、ネイティブ agent tools として登録されます。これらのツールを与えられたエージェントは、質問がマップするテーブルと列を自分自身で見つけ、それらに基づいてSQLを書くことができます。利用するツール

Tool

Role in text-to-SQL

AI pipelines

One ranked list of the schema entities (and any matching aliases) relevant to the question.

AI pipelines / AI pipelines / AI pipelines

Narrower schema lookups when the agent needs only tables, only columns, or lean definitions.

AI pipelines

Finds entities through the intent captured in COMMENT ON text.

run_sql_query

Runs the read-only SQL the agent generates and returns the rows.

すべての検索ツールは読み取り専用であるため、エージェントは書き込みのリスクなしで自由にスキーマを探索できます。

ワークフロー#

"Which customers        ┌───────────────────────┐
 spent the most   ─────▶│  agent (pg_agent)     │
 last quarter?"         └───────────┬───────────┘
                                    │ 1. discover schema
                                    ▼
                        ┌───────────────────────┐
                        │  semantic_kb_search   │  schema entities
                        │  (+ get_metadata, …)  │  + matching aliases
                        └───────────┬───────────┘
                                    │ 2. generate SQL grounded in the results
                                    ▼
                        ┌───────────────────────┐
                        │  run_sql_query        │  execute read-only SQL
                        └───────────┬───────────┘
                                    ▼
                                answer rows
  1. Discover. エージェントはsemantic_kb_search および必要に応じてより狭いファンクションを呼び出して、質問がマップする正確なテーブル、列、コメントに加えて、既に一致する Semantic aliases を取得します。これらはsource_type = 'alias' で結果に表示されます。

  2. Generate、grounded. エージェントは、取得した定義に対してSQLを書き込みます。実際のスキーマコンテキスト実際の列名、タイプ、コメントに対する生成は、テーブル名のみに対して生成するよりもはるかに正確です。

  3. Run. エージェントはrun_sql_query でSQLを実行し、行を結果ます。

このようなエージェントを構築するには、作成時にセマンティックKBツールを提供します。 Managing agents および tool catalog を参照してください。

代わりにエイリアスに手を伸ばす場合#

エイリアスは、エージェント生成の決定論的な対応物です。 Semantic aliases は、レビューされたパラメーター化されたSELECT であるため、検証する要求ごとの生成なしで信頼できる結果を返します。次の場合にエイリアスを使用します。

  • 同じ質問が繰り返し発生し、1つの正規クエリーに値します。

  • エイリアスが単一の読み取り専用のSELECT として実行され、execute_role を介して最小特権ロールで実行できるガバインド実行が必要です。

エイリアスはsemantic_kb_search 結果内の表面に表示されるため、エージェントは質問にキュレートされたクエリが存在することを 確認 できます。ただし、エイリアスの実行は、aidb.execute_semantic_alias() を介して直接実行されます。エイリアス機能は意図的にエージェントツールではありません。

raw生成との比較#

  • 根拠あり、推測ではありません。 モデルは、関連するリレーションの実際の定義とコメントを参照するため、存在する列を適切なタイプで参照します。

  • 信頼できる回答が発生します。 エイリアスとしてキャプチャしたすべての質問は、生成の必要がなくなった質問であり、モデルが間違ったSQLを生成する可能性のあるサーフェスを縮小します。

  • 構築による読み取り専用。 スキーマ検索ツールとエイリアスはすべて読み取り専用であるため、検出パスと回答パスはデータを変更できません。

次のステップ#