AI モデルと外部サービスを安全に統合する

完了

SQL Server 2025 では、 T-SQL から直接外部 AI モデルとサービスに接続するためのネイティブ サポートが提供されます。 この統合により、エンタープライズ レベルのセキュリティとコンプライアンスの標準を維持しながら、個別のインフラストラクチャを管理する複雑さが解消されます。

SQL Server を外部 AI サービスに接続する機能は、データベースからデータを移動することなく、 Azure OpenAI のモデル、カスタム ONNX モデル、または REST ベースの AI エンドポイントを使用できることを意味します。 このアプローチでは、データ プラットフォーム内で AI 操作を一元化することで、データのセキュリティを維持し、待機時間を短縮し、アプリケーション アーキテクチャを簡素化します。

REST API を使用して外部 AI モデルに接続する

SQL Server 2025 は、AI サービスとの統合を可能にする sp_invoke_external_rest_endpoint システム ストアド プロシージャ (SQL Server 2022 で導入) に基づいています。 この機能を使用すると、T-SQL から REST API を直接呼び出して、データベース コンテキストを離れることなく 、Azure OpenAIMicrosoft Foundry、カスタム AI エンドポイントなどの AI サービスと統合できます。

AI 推論のために REST エンドポイントを呼び出す

外部 AI サービスを呼び出すための基本的なパターンには、JSON ペイロードの構築と REST エンドポイントへの送信が含まれます。

DECLARE @url NVARCHAR(4000) = N'https://myopenai.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-05-15';
DECLARE @payload NVARCHAR(MAX) = JSON_OBJECT('input': N'SQL Server 2025 AI capabilities');
DECLARE @response NVARCHAR(MAX);
DECLARE @ret INT;

EXEC @ret = sp_invoke_external_rest_endpoint
    @url = @url,
    @method = 'POST',
    @credential = [MyAzureOpenAICredential],
    @payload = @payload,
    @response = @response OUTPUT;

-- Extract the embedding from the response
DECLARE @embedding VECTOR(1536) = JSON_QUERY(@response, '$.result.data[0].embedding');
SELECT @embedding AS generated_embedding;

このコードは、Azure OpenAI の埋め込みエンドポイントにテキスト文字列を送信し、 ベクター 埋め込みを取得します。 sp_invoke_external_rest_endpoint プロシージャは、データベース スコープの資格情報を使用して認証を処理し、HTTP 要求を実行して、応答を JSON として返します。 その後、埋め込みは JSON_QUERY を使用して抽出され、ストレージまたはそれ以上の処理のためにベクター データ型にキャストされます。

データベース資格情報を安全に使用する

外部サービスを安全に呼び出すには、認証情報を格納する データベース スコープの資格情報を 作成します。

-- Create a credential for Azure OpenAI
CREATE DATABASE SCOPED CREDENTIAL [MyAzureOpenAICredential]
WITH IDENTITY = 'HTTPEndpointHeaders',
SECRET = '{"api-key":"your-api-key-here"}';

この資格情報は、API キーを SQL Server 内に安全に格納し、REST エンドポイント呼び出しで参照できます。 資格情報は暗号化され、承認されたユーザーのみがアクセスでき、機密性の高い認証情報がアプリケーション コードで公開されないようにします。

を使用して外部 AI モデルを管理する CREATE EXTERNAL MODEL

SQL Server 2025 では、データベース内で AI モデル定義を直接管理するための新しい構文が導入されています。 CREATE EXTERNAL MODELステートメントを使用すると、一元化された再利用可能な方法で、モデル エンドポイント、認証方法、および目的を定義できます。

外部モデル オブジェクトを定義する

AI サービスの接続の詳細をカプセル化する外部モデル オブジェクトを作成します。

CREATE EXTERNAL MODEL Ada2Embeddings
WITH (
    LOCATION = 'https://myopenai.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-05-15',
    API_FORMAT = 'Azure OpenAI',
    MODEL_TYPE = EMBEDDINGS,
    MODEL = 'text-embedding-ada-002',
    CREDENTIAL = [MyAzureOpenAICredential]
);

これにより、Azure OpenAI 埋め込みモデルを指す Ada2Embeddings という名前の再利用可能なモデル定義が作成されます。 モデルを 1 回定義することで、接続の詳細を繰り返すことなくデータベース全体でモデルを使用できるため、メンテナンスが容易になり、構成エラーのリスクが軽減されます。

外部モデルを使用して埋め込みを生成する

外部モデルが定義されたら、 AI_GENERATE_EMBEDDINGS 関数で使用できます。

DECLARE @text NVARCHAR(MAX) = N'SQL Server 2025 enables AI-powered applications';
DECLARE @embedding VECTOR(1536) = AI_GENERATE_EMBEDDINGS(@text USE MODEL Ada2Embeddings);

