次の方法で共有


Azure AI 拡張機能のセマンティック 演算子 (プレビュー)

Azure AI 拡張機能には、高度な Generative AI (GenAI) 機能を PostgreSQL SQL に直接統合する画期的な機能である セマンティック オペレーターが導入されています。 これらのオペレーターは、チャットの完了やその他の Azure AI デプロイなどのモデルを利用することで、開発者は GenAI 駆動型アプリケーションをデータベース内に直接構築できます。 これにより、テキストを理解し、推論し、構造化された出力を生成するための新しい機能のロックが解除されます。

主な機能

セマンティック演算子は、生成 AI 機能を使用する 4 つのコア SQL 関数をユーザーに提供します。

  • azure_ai.generate(): 大きな言語モデル (LLM) を使用してテキストまたは構造化された出力を生成します。
  • azure_ai.is_true(): 特定のステートメントが true である可能性を評価します。
  • azure_ai.extract(): テキストから構造化された特徴またはエンティティを抽出します。
  • azure_ai.rank(): 特定のクエリとの関連性に基づいてドキュメントの一覧を再ランク付けします。

各関数は、 azure_ai.set_setting 関数を使用して登録された AI Foundry エンドポイントを介して動作し、シームレスな統合とユーザー制御を保証します。

セマンティック演算子について

Azure AI 拡張機能のセマンティック オペレーターは、PostgreSQL データベース内の複雑な AI 駆動型タスクを直接簡略化するように設計されています。 これらの演算子を使用すると、ユーザーは生成 AI 機能を SQL ワークフローにシームレスに統合でき、高度なテキスト生成、真実の評価、エンティティ抽出、ドキュメントのランク付けが可能になります。 各オペレーターは使いやすさと柔軟性のために最適化されており、開発者は最小限の労力でインテリジェントなアプリケーションを構築できます。

azure_ai.generate()

この演算子は、LLM を使用してテキストまたは構造化された出力を生成します。

次の入力パラメーターがサポートされています。

引数 タイプ 説明
prompt text LLM に送信するユーザー プロンプト。
json_schema (任意) JsonB DEFAULT '' LLM 応答を準拠させる構造化出力の JSON スキーマ。 構造化された出力については、Open AI 表記に従う必要があります。
model (任意) text DEFAULT "gpt-4.1" Azure AI Foundry でのモデル デプロイの名前。
system_prompt (任意) text DEFAULT "You are a helpful assistant." LLM に送信されるシステム プロンプト。

既定では、生成された応答を含む text 値が返されます。 json_schema引数が指定されている場合、出力は、指定されたスキーマに準拠する構造化JsonB オブジェクトとして返されます。

使用例:

SELECT azure_ai.generate(
  'Rewrite the following comment to be more polite: ' comment_text
) AS polite_comment
FROM user_comments;

SELECT review, azure_ai.generate(
    prompt        => 'Rewrite the following comment to be more polite and return the number of products mentioned:' || review,
    json_schema   => '{ 
                        "name": "generate_response", 
                        "description": "Generate a response to the user",
                        "strict": true, 
                        "schema": { 
                          "type": "object", 
                          "properties": { 
                            "comment": { "type": "string" },
                            "num_products": { "type": "integer" } 
                          }, 
                          "required": ["comment", "num_products"],
                          "additionalProperties": false 
                          } 
                        }',
     model  => 'gpt-4.1-mini'
) as polite_comment_with_count 
FROM 
    Reviews;

azure_ai.is_true()

この演算子は、特定のステートメントが true である可能性を評価し、結果が不確定な場合は boolean 値または NULL を返します。

次の入力パラメーターがサポートされています。

引数 タイプ 説明
statement text true または false として評価されるステートメント。
model (任意) text DEFAULT "gpt-4.1" Azure AI Foundry でのモデル デプロイの名前。

使用例:

SELECT azure_ai.is_true(
  'The review talks about the product: '
  product_name
  ' Review: '
  review_text
) AS is_relevant_review
FROM product_reviews;

