Facebook Twitter
お問い合わせ
TOPICS
更新情報
ホーム > ブログ > AI > 【Oracle Cloud】Oracle AI選手権2025 振り返りレポート「コスト計算も最新技術も! Autonomous AI Databaseに顕現するOCI仙人」

【Oracle Cloud】Oracle AI選手権2025 振り返りレポート「コスト計算も最新技術も! Autonomous AI Databaseに顕現するOCI仙人」

AI
ブログ
Oracle Cloud
2026.01.21

2026/1/21 追記
Oracle AI選手権の動画と、イベントレポートが公開されました。ぜひ併せてご覧ください!

・OracleAI選手権(YouTube)
・【イベントレポート】Oracle AI選手権が開催!企業データ×AIによる、業務効率化や課題解決に挑んだ企業のユニークなアイデアが集結


k.sasakiです。本記事は、Oracle AI 選手権の振り返りのレポートとなります。

はじめに

2025年11月26日、Oracle AI選手権が開催され、Cloudiiは、「コスト計算も最新技術も! Autonomous AI Databaseに顕現するOCI仙人」というタイトルで登壇しました。

slide1
表紙

Oracle AI選手権は、日本オラクルのパートナー企業5社が「Oracle AIで出来ること」をテーマに成果物を発表するコンテスト形式のイベントです。

2018年~2019年にも Autonomous選手権が開催されており、そのAI版という位置付けです。Autonomous選手権には、弊社(当時atomitech)からも大森が参加しております。

・Autonomous選手権に出場してきました

・台風!? 食生活!? 婚活!? ADWCでアレコレ分析してみました! 「Autonomous選手権 ~オープンデータ分析編~」レポート

登壇から2ヶ月ほど経っていますが、イベント後に得た知見を交えつつ振り返っていきます。

OCI仙人の誕生

社内でいくつかテーマを募集して、上位となった以下二つの機能を盛り込むこととなりました。

1 インフラコスト比較 : OCIの価格優位性を訴求
2 最新情報検索 : 情報収集の効率化

slide4
OCI仙人とは

他の生成AIコンテストの事例などをみてみると、〇〇くん など名称をつけてキャラクター化したものが多かったので、
Oracle Cloudに詳しい = 仙人?ということで「OCI仙人」という名前にしました。

slide5
インフラコスト比較

登壇時間が限られていたため、 インフラコスト比較については触れるだけとなりましたが、こちらについては社外公開も含めて現在テストをしている状況です。

slide6
RSSフィード検索

最新情報検索=RSSフィード検索の機能が、私の担当したメインの箇所となります。以降もこの機能について振り返っていきます。

OCI仙人の設計(RSSフィード検索)

まず、確認したのがデータの扱いについてです。RAGなどの用途では主に社内のデータ活用となりますが、今回は社外の情報について扱うため、公開された情報を扱うための指針について調査を行いました。

slide10
データの扱いについて

スクレイピングなどの方式もありましたが、特に利用規約を設けてない情報などもありますし、より広く情報を得るためには、公開や配信が提供機能として見込まれているRSSフィードを活用することがよいと判断し、RSSクライアントで受信したデータをAutonomous AI Databaseに読み込み、検索するという方針としました。

機能としては、記事タイトル+ 冒頭の文章 80文字程度までを1つのベクトルとして、データベースに保存し、記事内容は保存せず、元サイトで閲覧する方式とし、元サイトへのアクセス機会が失われないことに留意した設計としました。

slide12
RSSフィードの制限

広く情報を得るために採用したRSSフィードを使用する方式ですが、アクセス許可や一部クライアント側の問題などで受信できないサイトもあり、このアプローチでは取得したいサイトを全て取得することはできないことが判明しました。

この問題は許容し、Oracle Cloudの技術ブログとしていた対象を拡大し、Oracle Cloudに関連する情報(リリースノートや、動画、Podcast、掲示板)を対象とすることで、データ量を増強することとしました。

OCI仙人の実装(RSSフィード検索)

技術スタックは以下で実装しました。

・フロントエンド Oracle APEX 24.2
・データベース Oracle Autonomous AI Database 26ai
・LLM (ベクトル埋め込み) OCI Gen AI cohere.embed-multilingual-v3.0
・LLM (SQL生成) OCI Gen AI cohere.command-r-plus-08-2024
・RSSフィード管理 Newsboat(OSS)

実装にあたり、APEXの習熟のため色々調べていると、APEX上のギャラリーにVector Saarch のサンプルアプリケーションがあることを発見しました。

slide16
ベクトル検索の実装

最終的にはこのアプリケーションに、OCI仙人の画面を追加する形で、実装を進めることができ、実装期間を大幅に短縮することができました。ただし、APEXのベクトル検索のパーツは、検索結果をブラウザのようにURLをリンクとして表示できなかったので、加工が必要で、ベクトル検索部分のプロセスはPL/SQLで記述しました。以下はベクトル距離を検索しているSQLです。

-- RSSのベクトル検索で類似記事を取得
select
    title,       -- 記事タイトル
    pubdate,     -- 公開日
    url,         -- 記事URL
    dbms_lob.substr(description, 80, 1) as description_short, -- 説明の先頭80文字
    domain,  -- カテゴリ
    categor, -- ドメイン
    embedding_vector <=> l_vector as distance -- ベクトル距離(小さいほど類似)
