この記事ではDb2 for LUW v12.1.5で実装されたDb2 SQLを使った生成AI機能を概説しています。下記Blogの抄訳です。
"Db2 LLM Integration: Skip the Middleware. Call the Model from SQL"
https://community.ibm.com/community/user/blogs/shaikh-quader/2026/04/15/db2-llm-integration-how-we-moved-llm-calls-into-sq
LLMを活用したアプリケーションを構築する際、データはデータベースに、モデルは外部プロバイダー上に存在します。
これらを接続することは本来シンプルであるべきですが、実際にはそうではありません。
データベースとモデルの間には、本来なら書きたくもなかったコードが介在することになります。
HTTPクライアント、認証ヘッダー、認証情報の管理、リトライ処理、レスポンスの解析、エラーハンドリング、そしてデータ保護といった要素です。
リクエスト量が増えれば、コネクションプーリングや並行処理の管理といった仕組みも追加しなければなりません。
これらはどれも、アプリケーションそのものの価値を高めるものではありません。
コードの記述に費やす一行一行の時間は、本来アプリケーションに必要なクエリやロジック、機能の開発に充てるべきものです。
これらは単なる「配管(インフラ的なつなぎ込み)」作業に過ぎず、その保守・運用を担わされているのはあなた自身なのです。
もっと良い方法があります。
Db2は統合レイヤーを不要にします
Db2のLLM統合機能は、統合レイヤーを完全に排除します。
言語モデルをデータベースオブジェクトとして一度登録するだけで、その後は他の組み込み関数と同様に、Db2 SQLからそのモデルを呼び出すことができます。
HTTP呼び出し、認証、レスポンスの解析、エラー処理といった一連の処理はDb2が担い、結果はクエリの実行結果として直接返されます。
統合用のコードやミドルウェアは不要です。
デプロイ、監視、保守が必要な新しいサービスも発生しません。
この機能はDb2 for LUW v12.1.5以降で提供されます。
これにより、データとモデルの両方に、同一のDb2 SQLクエリからアクセスできるようになります。
Db2のLLM統合機能は、以下の2種類のプロバイダーをサポートしています。
watsonx.ai:IBMのエンタープライズ向けAIプラットフォーム。専用のプロバイダータイプを通じてネイティブにサポートされています。
OpenAI互換プロバイダー:OpenAI API標準を実装しているLLMプロバイダーや推論エンジン。クラウド、商用製品、オープンソースなど、幅広い選択肢に対応しています。
以前の投稿*1では、最初のパターンとして、watsonx.aiの埋め込み(embedding)モデルを登録し、Db2 SQLのみを使用してセマンティック検索システムを構築する方法を取り上げています。
(*1)関連情報:"Db2 12.1.x EAP: Call Language Models Directly from SQL"(Db2 12.1.x EAP — SQLから直接言語モデルを呼び出す)。
https://community.ibm.com/community/user/blogs/shaikh-quader/2025/11/04/db2-eap-llm-integration
こちらの関連情報の記事では、Db2 SQLを使用してwatsonx.aiの埋め込みモデルを登録し、TO_EMBEDDING関数で埋め込みを生成し(エンベディングもDb2 SQLで可能)、ベクトル類似性検索を実行する手順を解説しています。
Db2 SQLからAmazon Bedrockを呼び出すための3つのステップ
このチュートリアルでは、サポートされているプロバイダーの例としてAmazon Bedrockを使用します。OpenAI互換のプロバイダーであれば、APIキー、モデルID、URLが異なるだけで、同様の3つのステップで利用可能です。
Amazon BedrockのAPIキーを用意してから、Db2 SQLで実際にLLMを呼び出せるようになるまで、以下の3つのステップで進めます。