INSERT INTO documents (title, content, embedding)
VALUES (N'Getting Started', @text, @embedding);

このコードでは、Ada2Embeddings モデルを使用して指定されたテキストの 埋め込みを 生成し、ドキュメント テーブルに格納します。 AI_GENERATE_EMBEDDINGS関数は、REST 呼び出しと応答の解析の複雑さを抽象化し、埋め込みを生成する単純な SQL ネイティブの方法を提供します。

外部モデルの変更と削除

要件の変更に応じて、外部モデル定義を更新または削除できます。

-- Alter an existing external model
ALTER EXTERNAL MODEL Ada2Embeddings
SET LOCATION = 'https://newendpoint.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-05-15';

-- Drop an external model when no longer needed
DROP EXTERNAL MODEL Ada2Embeddings;

ALTER EXTERNAL MODEL ステートメントを使用すると、依存オブジェクトを再作成せずにモデル構成を更新できます。 モデルが不要になったら、 DROP EXTERNAL MODEL はデータベースから定義をクリーンに削除します。

セキュリティで保護された認証パターンを実装する

外部サービスと統合する場合、SQL Server 2025 には、セキュリティで保護された準拠した AI サービスへのアクセスを確保するための複数の認証メカニズムが用意されています。

Microsoft Entra でマネージド ID を使用する

マネージド ID では、 Azure の ID インフラストラクチャを使用して資格情報を格納する必要がなくなります。 Azure Arc で SQL Server を有効にすると、受信接続と送信接続の両方にマネージド ID を使用できます。

-- Create a credential using managed identity
CREATE DATABASE SCOPED CREDENTIAL [AzureOpenAIManagedIdentity]
WITH IDENTITY = 'Managed Identity';

-- Use the managed identity credential with external models
CREATE EXTERNAL MODEL SecureEmbeddingModel
WITH (
    LOCATION = 'https://myopenai.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-05-15',
    API_FORMAT = 'Azure OpenAI',
    MODEL_TYPE = EMBEDDINGS,
    MODEL = 'text-embedding-ada-002',
    CREDENTIAL = [AzureOpenAIManagedIdentity]
);

この方法では、認証のために SQL Server インスタンスに割り当てられたマネージド ID を使用するため、API キーやパスワードを管理する必要がなくなります。 Azure プラットフォームは、資格情報のローテーションとアクセス管理を処理し、セキュリティ リスクと管理オーバーヘッドを軽減します。

Foundry Tools との統合

SQL Server 2025 は Foundry Tools の完全なスイートと統合されており、データベースから直接 AI シナリオを可能にします。

Azure OpenAI に接続する

Azure OpenAI では、GPT-4、GPT-3.5、埋め込みモデルなどの言語モデルにアクセスできます。 チャット完了呼び出しの場合は、 sp_invoke_external_rest_endpoint を直接使用します。 CREATE EXTERNAL MODEL は、埋め込みエンドポイントのみをサポートします。

-- Use GPT-4 for text generation via REST endpoint
DECLARE @prompt NVARCHAR(MAX) = JSON_OBJECT(
    'messages': JSON_ARRAY(
        JSON_OBJECT('role': 'system', 'content': 'You are a helpful assistant'),
        JSON_OBJECT('role': 'user', 'content': 'Explain vector search in simple terms')
    )
);
DECLARE @response NVARCHAR(MAX);

EXEC sp_invoke_external_rest_endpoint
    @url = N'https://myopenai.openai.azure.com/openai/deployments/gpt-4/chat/completions?api-version=2024-02-15-preview',
    @method = 'POST',
    @credential = [MyAzureOpenAICredential],
    @payload = @prompt,
    @response = @response OUTPUT;

SELECT JSON_VALUE(@response, '$.result.choices[0].message.content') AS ai_response;

この例では、Azure OpenAI チャット完了 API の呼び出しを示します。 応答は JSON 関数を使用して解析され、AI によって生成されたテキストを抽出します。このテキストは、アプリケーション ロジックで使用することも、後で使用するために格納することもできます。

Microsoft Foundry を使用する

Microsoft Foundry は、汎用モデルが提供できる以外の特定のビジネス要件に対応するカスタム AI モデルを構築、トレーニング、デプロイするための包括的なプラットフォームを提供します。 Azure OpenAI では GPT-4 や text-embedding-ada-002 などの事前トレーニング済みモデルにアクセスできますが、Microsoft Foundry では、独自のデータ、業界固有の用語、固有のユース ケースでトレーニングされた特殊なモデルを作成できます。

