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
Takayuki Nishio
July 23, 2026
Technology
120
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
12
SELECE ポジティブ社員 FROM OracleAIDatabase26ai
nisshii
0
45
障害は突然やってくる。OracleDatabaseリカバリコンテスト
nisshii
0
94
SelectAIはSQL講師になれるのか?
nisshii
0
48
スタートダッシュ!オラクルマスター23ai
nisshii
0
140
オンプレからADBへのデータ移行。正月休みを獲得した方法 [Oracle]
nisshii
0
410
Oracle CloudWorld 2024現地レポート
nisshii
0
200
SelectAIでSQL研修の演習問題に挑む [Oracle]
nisshii
1
530
Other Decks in Technology
See All in Technology
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
1
120
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
210
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
290
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
540
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
270
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
150
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
310
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
130
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
460
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.4k
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
170
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
0
130
Featured
See All Featured
Scaling GitHub
holman
464
140k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
770
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Navigating Weather and Climate Data
rabernat
0
550
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
570
Optimizing for Happiness
mojombo
378
71k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
420
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
390
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 ありがとうございました