azure_ai.extract()

この演算子は、ユーザー定義ラベルに基づいてテキストから構造化された特徴またはエンティティを抽出します。

次の入力パラメーターがサポートされています。

引数 タイプ 説明
document text エンティティと特徴を含むドキュメント。
data array[text] ラベルまたは特徴名の配列。各エントリは、入力テキストから抽出される個別のエンティティ型を表します。
model (任意) text DEFAULT "gpt-4.1" Azure AI Foundry でのモデル デプロイの名前。

演算子は、対応するラベルにマップされた抽出されたエンティティを含む JsonB オブジェクトを返します。

使用例:

SELECT azure_ai.extract(
   'The headphones are not great. They have a good design, but the sound quality is poor and the battery life is short.',
   ARRAY[ 'product', 'sentiment']
);

-- Output: {"product": "headphones", "sentiment": "negative"}

SELECT azure_ai.extract(
    'The music quality is good, though the call quality could have been better. The design is sleek, but still slightly heavy for convenient travel.',
    ARRAY[
        'design: string - comma separated list of design features of the product',
        'sound: string - sound quality (e.g., music, call, noise cancellation) of the product',
        'sentiment: number - sentiment score of the review; 1 (lowest) to 5 (highest)'
    ]
);

-- Output: {"sound": "music quality is good, call quality could have been better", "design": "sleek, slightly heavy", "sentiment": 3}

azure_ai.rank()

この演算子は、特定のクエリとの関連性に基づいてドキュメントを再ランク付けします。 これは、クロスエンコーダーと GPT モデルをサポートしています。

次の入力パラメーターがサポートされています。

引数 タイプ 説明
query text 各ドキュメントの関連性を評価およびランク付けするために使用される検索文字列。
document_contents array[text] 再ランク付けするドキュメントの配列。
document_ids (任意) array 入力ドキュメントに対応するドキュメント識別子の配列。
model (任意) text DEFAULT "cohere-rerank-v3.5" Azure AI Foundry でのモデル デプロイの名前。 クロス エンコーダーと GPT ベースの両方のモデルをサポートします。

演算子は、ドキュメント ID、ランク、および関連する関連性スコアを含む table を返します。

使用例:

SELECT azure_ai.rank(
    'Best headphones for travel',
    ARRAY[
        'The headphones are lightweight and foldable, making them easy to carry.',
        'Bad battery life, not so great for long trips.',
        'The sound quality is excellent, with good noise isolation.'
    ]
)

SELECT azure_ai.rank(
  query => 'Clear calling capability that blocks out background noise',
  document_contents => ARRAY[
                        'The product has a great battery life, good design, and decent sound quality.',
                        'These headphones are perfect for long calls and music.',
                        'Best headphones for music lovers. Call quality could have been better.',
                        'The product has a good design, but it is a bit heavy. Not recommended for travel.'
                      ],
  document_ids => ARRAY['Review1', 'Review2', 'Review3', 'Review4'],
  model => 'gpt-4.1'
) AS ranked_reviews;

始め方

PostgreSQL データベースでセマンティック演算子を使用するには、次の手順に従います。

.generate().extract()、および.is_true()演算子のセットアップ