SQL Server 2025 と Microsoft Foundry の統合により、データ移動や同期を行わずに、ドメイン固有のインテリジェンスをデータに直接取り込めます。 たとえば、カスタム分類モデルをトレーニングして、会社の特定の製品とサービスに基づいてカスタマー サポート チケットを分類したり、業界の言語パターンに合わせて調整された感情分析モデルを作成したりできます。 Microsoft Foundry にデプロイされると、Azure OpenAI に使用するのと同じ CREATE EXTERNAL MODEL 構文を使用して、これらのモデルにアクセスできるようになります。

-- Call a custom classification model deployed in Microsoft Foundry
DECLARE @input_text NVARCHAR(MAX) = N'Customer reports slow query performance in production database';
DECLARE @request NVARCHAR(MAX) = JSON_OBJECT('input': @input_text);
DECLARE @response NVARCHAR(MAX);

EXEC sp_invoke_external_rest_endpoint
    @url = N'https://myaifoundry.cognitiveservices.azure.com/models/classifier/predict?api-version=1.0',
    @method = 'POST',
    @credential = [AzureAIFoundryCredential],
    @payload = @request,
    @response = @response OUTPUT;

-- Extract classification result
SELECT JSON_VALUE(@response, '$.result.category') AS ticket_category,
       JSON_VALUE(@response, '$.result.priority') AS priority_level;

このアプローチを使用すると、特定のビジネス コンテキストを理解する AI 機能を使用しながら、SQL Server でデータの信頼できる 1 つのソースを維持できます。 この利点は、技術的な利便性を超えて拡張されます。SQL Server にデータを保持し、セキュリティで保護された API エンドポイントを介して AI モデルを呼び出すことで、データ ガバナンス、コンプライアンス、アクセス ポリシーを完全に制御できます。 機密性の高いビジネス データがデータベース インフラストラクチャから離れる必要は決してありませんが、独自の要件を理解するためにトレーニングされた AI モデルを適用することもできます。

ONNX モデルをデプロイする

Open Neural Network Exchange (ONNX) は、機械学習モデルを表すオープン標準です。 SQL Server 2025 では ONNX ランタイムがサポートされているため、カスタム モデルをローカルにデプロイできます。

ローカル推論に ONNX ランタイムを使用する

ONNX モデルは、外部依存関係なしで SQL Server 内で直接実行できます。

-- Reference a local ONNX model file
CREATE EXTERNAL MODEL LocalSentimentModel
WITH (
    LOCATION = 'C:\Models\sentiment_analysis',
    API_FORMAT = 'ONNX Runtime',
    MODEL_TYPE = EMBEDDINGS,
    MODEL = 'sentiment-model',
    PARAMETERS = '{"valid":"JSON"}',
    LOCAL_RUNTIME_PATH = 'C:\onnx_runtime\'
);

このアプローチは、待機時間の短い推論が必要な場合、外部ネットワーク呼び出しを回避したい場合、またはデータがインフラストラクチャから離れることを妨げるコンプライアンス要件があるシナリオに適しています。 LOCATIONは model.onnx ファイルと tokenizer.json ファイルを含むディレクトリを指し、LOCAL_RUNTIME_PATHは ONNX ランタイム DLL ファイルを含むディレクトリを指している必要があります。 PARAMETERS プレースホルダーは、SQL Server 2025 で必要です。

セキュリティのベスト プラクティスを適用する

AI サービスを SQL Server と統合する場合は、次のセキュリティ ガイドラインに従ってください。

アクセス許可を使用してアクセスを制御する

外部モデル オブジェクトへのアクセス許可を慎重に付与します。

-- Grant permission to use an external model
GRANT EXECUTE ON EXTERNAL MODEL::Ada2Embeddings TO AIApplicationUser;

-- Revoke permissions when no longer needed
REVOKE EXECUTE ON EXTERNAL MODEL::Ada2Embeddings FROM AIApplicationUser;

これらのステートメントは、特定の外部モデルを使用できるユーザーとロールを制御し、AI 機能に対するきめ細かいアクセス制御を可能にします。

監査と監視を有効にする

コンプライアンスとトラブルシューティングのために AI 操作を追跡します。

-- Create an audit specification for external REST endpoint calls
CREATE SERVER AUDIT SPECIFICATION TrackAIOperations
FOR SERVER AUDIT [MyServerAudit]
ADD (DATABASE_OBJECT_ACCESS_GROUP);

監査では、外部モデルと REST エンドポイントとの対話をすべてキャプチャし、AI の使用パターンを可視化し、コンプライアンス要件をサポートします。

これらのセキュリティで保護された統合パターンを実装することで、企業のセキュリティ、コンプライアンス、ガバナンスの要件を満たす、AI を利用したソリューションを SQL Server 2025 にデプロイできます。