from rss_view
where embedding_vector is not null
  -- カテゴリで絞り込み(:P1_CATEGORY は「:」区切りの文字列)
  and (
        :P1_CATEGORY is null
        or categor in (
            select column_value
            from table(apex_string.split(:P1_CATEGORY, ':'))
        )
      )
order by distance
fetch first 10 rows only;

slide18
ベクトル検索

今回は、技術ブログなどのタイトル+記事内容の冒頭80文字程度でチャンクを分けず1つのベクトルデータに変換をしていましたが、特に、技術ブログについては、タイトルに端的な情報を詰め込んでいるためか、ベクトル検索が十分に機能しました。

ただし、タイトルが短い技術ブログや、リリースノートは何を指すものか判別できず、意図せず、類似度が高くなってしまい、検索結果にノイズとして紛れ込むことを確認しました。

そもそものデータとして十分ではないものについては、ガイド用の列もベクトル化対象に含んでおき、恒久的にその技術ブログやリリースノートなどについての情報を付与して、再ベクトル化をすることが考えられます。データ量が十分にある場合には、ベクトル検索とキーワードの全文検索を合わせてハイブリット検索とするというアプローチも有効です。

slide17
Select AIの実装

ベクトル検索に加えて追加したのが、Select AIによるNL2SQL機能です。検索結果の部分は、ベクトル検索と同じだったので、ユーザ入力を引数として、dbms_cloud_ai.generateプロシージャでSelect AIを使用しています。Select AI showsql構文だとユーザ入力しか与えられませんが、プロシージャから利用する場合、システムプロンプトのように、ユーザ入力とは別にプロンプトを与えることが可能だったので非常にシンプルなコードとなり、むしろAPEXのフロント部分を作る方が時間がかかりました。


-- ① AIから自然言語プロンプトを渡してSQLを生成(Select AI / showsql)
-- APEXで画面表示用にas区で 列名の指定
l_response := dbms_cloud_ai.generate(
    prompt       => '・RSS_VIEW からデータを出力します。SELECT文を クエリに基づいて作ってください。:' ||
                    :P1_AGT_TEXT ||
                    '。検索結果は最大30件までとし、as で列名の変更が必要なので、このSQLをベースにしてください ' ||
                    'select title as col1, pubdate as col2, url as col3, substr(to_char(description), 1,80) as col4, domain as col5, categor as col6 from rss_view',
    profile_name => 'OCI_SENNIN_AGT',
    action       => 'showsql',
    params       => '{}'
);

-- ② 生成されたSQL文字列(CLOB)を最大4000文字までVARCHAR2に切り出し
l_sql := dbms_lob.substr(l_response, 4000, 1);

-- ③ 結果格納用のAPEXコレクションを初期化
apex_collection.create_or_truncate_collection('AGT_RESULTS');

-- ④ 生成SQLを動的に実行するためのREF CURSORをオープン
open l_cursor for l_sql;

slide19
Select AI

Select AIについても、チュートリアルや、サンプルアプリが提供されており、こちらも数日で動作するところまで進めることができました。非常に少ない実装で、Nl2SQLを実装できて、Select AIの強力さに感動しました。

Oracle AI選手権への参加で得たもの

Oracle AI選手権は、OracleのAIサービスに向き合う良いきっかけになりました。

slide21
まとめ

APEXやOracle のAIサービスに触れる機会というのをなかなか作れずにいたので、今回のイベント参加を通して、いろいろ調査して、実装する中で、それらを活用していく下準備ができたと感じています。OCIチュートリアルや、Qiitaの日本オラクル社員の方々の記事など、わかりやすい情報と併せて、早くて高度な情報に触れる機会が多かったため非常に助かりました。

そして、Select AIを実際に動かしてみて、その機能の素晴らしさと同時に、本番環境で使うことの課題もいくつか確認できました。

例えば、Select AIのみではなく、NL2SQLの一般的な課題として、自然言語からSQLを生成したとして、その正しさをどのように確認するのかというものがあります。今回の実装では、LLMによるチェックなどではなく、シンプルに、自然言語の入力の隣に、生成したSQLを表示欄を設けて、確認できるようにしましたが、この設計の場合、SQLやスキーマ知識がある人しか、正しさを確認できません。

SELECT AI explainによるSQLの内容の解説機能も利用しつつ、より安全に使っていくためには工夫が必要ですし、そのためには NL2SQL一般の知見を活用することが近道だと考えており、もう一段階深くSelect AIを理解するために今後も この分野の知見を深めていきたいと考えています。

【Oracle Cloud】 Select AI Insights #1 ― チュートリアルの先へ:ワークフローとAIプロファイル

おわりに

まだイベントから2ヶ月経っていないですが、さらに Oracle CloudでAIを活用する環境は整っています。

Select AIをお試しで使うためのアプリケーションの登場や、楽しみにしていた GUIのAgent Builderについても先日リリースされました。特に、Agent Factoryはローカル環境でも動作するということで、ぜひ使ってみたいですね。

Try the new Ask Oracle chatbot powered by Select AI

【Select AI】クエリできすぎくんを使ってSelect AIを検証してみた(Part 1)

OCIのノーコード・エージェントビルダー『Agent Factory』がリリース!触ってみた

Oracle AI Database Private Agent Factory を調べてみた


この記事が気に入ったら
「いいね!」

この記事を書いた人


関連コンテンツ

CONTACT お問い合わせ

Cloudiiのサービスやプロダクトについて
興味をお持ちの方は、
お気軽にお問い合わせください。