Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PLSQLをAIオーケストレータに昇華
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takayuki Nishio
July 23, 2026
Technology
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PLSQLをAIオーケストレータに昇華
JPOUG#16で発表した内容になります。
PLSQLでAIを利用するサンプルです。
Takayuki Nishio
July 23, 2026
More Decks by Takayuki Nishio
See All by Takayuki Nishio
ユースケース:お客様アンケート分析システム
nisshii
0
10
SELECE ポジティブ社員 FROM OracleAIDatabase26ai
nisshii
0
41
障害は突然やってくる。OracleDatabaseリカバリコンテスト
nisshii
0
91
SelectAIはSQL講師になれるのか?
nisshii
0
45
スタートダッシュ!オラクルマスター23ai
nisshii
0
130
オンプレからADBへのデータ移行。正月休みを獲得した方法 [Oracle]
nisshii
0
400
Oracle CloudWorld 2024現地レポート
nisshii
0
190
SelectAIでSQL研修の演習問題に挑む [Oracle]
nisshii
1
520
Other Decks in Technology
See All in Technology
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
27
15k
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
4.4k
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
990
Railsのように考える: See through the Master
snoozer05
PRO
4
990
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
160
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.2k
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
0
130
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
500
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
290
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
350
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
840
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
The Pragmatic Product Professional
lauravandoore
37
7.4k
What's in a price? How to price your products and services
michaelherold
247
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
470
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
540
Being A Developer After 40
akosma
91
590k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
Transcript
しゃちほこオラクル倶楽部 第7回 Oracle Cloud 失注への軌跡 ~ 努力は無駄にならない ~ PL/SQL +
AI ~データ処理言語から、AIオーケストレータ―へ昇華~ 2026年7月23日 【JPOUG Tech Talk Night #16】 西尾 孝之 - Takayuki Nishio -
オーガナイザー紹介 | 西尾 孝之 / Takayuki Nishio Oracleと山を愛するエンジニア(23年目) 資格 ・ORACLE
MASTER : Platinum DBA 2019, 12c , 11c , 10g , 9i , 8i ・AWS : Database Speciality , Data Analytics , Machine-Learning 2025 OCI Top Engineers 表彰 認定証 ・マッターホルン登頂…4478m OCI 全資格取得 (2025 IaaS/PaaS) ・モンブラン登頂………4810m ・キリマンジャロ登頂…..5895m
アジェンダ PL/SQLでAIを扱うメリット PL/SQLからAIサービスを呼び出すサンプルコード紹介
PL/SQLでAIを扱うメリット データのある場所でAIを動かす
お客様アンケート分析システム
サンプルアプリケーション(お客様アンケート分析システム) LINEで撮った写真を AI-OCRでテキスト化 センチメント分析で テキストの感情を数値化 AI-OCRで 高精度取り込み テキストはベクトル化して RAG検索 RAG検索
要約 センチメント分析 で感情を数値化
システム構成イメージ ADBのみでLINEを使ったアプリケーションが作成可能。 REST使用のため、APサーバ不要。 本日はPL/SQLとGenAIの部分に着目。 Oracle Cloud Oracle Autonomous AI Database
26ai REST API エンドポイント LINE用 PL/SQL <メイン機能> ・メッセージ受信 ・メッセージ送信 <AI関連機能> ・OCR ・翻訳 ・センチメント分析 ・グラフ表示 他 本日の範囲 OCI Generative AI
PL/SQLからAIサービスを呼び出すサンプルコード紹介 生成AIサービスの利用
今日のゴール 画像データを OCIのDocument Understandingを使ってテキスト化する。 (音声・翻訳等、他のOCI生成AIサービスも同じような方法で呼び出し可能)
PL/SQLから生成AIを呼び出すための流れ ① Autonomous AI Databaseを作成 ② DBユーザ作成と設定 ③ 作成したDBユーザ用のクレデンシャルを作成 ④
テストテーブルの作成と、画像データのロード ⑤ PL/SQLによるOCR処理の実行 Qiitaで全文公開中
① Autonomous AI Databaseを作成 OCI Consoleから ADB 26ai を作成。数分で出来上がります。 Qiita
② DBユーザ作成と設定 データの格納とPL/SQLを呼び出すDBユーザを作成します。 ADBを作成すると、ブラウザで使用できるSQL環境も使用できます。 Qiita
③ DB作成したDBユーザ用のクレデンシャルを作成 Qiita DBから直接生成AIサービスを呼び出すために、クレデンシャルを作成します。 OCIコンソールでAPIキー追加と必要な情報を収集し、SQLで作成。
④ テストテーブルの作成と、画像データロード Qiita テストデータをロードします。これもブラウザから可能です。 PL/SQLからロードしたり、ObjectStorageにあるファイルのロードも可能です。 photo列の写真をOCRして、text列に 文字データを保存する処理を作成
⑤ OCR処理の実行 Qiita PL/SQLコード(OCR機能部分)抜粋 どのAIサービスを呼び出すか AIサービスの呼び出しは、基本的には同じ構造。 -- 1. AIサービスのURIを設定 l_uri
:= 'https://document.aiservice.us-chicago-1'oci.oraclecloud.com/20221109/actions/analyzeDocument'; -- 2. JSONボディの組み立て(CLOB) 呼び出しに使うJSONの組み立て l_body_clob := '{"features": [{"featureType": "TEXT_EXTRACTION"}], "processorType":“GENERAL","isZipOutputEnabled":false,"language":"JPN", "document": {"source": "INLINE", "data": "' || APEX_WEB_SERVICE.BLOB2CLOBBASE64(l_blob) || ‘” , "autoRotate": true}}'; -- 3. CLOB を BLOB に変換(AIサービスへはBLOBで送信する必要がある) DBMS_LOB.CREATETEMPORARY(l_body_blob, FALSE); DBMS_LOB.CONVERTTOBLOB( dest_lob => l_body_blob, src_clob => l_body_clob, amount => DBMS_LOB.LOBMAXSIZE, dest_offset => l_dest_offset, src_offset => l_src_offset, blob_csid => DBMS_LOB.DEFAULT_CSID, lang_context=> l_lang_ctx, warning => l_warning ); -- 4. AIサービスへリクエスト送信 l_response := DBMS_CLOUD.SEND_REQUEST( credential_name => l_credential, method => ‘POST‘, AIサービスのURI と JSON uri body => l_uri, => l_body_blob );
⑤ OCR処理の実行 Qiita PL/SQLコード(OCR機能部分)抜粋 JSONでパラメータ指定できる! が、マニュアルが少ない/みつけにくい -- 1. AIサービスのURIを設定 l_uri
:= 'https://document.aiservice.us-chicago-1'oci.oraclecloud.com/20221109/actions/analyzeDocument'; -- 2. JSONボディの組み立て(CLOB) 日本語を指定 l_body_clob := '{"features": [{"featureType": "TEXT_EXTRACTION"}], "processorType":“GENERAL","isZipOutputEnabled":false,"language":"JPN", "document": {"source": "INLINE", "data": "' || APEX_WEB_SERVICE.BLOB2CLOBBASE64(l_blob) || ‘” , "autoRotate": true}}'; 画像の自動回転 -- 3. CLOB を BLOB に変換(AIサービスへはBLOBで送信する必要がある) DBMS_LOB.CREATETEMPORARY(l_body_blob, FALSE); DBMS_LOB.CONVERTTOBLOB( dest_lob => l_body_blob, src_clob => l_body_clob, amount => DBMS_LOB.LOBMAXSIZE, dest_offset => l_dest_offset, src_offset => l_src_offset, blob_csid => DBMS_LOB.DEFAULT_CSID, lang_context=> l_lang_ctx, warning => l_warning ); -- 4. AIサービスへリクエスト送信 l_response := DBMS_CLOUD.SEND_REQUEST( credential_name => l_credential, method => ‘POST‘, uri body => l_uri, => l_body_blob );
流れのまとめ ① Autonomous AI Databaseを作成 ② DBユーザ作成と設定 ③ 作成したDBユーザ用のクレデンシャルを作成 ④
テストテーブルの作成と、画像データのロード ⑤ PL/SQLによるOCR処理の実行 Qiitaで全文公開中
サンプルコード:ベクトル化 Oracleの特徴!ベクトル化も検索も標準機能。1DBで実現。 業務データと同じテーブルにVECTOR列を作成可能。 データのベクトル化も何でもできるDBMS_VECTOR_CHAINパッケージが最強! dbms_vector_chain.utl_to_embeddings( dbms_vector_chain.utl_to_chunks(dbms_vector_chain.utl_to_text(’ベクトル化’したいデータ’), json('{"max": "400", "overlap": "20",
"language": "JAPANESE", "normalize": "all"}')), json('{"provider": "ocigenai", "credential_name": "VECTOR_CRED", "url": "https://inference.generativeai.ap-osaka1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}') )
セマンティック検索のチューニング 30万件いれると検索で25秒かかるようになった。専用の索引で0.x秒に。 セマンティック検索では、SELECT文のキーワードと索引のキーワードは一致させる。 -- SELECT文 SELECT embed_data FROM t3_chunk_table ORDER
BY vector_distance(embed_vector , acnishi.embeddings(p_question), COSINE) fetch first 3 rows only; 一致させる -- 索引の作成(CREATE INDEX) CREATE VECTOR INDEX idx_vec ON t3_chunk_table (embed_vector) ORGANIZATION INMEMORY NEIGHBOR GRAPH DISTANCE COSINE;
Thank you ありがとうございました