ステップ 1: Amazon Bedrock API キーの取得
Amazon Bedrock は、多くの LLM プロバイダーが採用している /v1/chat/completions エンドポイント形式を使用した、OpenAI 互換の API を提供しています。
Db2 への Bedrock モデルの登録は、他の OpenAI 互換プロバイダーの場合と同様の手順で行います。
Amazon Bedrock コンソール*2から長期有効な API キーを生成し、すぐにコピーしてください(キーは一度しか表示されません)。
詳細な手順については、「Amazon Bedrock API キーの生成」*3を参照してください。
(*2)https://console.aws.amazon.com/bedrock
(*3)https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-generate.html
Bedrock の OpenAI 互換エンドポイント経由で利用可能なモデルであれば、Db2 の登録パターンで使用できます。
現在のモデルカタログについては、「Amazon Bedrock OpenAI 互換 API」*4を参照してください。
(*4)https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html
執筆時点では、このエンドポイントはテキスト生成モデルをサポートしています。
今後 Bedrock がこのエンドポイントに埋め込み(embedding)モデルを追加した場合でも、Db2から同様の方法で呼び出すことが可能です。
ステップ 2: Db2 へのモデルの登録
Amazon Bedrock の LLM を Db2 に外部モデルとして登録します。
CREATE EXTERNAL MODEL BEDROCK_TEXT_GEN
PROVIDER OPENAI
KEY 'your-aws-bedrock-api-key-here'
ID 'qwen.qwen3-32b'
TYPE TEXT_GENERATION RETURNING CLOB(30000)
URL 'https://bedrock-mantle.us-east-1.api.aws/v1/chat/completions'
留意すべき3つのパラメータは以下の通りです。
PROVIDER OPENAI:Db2に対し、BedrockがサポートするOpenAI互換プロトコルを使用するよう指示します。
ID:Bedrockの /v1/models エンドポイントから取得するモデル識別子です。
URL:BedrockのOpenAI互換エンドポイント用のチャット補完(chat completions)URLです。
登録は一度だけ行えば完了です。それ以降の呼び出しは、単一のSQL関数呼び出しとして実行できます。
ステップ3:Db2 SQLから呼び出す
SQLから、プロンプトを指定して登録済みモデルを呼び出します。
VALUES TEXT_GENERATION('Explain the causes of the 2008 financial crisis' USING BEDROCK_TEXT_GEN)
Db2は、LLMの応答をクエリ結果として返します。
The 2008 financial crisis resulted from a convergence of several factors:
1. Subprime mortgage lending: Banks issued mortgages to borrowers with poor
credit histories, often with adjustable rates that became unaffordable
when they reset.
2. Securitization: These risky mortgages were bundled into complex financial
instruments (MBS, CDOs) and sold to investors globally, spreading the
risk throughout the financial system.
3. Excessive leverage: Financial institutions held far more debt relative to
their capital than was prudent, amplifying losses when asset values fell.
4. Rating agency failures: Credit rating agencies assigned top ratings to
mortgage-backed securities that were far riskier than advertised.
5. Regulatory gaps: Derivatives markets and shadow banking activities
operated with little oversight, allowing systemic risk to accumulate
largely unseen.
When housing prices declined, defaults cascaded through the system,
triggering a global credit freeze and the deepest recession since the 1930s.
1 record(s) selected.
LLMからの完全な応答が、Db2 SQLの「結果セット」として返されます。
HTTPクライアントも、応答の解析も、認証情報の管理も不要です。すべてDb2が処理してくれます。
注:
この例では、仕組みを説明するために静的なプロンプトを使用しています。
プロンプトは、Db2内の既存データから動的に生成することも可能です。
Db2内で完結してRAG(検索拡張生成)用プロンプトを構築できます。
つまり、データベース外のアプリケーションコードを一切使用せず、単一のクエリで、ベクトルストアへのクエリ、関連性の高いドキュメントチャンクの取得、それらのコンテキストとしての組み込み、そしてモデルの呼び出しまでを行うことができます。
クリーンアップ
登録済みモデルが不要になったら、削除(DROP)できます。
DROP EXTERNAL MODEL BEDROCK_TEXT_GEN
統合レイヤー不要がもたらすもの
データとモデルを同一のクエリ内で処理できます。
クエリ実行時に行データを拡張(エンリッチ)し、顧客からのフィードバックの要約、サポートチケットの分類、製品説明の生成などを行います。
データの抽出といった手順を挟むことなく、データが格納されている場所で直接モデルを動作させることが可能です。
TEXT_GENERATION は、Db2 SQLにおいて関数が使用可能なあらゆる場所で利用できます。
クエリ、ビュー、ストアドプロシージャ内で利用可能です。
モデルはアプリケーション側で調整が必要な個別のサービス呼び出しではなく、データレイヤーの一部として組み込まれます。
モデルの切り替えにアプリケーションコードの変更は不要です
異なるプロバイダーの新しいモデルを登録したり、同じプロバイダー内の別のモデルに切り替えたりする場合でも、すべてDb2 SQL上で行われます。
アプリケーションコードを変更する必要はありません。
このパターンはどのプロバイダーでも共通です
本記事ではAmazon Bedrockを例に挙げましたが、「登録・呼び出し・結果取得」という一連の流れは、Db2がサポートするすべてのOpenAI互換プロバイダーに適用されます。
プロバイダーが変わっても、SQLやアプリケーションを変更する必要はありません。
さわってみよう Db2 AIエディション・シリーズのご紹介
過去記事のご紹介
#1から#5まではAIアシスタント機能についてご紹介しています。
#6と#7はモニタリング機能についてご紹介しています。
#8は耐量子暗号化機能についてご紹介しています。
#9は耐量子暗号化機能を含むv12.1.5の新機能についてご紹介しています。
#1では、Db2入門者、初心者には作成が難しいと思われる複雑なSQLをAIアシスタントを使って作成しています。加えて、Db2 Genius Hub概要、無料評価版のダウンロードサイトやマニュアルURLもご紹介しています。#1からお読みいただくことをお勧めいたします。
さわってみよう Db2 AI エディション #1 〜エージェント型AIアシスタント編 Part#1〜
https://qiita.com/ibm_tk/items/e763bbea3fcf5e8a27a9
#2では、AIアシスタントでデータベースの稼働状況のサマリーを表示しています。
さわってみよう Db2 AI エディション #2 〜エージェント型AIアシスタント編 Part#2〜
https://qiita.com/ibm_tk/items/e11986879f6eca23c249
#3では、AIアシスタントでデータベースの応答時間の履歴を表示しています。
さわってみよう Db2 AI エディション #3 〜エージェント型AIアシスタント編 Part#3〜
https://qiita.com/ibm_tk/items/24647bc2db6a3a266d7c
#4では、AIアシスタントでデータベースのバックアップ履歴とプロセッサー利用状況の履歴を表示しています。
さわってみよう Db2 AI エディション #4 〜エージェント型AIアシスタント編 Part#4〜
https://qiita.com/ibm_tk/items/8d11c4e9fd39740d923d
#5では、AIアシスタントでクエリのスループットを表示しています。
さわってみよう Db2 AI エディション #5 〜エージェント型AIアシスタント編 Part#5〜
https://qiita.com/ibm_tk/items/e2583b00f624e351ce02
#6となる"さわってみよう Db2 AIエディション#6 〜モニタリング編 Part#1〜"ではモニタリング機能をご紹介しています。
https://qiita.com/ibm_tk/items/cdedc3a878998199cfee
#7となる"さわってみよう Db2 AIエディション#7 〜モニタリング編 Part#2〜"では監視(モニター)レポート作成機能をご紹介しています。
https://qiita.com/ibm_tk/items/81608900a0e2c89c18fc
#8となる"さわってみよう Db2 AIエディション#8 〜耐量子暗号化機能編 Part#1〜"では耐量子暗号化機能と登場した背景などについて記述しています。
https://qiita.com/ibm_tk/items/57a115c0d284697dd147
#9となる"さわってみよう Db2 AIエディション#9 〜v12.1.5新機能編 Part#1〜"ではv12.1.5の新機能のハイライトをご紹介しています。
https://qiita.com/ibm_tk/items/daabdf8215b430e804d8

