Semantic aliases#
セマンティックエイリアス は、自然言語の説明とペアになった名前付けのパラメーター化SQLクエリーです。説明が埋め込まれているため、スキーマのメタデータと同じように、意味からエイリアスを見つけることができます。エイリアスは、text-to- SQLの再利用可能な管理レイヤーです。質問ごとに新しいSQLを生成する代わりに、繰り返しの質問は、既に作成およびレビューしたクエリに解決されます。
各エイリアスは、 SQLが読み取るスキーマを所有する すべての セマンティックKBのメンバーです。1つだけではなく。 AIDBは、クエリから所有するKBを推論し、そのKBのモデルを使用してKBごとに1回エイリアスの説明を埋め込むため、各埋め込みはそのKBのスキーマベクトルと比較可能なままです。 2つのKBが所有するスキーマは2つのエンベディングを生成し、エイリアスは promoteb.semantic_kb_search() を使用してどちらのKBからでも見つけられます。
!!!note セマンティックエイリアスは、以下のaidb
SQLファンクションで管理および実行されます。 KB
searchファンクションとは異なり、エイリアスファンクションは agent tools として公開されません**
。製品の決定により、エージェントはスキーマを検出および読み取りますが、エイリアス自分自身を作成または実行しません。
エイリアスを作成する#
aidb.create_semantic_alias() は、一意の名前、埋め込む説明、
SQLクエリテキスト、およびそのパラメーター定義を取得します。クエリーのプレースホルダーは${name}
構文を使用します。クエリーは単一の読み取り専用のSELECT
である必要があります。
SELECT aidb.create_semantic_alias(
name => monthly_revenue,
description => Total revenue for a given month and year,
query_text => $$
SELECT SUM(amount) AS total
FROM sales.orders
WHERE EXTRACT(MONTH FROM order_date) = ${month}
AND EXTRACT(YEAR FROM order_date) = ${year}
$$,
params => [
{"name": "month", "param_type": "integer", "description": "Month number (1-12)"},
{"name": "year", "param_type": "integer", "description": "Four-digit year"}
]
);
Parameter |
Type |
Default |
Description |
|---|---|---|---|
name |
text |
— |
一意のエイリアス名。 |
description |
text |
— |
人間が読める説明 — これは検索のために埋め込まれるものです。 |
query_text |
text |
— |
単一の読み取り専用の`SELECT`と、パラメーターの`${name}`プレースホルダー。 |
params |
jsonb |
NULL |
パラメーター定義の配列以下を参照してください。 |
kb_name |
text |
NULL |
オプショナル。エイリアスをこのKBのみに絞り込みます。クエリのスキーマを所有するすべてのKBへの埋め込みを省略します。 |
params JSONB配列の各エントリは次のとおりです。
Field |
Required |
Description |
|---|---|---|
name |
Yes |
`query_text`の`${name}`プレースホルダーと一致します。 |
param_type |
Yes |
PostgreSQLタイプ text、integer、numeric、`date`など。 |
description |
No |
人間が読めるパラメーターの説明。 |
enum_values |
No |
パラメーターがセットにコンストレインされている場合、許可される値。 |
クエリのスキーマが複数のKBにマッピングされている場合、エイリアスはそれぞれに1回埋め込まれます。作成があいまいでも失敗することはありません。
kb_name を渡して単一のKBに絞り込みます。
KBがまだ所有していないスキーマは、それをカバーするKBが作成されるか、後で採用されるまで、エイリアスが埋め込まれないままです。
エイリアスを見つける#
aidb.search_semantic_aliases()
は、自然言語クエリーによってエイリアスを検索します。 kb_name
がないと、 default_semkb —
明示的な名前なしで作成されたときにKBが取得する名前 —
そのKBが存在する場合、またはそれ以外の場合は、保存されたエイリアス埋め込みを持つすべてのKBを検索します。クエリは、これらのKBの間の個別のモデルごとに1回埋め込まれるため、検索はディメンションセーフなままで、結果はエイリアスごとに最も一致するように重複排除されます。
SELECT name, query_text, similarity
FROM aidb.search_semantic_aliases(
query_text => how much money did we make last month,
kb_name => analytics_kb,
top_k => 5
);
Parameter |
Type |
Default |
Description |
|---|---|---|---|
query_text |
text |
— |
自然言語クエリー。 |
min_similarity |
double precision |
NULL |
オプションの類似度フロア。 |
top_k |
int |
10 |
最大の結果。 |
offset |
int |
0 |
ページングオフセット。 |
kb_name |
text |
NULL |
オプショナル。検索をこのKBに絞り込みます。上記の優先順位に従って、`default_semkb`またはエイリアス埋め込みを含むすべてのKBの解決を省略します。 |
name 、query_text 、およびsimilarity
を結果ます。エイリアスはsource_type = 'alias'
の promoteb.semantic_kb_search() 結果にも表示されるため、1つの複合検索で一度にスキーマとエイリアスの両方が検出されます。
エイリアスを実行する#
aidb.execute_semantic_alias()
は、パラメーターを置き換えて、名前でエイリアスを実行します。それぞれがJSONBオブジェクトであるresult
行のセットを結果ます。
SELECT result
FROM aidb.execute_semantic_alias(
alias_name => monthly_revenue,
args => {"month": 3, "year": 2025}
);
Parameter |
Type |
Default |
Description |
|---|---|---|---|
alias_name |
text |
— |
実行するエイリアス。 |
args |
jsonb |
NULL |
名前でキー設定されたパラメーター値のオブジェクト。 |
execute_role |
text |
NULL |
クエリを実行するPostgreSQLロール — 適切な`SET ROLE`付与が必要です。 |
execute_role
を使用して、接続しているユーザーではなく最小権限のレポートロールでエイリアスを実行します。すべてのエイリアスは作成時に単一の読み取り専用のSELECT
として検証され、実行時に再検証されるため、エイリアスを使用して書き込みを実行することはできません。
エイリアスの管理#
Function |
Purpose |
|---|---|
aidb.get_semantic_aliases() |
List all aliases with name, description, query_text, and param_count. |
aidb.get_semantic_alias(alias_name) |
Get one alias's name, description, query_text, and params. |
aidb.update_semantic_alias(name, description, query_text, params, kb_name) |
Update an alias; changing query_text or kb_name re-infers its owning KB(s) and reconciles embeddings — adding KBs it newly belongs to and dropping ones it no longer does. Changing description re-embeds it in every KB it's already in. |
aidb.delete_semantic_alias(name) |
Delete an alias by name. |
KBを削除すると、そのKBの各エイリアスの埋め込みのみが削除されます。エイリアス定義、および他の所有するKBへのその埋め込みは残ります。同じスキーマをカバーする後のKBは、エイリアスが他のKBに既に埋め込まれている場合でも、そのエイリアスを採用し、その新しい埋め込みを追加します。
次のステップ#
エージェントがスキーマ検索とエイリアスをエンドツーエンドの 例 text-to- SQLエージェント ワークフローに組み合わせる方法を確認します。
エイリアスをウォークスルーし、 Examples で一緒に検索します。