Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PLSQLをAIオーケストレータに昇華
Search
Takayuki Nishio
July 23, 2026
Technology
59
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
6
SELECE ポジティブ社員 FROM OracleAIDatabase26ai
nisshii
0
35
障害は突然やってくる。OracleDatabaseリカバリコンテスト
nisshii
0
83
SelectAIはSQL講師になれるのか?
nisshii
0
36
スタートダッシュ!オラクルマスター23ai
nisshii
0
130
オンプレからADBへのデータ移行。正月休みを獲得した方法 [Oracle]
nisshii
0
390
Oracle CloudWorld 2024現地レポート
nisshii
0
190
SelectAIでSQL研修の演習問題に挑む [Oracle]
nisshii
1
510
Other Decks in Technology
See All in Technology
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.4k
Model Studio CLI × Token Plan
maigo999
0
190
Bits AI を制するものは Datadog を制す / The player that controls Bits AI, controls Datadog
kaminashi
0
110
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
340
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
170
Genie Codeハンズオン応用編
taka_aki
0
110
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
0
360
私がブラウザを自作したくなった理由
supurazako
1
250
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
3
24k
SmartHR Engineering Team Deck
smarthr
1
2.3k
事業価値と Engineering 2026年度版
recruitengineers
PRO
50
24k
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
490
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
How to train your dragon (web standard)
notwaldorf
97
6.8k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
570
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
470
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
240
Color Theory Basics | Prateek | Gurzu
gurzu
0
420
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
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 ありがとうございました