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
46
障害は突然やってくる。OracleDatabaseリカバリコンテスト
nisshii
0
96
SelectAIはSQL講師になれるのか?
nisshii
0
49
スタートダッシュ!オラクルマスター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
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
480
Kiro Crewをはじめよう
kizawa2020
1
150
大型犬好きによるPugの紹介
yamanoku
1
150
その Valkey 使いこなしていますか?
onk
PRO
1
190
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
5.9k
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
2
800
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
4
1.2k
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2.2k
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
170
自分で立ててみるLLMサービス
y_sera15
0
160
遠藤な_めぐろLT #38 「社内のAI活用推進」@麻布台_20261009
endonanana
0
120
WasmをRustにする
sansantech
PRO
0
220
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.3k
What's in a price? How to price your products and services
michaelherold
247
13k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Building Applications with DynamoDB
mza
96
7.2k
Become a Pro
speakerdeck
PRO
31
6.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Raft: Consensus for Rubyists
vanstee
142
7.8k
Rails Girls Zürich Keynote
gr2m
96
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
750
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 ありがとうございました