これらのオペレーターはチャット完了モデルをサポートし、既定では gpt-4.1

  1. Azure Database for PostgreSQL フレキシブル サーバー インスタンスでazure_ai拡張機能を有効にします

  2. Azure OpenAI サービス リソースを作成 し、 チャット完了モデル ( gpt-4.1 など) をデプロイします。 または、 Azure AI Foundry によって提供される直感的なエクスペリエンスを使用してモデルをデプロイおよび管理することもできます。

  3. Azure OpenAI エンドポイントの URLAPI キーをメモします。

  4. アクセスの構成:

    azure_ai拡張機能でサブスクリプション キー認証を使用してこのモデルを呼び出せるようにするには、次の SQL コマンドを実行します。

    SELECT azure_ai.set_setting('azure_openai.endpoint', 'https://<endpoint>.openai.azure.com/'); 
    SELECT azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
    

    代わりにマネージド ID を使用する場合は、 この記事 を参照して次の手順を実行してください。

    • Azure Database for PostgreSQL フレキシブル サーバー インスタンスのシステム割り当てマネージド ID を有効にし、サーバーを再起動します。
    • Azure OpenAI リソースと対話するには、マネージド ID に "Cognitive Services OpenAI ユーザー" ロールを割り当てます。
    • azure_openai.auth_typeを "マネージド ID" に設定します。
    • エンドポイント URL で azure_openai.endpoint を設定します。
  5. これで、 .generate().is_true()、および .extract() 演算子を呼び出すように設定されました。

    gpt-4.1での使用例 (既定値):

    SELECT name, azure_ai.generate(
      'Generate a description for the product: ' || name
    ) AS description
    FROM products;
    

    他のモデルでの使用例:

    SELECT name, azure_ai.generate(
      'Generate a description for the product: ' || name , 'gpt-4.1-mini'
    ) AS description
    FROM products;
    

.rank() オペレーターのセットアップ

.rank() オペレーターは、クロス エンコーダーとチャット完了モデルの両方をサポートしており、既定ではクロス エンコーダー Cohere-rerank-v3.5に設定されます。

Cohere-rerank-v3.5クロスエンコーダーの使用:

  1. Azure Database for PostgreSQL インスタンスでazure_ai拡張機能を有効にします

  2. Azure AI Foundry に移動し、サーバーレス API 購入オプションを使用してCohere-rerank-v3.5 モデルをデプロイします。

  3. モデルの エンドポイント キーと Reranker API ルート に注意してください。これは次のようになります: https://<deployment name>.<region>.models.ai.azure.com/<v1 or v2>/rerank

  4. アクセスの構成:

    azure_ai拡張機能でサブスクリプション キー認証を使用してこのモデルを呼び出せるようにするには、次の SQL コマンドを実行します。

    SELECT azure_ai.set_setting('azure_ml.serverless_ranking_endpoint', '<Cohere reranker API>');
    SELECT azure_ai.set_setting('azure_ml.serverless_ranking_endpoint_key', '<API Key>');
    

    代わりにマネージド ID を使用する場合は、 この記事 を参照して次の手順を実行してください。

    • Azure Database for PostgreSQL フレキシブル サーバー インスタンスのシステム割り当てマネージド ID を有効にし、サーバーを再起動します。
    • マネージド ID に "Azure Machine Learning データ サイエンティスト" ロールを割り当てて、Cohere モデルと対話します。
    • azure_ml.auth_typeを "マネージド ID" に設定します。
    • Cohere reranker API を使用して azure_ml.serverless_ranking_endpoint を設定します。
  5. これで、Cohere reranker モデルを使用して .rank() 演算子を呼び出すように設定されました。

    SELECT azure_ai.rank(
      'Best headphones for travel',
      ARRAY[
          'The headphones are lightweight and foldable, making them easy to carry.',
          'Bad battery life, not so great for long trips.',
          'The sound quality is excellent, with good noise isolation.'
      ]
    ) AS ranked_reviews;
    

.rank()などのチャット完了モデルで gpt-4.1 オペレーターを使用するには、Azure OpenAI に目的のモデルをデプロイし、モデルのエンドポイントの詳細を使用してazure_ai拡張機能を構成し、オペレーターを呼び出すときにモデル名を指定します。

SELECT azure_ai.set_setting('azure_openai.endpoint', 'https://<endpoint>.openai.azure.com/'); 
SELECT azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');

SELECT azure_ai.rank(
 'Best headphones for travel',
  ARRAY[
      'The headphones are lightweight and foldable, making them easy to carry.',
      'Bad battery life, not so great for long trips.',
      'The sound quality is excellent, with good noise isolation.'
  ],
  'gpt-4.1'
) AS ranked_reviews;