Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MySQL HeatWave GenAIの使い所 / ChugokuDB Mysql Heat...

MySQL HeatWave GenAIの使い所 / ChugokuDB Mysql HeatWave GenAI

2025年9月13日(土)に開催された「第35回 中国地方DB勉強会 in 岡山」での発表資料です。
https://dbstudychugoku.connpass.com/event/360688/

MySQL HeatWave GenAIの概要と、簡単に使えるユースケースについて解説しています。

Avatar for YoshiakiYamasaki

YoshiakiYamasaki

September 13, 2025
Tweet

More Decks by YoshiakiYamasaki

Other Decks in Technology

Transcript

  1. MySQL HeatWave GenAIの使い所 中国地⽅DB勉強会 in 岡⼭ ⼭﨑 由章 / Yoshiaki

    YAMASAKI MySQL HeatWave Data Architect ⽇本オラクル株式会社
  2. 1. MySQL HeatWave 概要 2. MySQL HeatWave GenAI 3. MySQL

    HeatWave GenAI の使い所 (簡単に使えるユースケース) アジェンダ
  3. Copyright © 2025, Oracle and/or its affiliates 4 Transactional クラウド版MySQL

    Enterprise Edition Analytics ⼤規模データ分析を ⼤幅に⾼速化 Lakehouse オブジェクト・ ストレージとの統合 AutoML 機械学習の パイプラインを⾃動化 GenAI 専⾨知識なしで ⽣成AIを活⽤ インメモリー⾼速分散処理エンジン
  4. Copyright © 2025, Oracle and/or its affiliates 5 Transactional クラウド版MySQL

    Enterprise Edition 安価なMySQL マネージドサービス Analytics ⼤規模データ分析を ⼤幅に⾼速化 MySQLのままDWHとし て使⽤可能 Lakehouse オブジェクト・ ストレージとの統合 MySQLの外にある データも簡単に分析 対象に AutoML 機械学習の パイプラインを⾃動化 MySQL内のデータを SQLだけで機械学習に 活⽤可能 GenAI 専⾨知識なしで ⽣成AIを活⽤ SQLだけでLLMを活⽤ し、RAGも容易に構築 インメモリー⾼速分散処理エンジン
  5. MySQL HeatWave の特徴(MySQLのマネージドサービスとしての特徴) Copyright © 2025, Oracle and/or its affiliates

    6 MySQL開発ベンダーであるオラクル社からのサポートも受けられる ⾼性能かつコストパフォーマンスも⾼いフルマネージドデータベース︕︕ MDSでは⾼パフォーマンスなブロック・ボリュームを標準採⽤ (ブロック・ボリュームのIOPS︓75 IOPS/GB) ⾼性能 同等スペック(CPU、Memory)で⽐較すると、 他社製のMySQLマネージドサービスの1/2〜1/3程度 低価格 オラクルのMySQLチームが100%開発、運⽤、サポート MySQL部分についてもコアなサポートを受けられる MySQL開発 ベンダーが提供
  6. ⽼舗のブログサービス「Seesaaブログ」をAWSからOCIに移⾏し、約50%の劇的なコスト削減を実現 顧客事例︓ファンコミュニケーションズ様 Copyright © 2025, Oracle and/or its affiliates 7

    Seesaaブログ • 2003年にサービス開始。⽇記やアフィリエイト、まとめブログなど 様々なブログライフをサポート。200万⼈以上のユーザーが利⽤ 従来の課題 • 既存のAWS環境のコスト削減の必要性があった • VMのサイズが柔軟に選択できず、CPUコア数とメモリサイズが アンバランスで過剰なリソースコストを⽀払っていた 採⽤ポイントと導⼊効果 • 既存AWS環境と⽐較して、約50%のコスト削減ができた • OCIのフレキシブル・シェイプのVMはCPUコア数とメモリサイズに 対してシンデレラフィットの設定が可能で、サーバ利⽤全体にて、 必要な性能に関して適切なコストで利⽤できるようになった • コスト削減フレームワークの利⽤により、AWSユーザー観点での 移⾏アセスメントなど、Oracleメンバーの適切な⽀援を 気軽に得られた。また、Oracleから提供される MySQLのQ&Aサポートは安⼼感があり有益だった • OCI Cache with Redisでは、既存利⽤のAmazon ElastiCache for Redisから約25%のコスト削減効果があった システム構成イメージ 利⽤サービス(クラウドサービス/その他) • Compute VM, Block Volume, HeatWave MySQL, OCI Cache with Redis, OCI Registry (Container Registry), etc. • コスト削減フレームワーク HeatWave MySQL
  7. 「ドクセル」 を、OCI Container Instancesを活⽤してGoogle Cloudから移⾏し、圧倒的なコスト削減を実現 顧客事例︓アプルーシッド様 Copyright © 2025, Oracle

    and/or its affiliates 8 ドクセル(Docswell) • PDFやパワーポイントのスライドを共有できる国産のスライド シェアサービス。ユーザー約30万⼈、⽉間アクセス約600万回。 従来の課題 既存のGoogle Cloud環境のコスト削減の必要性があった (特に、アウトバウンドのデータ転送のコスト)。 ユーザーアクセス時にコンテナが都度起動する スピンアップの仕組みにより、時に遅延が発⽣していた。 採⽤ポイントと導⼊効果 既存Google Cloud環境から移⾏し、特にデータ転送 が毎⽉10TB無料の利点を享受し、全体で約65%のコスト削 減を実現。HeatWave MySQL の⾼可⽤性構成の部分は、 要件を実現しつつ約50%のコスト削減を実現。 OCI Container Instancesを活⽤し、Kubernetesを利⽤せず に既存のコンテナアプケーションをシームレスに移⾏できた。 コスト⾯で有利なContainer Instancesを必要個数、 常時起動しておくことで、スピンアップの仕組みにする必要が 無くなった。結果、遅延のない安定的な処理を実現。 複数のコンテナ間の疎結合な処理にOCI Queueを活⽤。 システム構成イメージ 利⽤サービス(クラウドサービス/その他) • OCI Container Instances • OCI Registry • HeatWave MySQL • OCI Queue • OCI Cache • コスト削減フレームワーク (Oracleによる移⾏アセスメント⽀援) HeatWave MySQL
  8. ⼤量データの集計処理などをHeatWave Nodeで⾼速に処理 MySQL HeatWaveのアーキテクチャ • アプリケーションからは従来通りMySQLに対してSQLを実⾏するだけで⾼速化される MySQL Database Service 分析

    クエリ 結果 セット MySQL コンパイラ & オプティマイザー 分析クエリ 最適化 Insert/ Update OLTPクエリ 最適化 リアルタイム 更新 InnoDB ストレージエンジン MySQL クエリ実⾏ HeatWave Node インメモリデータ管理 分析クエリ実⾏ 分析ジョブスケジューラ 結果 クエリ プッシュダウン 並列化 Object Storage リロード Copyright © 2025, Oracle and/or its affiliates 9
  9. MySQL HeatWaveで国内最⼤級の電⼦書籍配信サービス「コミックシーモア」でのデータ利活⽤を強化 システム構成イメージ 利⽤サービス・製品 • HeatWave MySQL お客様のコメント 顧客事例︓NTTソルマーレ 様

    10 「『HeatWave』の導⼊によりサービス基盤とデータ分析基盤のリア ルタイムなデータ同期が実現できました。さらにこれまで 通常のMySQLで1.5時間程度かかっていたバッチ処理が 2秒程度で完了するなど性能の良さも実感しています。 処理を待つ思考停⽌の時間が短縮化され、 業務効率化にもつながっています。 MySQLに対応したツールは『HeatWave』でもそのまま活⽤でき、 ユーザーの利便性を維持しながら様々な分析データを更なる サービス向上に役⽴てることができています。 『HeatWave』を利⽤した新たなデータ分析基盤を活⽤し、 今後も更に幅広いお客様に楽しんでいただける書籍配信サービス を提供していきます。」 エヌ・ティ・ティ・ソルマーレ株式会社 電⼦書籍事業部 サービス開発グループ ⽊下 ⽒ HeatWaveによる データ分析基盤 コミックシーモアの サービス基盤 レプリケーション リアルタイム同期 Copyright © 2025, Oracle and/or its affiliates
  10. MySQL HeatWave Lakehouse導⼊事例 NTTソルマーレ様 オブジェクト・ストレージの売上や キャンペーンのデータと MySQL HeatWave上の トランザクション・データを統合して分析 マーケティング・キャンペーンの強化と

    新たなビジネス機会発⾒の 改善に成功 MySQL HeatWave Lakehouseの 利⽤には追加費⽤は発⽣しないため より多くの社員による分析基盤の 今後の活⽤に期待 11 Copyright © 2025, Oracle and/or its affiliates https://www.oracle.com/customers/ntt-solmare/
  11. 機械学習を活⽤した品質管理で⽣産性を最⼤20%向上し、品質指標を30%改善 企業・システム概要 • 現地企業との合弁にて、⽇本国内でも販売されている ブランドの飲料や栄養補助⾷品を現地⽣産 • 当該国内のみならず周辺国向けにも製造販売 • ロボットによる⾃動化を実現した⼯場にて、 IoTデバイスからのデータをMySQLサーバーに集約

    従来の課題 • 装置の故障による計画外停⽌の対応コスト⾼ • 製造製品の不良による廃棄の増加と品質管理の課題 • 当該国は⽀払い遅延のリスクが全般的に⾼く、債務 不履⾏が発⽣する可能性の⾼い取引先の判別が重要 採⽤ポイントと導⼊効果 • 製造装置の故障を予測し⽣産性を10-20%向上。設備 総合効率(Overall equipment effectiveness)を改善 • 取引先の財務状況などを分析することで、 不良債権の発⽣を最⼤25%抑制 MySQL HeatWave AutoML活⽤シナリオ • MySQL HeatWave AutoMLの「回帰」により、 製造装置の各種パラメータやセンサーのデータが 許容範囲の閾値を超えるかを予測 • PoCではメンテナンスの必要性や 品質問題の発⽣を80%の精度で予測 • MySQL HeatWave AutoMLの「説明」により、 製造不良が発⽣する原因の特定や分析を⽀援 • MySQL HeatWave AutoMLの「分類」により、 債権問題が発⽣しうる取引先を抽出 • PoCでは不良債権の発⽣を98%の精度で予測 利⽤サービス(クラウドサービス/その他) • MySQL HeatWave AutoML HeatWave AutoML 顧客事例︓⽇本の医薬品および⾷品製造の⼤⼿企業の海外法⼈ Copyright © 2025, Oracle and/or its affiliates 12
  12. MySQL HeatWave GenAI ⽣成AI & Vector Store 15 Copyright ©

    2025, Oracle and/or its affiliates MySQL HeatWave AutoML Autopilot GenAI Vector Store OLTP Analytics
  13. Comprehensive AI services, data platform, and AI infrastructure 17 Copyright

    © 2025, Oracle and/or its affiliates Apps and Agents AI Platform and Services Infrastructure Distributed Cloud Fusion Applications NetSuite & Industry Apps Embedded Agents Document Understanding Vision Language Speech Digital Assistant GenAI Code Assist Public Dedicated Sovereign Alloy Government Supercluster with RDMA networking Compute GPU: Bare metal, VMs, Kubernetes Block, Object, File Storage, HPC filesystems Data AI Partners, LLMs & ISVs Oracle 23AI Data Science & Quick Actions Oracle Autonomous Database OCI GenAI Agents Non-Embedded Agents MySQL HeatWave Search with OpenSearch Database with PostgreSQL Cache
  14. MySQL HeatWaveのAI関連の取り組み状況 • DBのデータやオブジェクト・ストレージ上の ⾮構造化データを機械学習、LLM, RAGの対象に • ベクトル埋め込みの⽣成やLLMの利⽤、機械学習の アルゴリズム選定や訓練などのプロセスを⾃動化 •

    ⾃然⾔語でのセマンティック検索を可能とする ベクトル・ストアとベクトル・サーチをサポート • 内蔵のLLMまたは外部のAIサービスを 要件に応じて選択して最適化 • OCIではOCI⽣成AIサービスと連携可能 • MySQL HeatWaveの利⽤者は 追加費⽤なしで利⽤可能 18 Copyright © 2025, Oracle and/or its affiliates ベクトル・ストア、LLM, OCI ⽣成AIサービス、RAGをサポート
  15. MySQL HeatWave GenAIのLLM(⼤規模⾔語モデル)は選択可能 MySQL HeatWave内蔵のLLM • MySQL HeatWave内でネイティブに動作 • 相対的に⼩規模なLLMを利⽤:

    • テキスト⽣成⽤: - llama3.2-3b-instruct-v1 - llama3.2-1b-instruct-v1 - llama3.1-8b-instruct-v1 - mistral-7b-instruct-v1 • ベクトル埋め込み⽣成⽤ - multilingual-e5-small - all_minilm_l12_v2 (minilm) • セキュア、低コスト、追加リソース不要 • HeatWaveノードの⼩型のシェイプ HeatWave.Free およびHeatWave.32GB は llama3.2-3b-instruct- v1 とllama3.2-1b-instruct-v1 のみサポート OCIの⽣成AIサービスで提供のLLM • より⼤規模でGPU上で動作するモデルを利⽤ • 9.3.2からは利⽤可能なLLMを⾃動的に列挙 • HeatWaveのバージョンアップなしで 最新のモデルを利⽤可能に • 利⽤可能なモデルの⼀覧取得 SELECT * FROM sys.ML_SUPPORTED_LLMS; • ⾼精度、⾼性能 • リージョン別の利⽤可能なモデルや最新のリストは OCI⽣成AIサービスのマニュアルを参照 https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/home.htm 19 Copyright © 2025, Oracle and/or its affiliates https://dev.mysql.com/doc/heatwave/en/mys-hw-genai-supported-models.html
  16. 導⼊検討が進む検索拡張⽣成(RAG) 企業が⽣み出すデータをビジネスの価値に Non-RAG構成 LLMはインターネットに公開されているテキストデータを学習した モデルのため、インターネットに公開されていないドキュメント(主に 企業内のドキュメント、専⾨分野のドキュメント)についての質問 には正確な回答を⽣成することができない。 RAG構成 ⼤規模⾔語モデルが学習していない知識を、 ベクトル・ストアに保持したドキュメントデータで補完し、

    回答を⽣成 21 Copyright © 2025, Oracle and/or its affiliates LLM Internet 学習 〇〇とは何ですか︖ 〇〇︖ワカラナイ ベクトル ストア LLM Internet 学習 〇〇とは何ですか︖ 〇〇とは、、、、 連携(ベクトル検索) ⼤規模⾔語モデルの知識のみで回答(テキスト⽣成) ⼤規模⾔語モデルとベクトルデータベースの合わせ技で回答
  17. RAG利⽤の流れ 22 Copyright © 2025, Oracle and/or its affiliates ベクトル

    ストア テキスト ⽣成モデル ②プロンプトテキストで ベクトル検索 チャンク ③ベクトル検索結果、類似度の⾼いチャンクテキストと プロンプトテキストをLLMに⼊⼒ ④返答テキストを⽣成 ①ドキュメントをチャンク分割、 ベクトル化しベクトルストアへロード Top4 prompt Completion [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] prompt [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] [1.1, 2.9, 3.14]
  18. ユースケース1: パーソナライズされた推奨事項 23 Copyright © 2025, Oracle and/or its affiliates

    質問 解答 ユーザーが質問を⼊⼒ LLMがパーソナライズされたおすすめ料理を ⾃然⾔語で回答 HeatWave AutoMLのレコメンデーション・システムが ユーザーの注⽂履歴を元にレストランを提案 ベクトル・ストアに格納されている提案されたレストランの メニューからおすすめの料理を選択 「今⽇のおすすめの ベジタリアン向け料理はなに︖」 「おすすめの料理は次の通りです。 ⾖腐カレー、⾖腐ビリヤニ、 ひよこ⾖のカレー」 ユーザー メニュー メニュー メニュー HeatWave ベクトル・ストア オブジェクト・ストレージ
  19. ユースケース2: 予測メンテナンス 24 Copyright © 2025, Oracle and/or its affiliates

    HeatWave AutoMLがログから異常を検出しフィルタリング 問題と対策のナレッジベースのログ オブジェクト・ストレージ 本番環境 「このログの主な問題点はなに︖ 2つの⽂章にまとめて」 「このログにおける主な問題は 特定のプロセス(ID 8145)による メモリ使⽤量があらかじめ定義された 閾値を継続的に超過していることです」 質問 解答 ユーザー ユーザーが質問を⼊⼒ ⾃然⾔語での回答を得る ログ ベクトルストアがログの異常に関するコンテキストを追加し、 LLMに対するプロンプトに情報を追加する LLMが情報が追加されたプロンプト(Augmented Prompt)を元にレポートを⽣成 HeatWave ベクトル・ストア 本番環境のログがリアルタイムで HeatWave AutoMLの処理対象となる HeatWaveベクトルストア経由でLLMが ナレッジベースのデータにアクセスできる
  20. MySQL HeatWaveでの ベクトル・ストア 25 Copyright © 2025, Oracle and/or its

    affiliates MySQL HeatWave AutoML Autopilot GenAI Vector Store OLTP Analytics
  21. 「ベクトル値」を利⽤して類似情報の検索を容易に Copyright © 2025, Oracle and/or its affiliates 27 id

    vector Text 1 [0.8, 0.5, 1.6, -2.5, …] “It was the best of times, it was the worst of times, it was..” 2 [1.1, 0.3, 0.6, -1.3, …] “It is a truth universally acknowledged, that a single man..” 3 [1.3, 0.1, 0.2, -1.1, …] “It was a bright cold day in April, and the clocks were striking..” … … … id vector Image 1 [0.5, 1.5, 2.6, -1.1, …] 2 [1.0, 0.9, 1.6, -1.3, …] 3 [0.6, 1.1, 1.3, -0.9, …] … … … ⽂章 画像 ⽂章をベクトル値に 変換し格納 画像をベクトル値に 変換し格納
  22. MySQL 9.0 Innovation Release ベクトルの類似度を演算するHeatWaveのみで利⽤可能なDISTANCE関数 • 2つのベクトルを引数とする • 第3引数には距離の演算⽅法を指定 COSINE,

    DOT, EUCLIDEAN ベクトルと⽂字列の相互の変換関数 ベクトル(VECTOR)データ型と関数 Copyright © 2025, Oracle and/or its affiliates 28 mysqlsh > SELECT DISTANCE(STRING_TO_VECTOR("[1.01231, 2.0123123, 3.0123123, 4.01231231]"), STRING_TO_VECTOR("[1, 2, 3, 4]"), "COSINE"); +-----------------------------------------------------------------------------------------------------------------------+ | DISTANCE(STRING_TO_VECTOR("[1.01231, 2.0123123, 3.0123123, 4.01231231]"), STRING_TO_VECTOR("[1, 2, 3, 4]"), "COSINE") | +-----------------------------------------------------------------------------------------------------------------------+ | 0.0000016689300537109375 | +-----------------------------------------------------------------------------------------------------------------------+ mysqlsh > SELECT STRING_TO_VECTOR("[1.05, -17.8, 32]"); +---------------------------------------+ | STRING_TO_VECTOR("[1.05, -17.8, 32]") | +---------------------------------------+ | 0x6666863F66668EC100000042 | +---------------------------------------+ 1 row in set (0.00 sec) mysqlsh > SELECT VECTOR_TO_STRING(0x00000040000040400000A0400000E040); +------------------------------------------------------+ | VECTOR_TO_STRING(0x00000040000040400000A0400000E040) | +------------------------------------------------------+ | [2.00000e+00,3.00000e+00,5.00000e+00,7.00000e+00] | +------------------------------------------------------+ 1 row in set (0.00 sec)
  23. ベクトル埋め込み作成のためのルーチン ML_EMBED_ROW関数: 1件のデータの対してエンべディングを⽣成する ML_EMBED_TABLEプロシージャー: テーブルのデータに対してエンべディングを⽣成する • 第⼀引数: ベクトル化対象のデータが格納された列 • 第⼆引数:

    ベクトル埋め込みを格納する列 • 対象のテーブルが存在しない場合は、 「元テーブルの主キー+ベクトルデータ型」の テーブルが⾃動的に作成される 29 Copyright © 2025, Oracle and/or its affiliates MySQL HeatWave内のテキストデータに対して、簡単にエンべディングを⽣成可能 mysqlsh > SELECT sys.ML_EMBED_ROW('⽝', JSON_OBJECT('model_id', 'multilingual-e5-small')) INTO @v1; Query OK, 1 row affected (0.64 sec) mysqlsh > SELECT sys.ML_EMBED_ROW('猫', JSON_OBJECT('model_id', 'multilingual-e5-small')) INTO @v2; Query OK, 1 row affected (0.57 sec) mysql> SELECT DISTANCE(@v1, @v2, 'COSINE'); +------------------------------+ | DISTANCE(@v1, @v2, 'COSINE') | +------------------------------+ | 0.10679465532302856 | +------------------------------+ 1 row in set (0.00 sec) mysqlsh > CALL sys.ML_EMBED_TABLE(‘db01.reviews.comment', ‘db01.reviews_vec.comment_vec', JSON_OBJECT('model_id', 'multilingual-e5-small')); Query OK, 0 rows affected (1.27 sec)
  24. MySQL Shell for VS Code – MySQL HeatWave Chat 30

    Copyright © 2025, Oracle and/or its affiliates MySQL HeatWave Chat Lakehouse Navigator グローバル検索と詳細検索 ⾃然⾔語を使ってチャット形式でLLMと対話可能 ⽂脈が保持され、フォローアップの質問による会話を 可能にする LLM がデータベース、MySQL HeatWave Lakehouse, HeatWave Vector Store全体または 特定のデータ・セットから情報を取得できるように ガイドし、速度と精度を向上させる 全てのベクトル・ストアを検索することも、 特定のスキーマに検索範囲を限定することも可能
  25. mysqlsh > DESC `RAG_test`.`HeatWave_ja_doc`; +-------------------+---------------+------+-----+---------+-------+ | Field | Type |

    Null | Key | Default | Extra | +-------------------+---------------+------+-----+---------+-------+ | document_name | varchar(1024) | NO | | NULL | | | metadata | json | NO | | NULL | | | document_id | int unsigned | NO | PRI | NULL | | | segment_number | int unsigned | NO | PRI | NULL | | | segment | varchar(1024) | NO | | NULL | | | segment_embedding | vector(384) | NO | | NULL | | +-------------------+---------------+------+-----+---------+-------+ RAGのためのベクトル埋め込みの⽣成 • ベクトル埋め込みの⽣成の進捗が表⽰される • ロード済みドキュメントの再ロードやアンロードも可能 • ベクトル埋め込みが格納されているテーブルの定義 • アップロードされたドキュメントのメタデータや ドキュメントを分割したセグメントの ベクトル埋め込みを格納 MySQL Shell for VS Code - Lakehouse Navigator Copyright © 2025, Oracle and/or its affiliates 32
  26. document_name: https://objectstorage.us-chicago- 1.oraclecloud.com/n/idazzjlcjqzj/b/bucket-20241125- 1945/o/HeatWave_PR.docx metadata: { "TITLE": "", "SOURCE": "Microsoft

    Office Word", "COMPANY": "", "KEYWORD": "", "SUBJECT": "", <略> "LASTSAVEDBY": "Ryusuke Kajiyama", "CREATIONDATE": " 11/25/2024 14:56:00", "LASTSAVEDATE": "11/25/2024 14:58:00", "PRIMARYAUTHOR": "Ryusuke Kajiyama", "REVISIONNUMBER": "2", "USERDEFINEDPROP": "MSIP_Label_3c76ce46-357f-46de-88d6- 77b9bbb83c46_ContentBits 0", "COUNTCHARSWITHSPACES": "5849" } segment: ベクトル・ストアの作成とベクトル処理のベンチマーク PDF、PPT、WORD、HTML形式のドキュメントのベクトル・ストアの作成は、Amazon BedrockのKnowledge baseを使⽤する場合と⽐較して、HeatWave GenAIを使⽤すると最⼤23倍速く、コストは4分の1になります。 1.6GBから300GBのサイズのテーブルに対する様々な類似検索クエリを使⽤したサードパーティ・ベンチマークで実 証されたように、HeatWave GenAIはSnowflakeより30倍⾼速でコストは25%削減され、Databricksよ り15倍⾼速でコストは85%削減され、Google BigQueryより18倍⾼速でコストは60%削減されます。 embedding: [1.00200e-02,-9.13479e-03,-3.69700e-02,-1.06737e- 02,2.55649e-02,-5.62598e-02,3.64135e-02,7.52265e-02,3.79956e-02,- 1.37684e-02,4.32041e-02,7.74046e-03,7.84678e-02,3.38508e-02,-1.98059e- 02,6.20408e-02,3.44924e-02,-5.85962e-02,-4.80669e-02,-2.94210e- 02,2.18502e-02,-1.33754e-02,-6.01970e-02,2.98551e-02,5.98533e- 02,7.20425e-02,-2.66657e-02,2.48639e-02,3.74166e-02,-4.72570e-02,- 5.92472e-02,-6.74163e-02,8.72355e-02,-4.54183e-02,6.70901e-02,9.89798e- 03,-1.70986e-02,-3.06104e-03,6.57276e-02,-9.53107e-02,-5.37361e- 02,2.24137e-02,1.84493e-02,5.42278e-02,4.01875e-03,8.33606e-02,-6.25437e- 03,8.57158e-02,-7.97270e-02,1.60378e-02,2.08244e-02,8.79194e-02, <略> HeatWaveのイン・データベースLLMが⽣成したベクトル埋め込みの格納先 • 各⾏にドキュメントの⼀部である セグメント単位でのベクトル埋め込みを格納 • 格納されている情報 • ドキュメントがアップロードされたバケットのURL • ドキュメントのメタデータ • セグメントの⽂字列 • セグメントのベクトル埋め込み ※画⾯右の例はVECTOR_TO_STRING()関数で VECTORデータ型の値を⽂字列に変換 • ML_EMBED_TABLE()ストアド・プロシージャ • セグメントの⽂字列が格納された列から ベクトル埋め込みを⽣成し別の列に格納可能 RAGテーブルの例 Copyright © 2025, Oracle and/or its affiliates 33
  27. モデル: cohere.command-r-plus, オプションの設定はなし RAGなしの場合 → そもそもの製品としての情報が誤っているほか、 OCIでのcohere.command-r-plusは HeatWave GenAIリリース前の2024年6⽉に 提供開始となっているため情報が不⾜している

    RAGありの場合 HeatWave GenAIの⽇本語プレスリリース、 製品ページ(oracle.com/jp/heatwave/genai/)の 機能⼀覧とよくある質問、およびプレゼンテーションを 情報源として追加 → 今回のケースでは、上記のうち機能⼀覧とプレスリリースを利 ⽤し回答を⽣成 RAGの有無での精度の違い - 「HeatWave GenAIの主な機能は︖」への回答 Copyright © 2025, Oracle and/or its affiliates 35 HeatWave GenAIは、Oracle Autonomous Databaseの主要なコンポーネントであり、機械学習 ワークロードを⾼速化するために設計されています。その 主な機能は、機械学習アルゴリムの⾼速処理と、デー タベース クエリのリアルタイム処理を可能にする、イン メ モリー処理です。 HeatWave GenAIの主な機能は、データベース内の ⼤規模⾔語モデル(LLM)、OCI⽣成AIと Amazon Bedrockとの統合、データベース内ベクト ル・ストア、組み込みの⾃動⽣成、スケールアウト・ベ クトルの処理などです。
  28. OCI⽣成AIエージェント・サービス AIエージェント構築を素早く、安全に⾏うための、 包括的なエージェント開発プラットフォーム シンプルなAIエージェントの開発 市場投⼊までの時間を⼤幅に短縮 Copyright © 2025, Oracle and/or

    its affiliates 37 Tools Agent Core AIエージェントの”ブレイン” 様々なツールをオーケストレーション 事前準備済み SQL tool RAG tool カスタム Functions API Calling エージェントが外部情報を取得するためのツール OCI Generative AI Agents プログラム ⾮構造データ 構造データ 外部プログラム&サービス API API プログラム 事前準備されたツールを提供 お客様の使い⽅に合わせて柔軟にカスタマイズ Oracle Database, MySQL HeatWaveに対応 お客様のデータをすぐにAIエージェントと活⽤ ⽇本ではOCIの⼤阪リージョンで利⽤可能
  29. OCI⽣成AIエージェントのナレッジ・ベースとしてのMySQL HeatWave OCI⽣成AIエージェントのRAGツールにて MySQL HeatWaveに格納されたベクトル埋め込みを利⽤ • MySQL HeatWaveのデータを活⽤して ⽂脈に応じたより適切な回答を⾃然⾔語で対応 ナレッジ・ベース作成時に「データ・ストア・タイプ」として

    「データベースAIベクトル検索」選択 • データベースの接続情報を管理する OCIのデータベース・ツールを経由して接続 • OCI⽣成AIエージェントとMySQL HeatWaveは 別のリージョンや別のテナンシーに配置することも可能 • OCI⽣成AIエージェントとデータベース・ツールは 同⼀リージョンに作成すること 要件および利⽤時のポイント MySQL HeatWaveには所定の形式のテーブルと ベクトル検索の結果を返すストアド・プロシージャが必要 ナレッジ・ベース⽤のテーブル定義 ※ Lakehouse Navigatorが作成するRAGテーブルとは 定義が⼤きく異なるので注意 38 Copyright © 2025, Oracle and/or its affiliates 列名 データ DOCID レコードまたはドキュメントのID BODY エージェントが検索対象とするコンテンツ⽂字列 VECTOR BODY列のコンテンツから⽣成されたベクトル埋め込み CHUNKID コンテンツが512トークンを越える場合はそのチャンク (オプション) URL コンテンツのURL (オプション) TITLE コンテンツのタイトル(オプション) PAGE_NUMBERS コンテンツのページ番号(オプション)
  30. ECサイトを例に MySQL HeatWaveが解決する多様なデータ活⽤の課題 Copyright © 2025, Oracle and/or its affiliates

    39 リアルタイムでの売上や⾏動分析 RDBMSのテーブルに蓄積された 履歴データに対する 複雑なSELECT⽂の実⾏ お客様ごとの「おすすめ」の提供 お客様の購買履歴や 属性情報に対する 機械学習でのレコメンデーション レビューの感情分析や要約 ⽣成AIを利⽤して 書き⼿の感情の分析や 複数のレビューを要約 異なるシステムやサービス間でのデータのやりとりが発⽣ データベース 機械学習 ⽣成AI
  31. ECサイトを例に MySQL HeatWaveが解決する多様なデータ活⽤の課題 Copyright © 2025, Oracle and/or its affiliates

    40 リアルタイムでの売上や⾏動分析 RDBMSのテーブルに蓄積された 履歴データに対する 複雑なSELECT⽂の実⾏ お客様ごとの「おすすめ」の提供 お客様の購買履歴や 属性情報に対する 機械学習でのレコメンデーション レビューの感情分析や要約 ⽣成AIを利⽤して 書き⼿の感情の分析や 複数のレビューを要約 データを移動せずに⼀つのクラウド・サービス内で処理可能 データベース 機械学習 ⽣成AI
  32. MySQL HeatWaveによりセキュリティが強固に • データが広範囲にわたって移動 • 暗号化鍵、ユーザー・アクセス、認証スキームなど、 異なるセキュリティ特性を持つ複数のサービス • ユーザーが複数のサービスを構成し、接続する必要がある 41

    Copyright © 2025, Oracle and/or its affiliates 分析 OLTP ベクター ストア LLM 機械学習 レイクハウス ユーザ・ データ アプリ HeatWave その他のサービス MySQL HeatWave • データは1つのデータベース・システムで管理される • 統⼀的なアクセス制御と単⼀の構成 • すべての通信が認証され暗号化
  33. OCIのAlways Free Servicesにて 無料でMySQL HeatWaveを利⽤可能 https://www.oracle.com/jp/heatwave/free/ MySQL HeatWaveも期間の制限なく無料で使⽤可能 インスタンス数や容量、⼀部機能の制限あり NEW!

    MySQL HeatWave GenAIも利⽤可能 ベクトル・ストアやMySQL HeatWaveに 内蔵されたLLMを活⽤ 42 Copyright © 2025, Oracle and/or its affiliates
  34. MySQL HeatWave GenAI で使⽤できるルーチン(プロシージャー、関数) Copyright © 2025, Oracle and/or its

    affiliates 45 ルーチン名 説明 ML_GENERATE LLMに対して問い合わせを実⾏ ML_GENERATE_TABLE LLMに対してバッチ処理で問い合わせを実⾏(事前にテーブルに問い合わせを格納しておく) VECTOR_STORE_LOAD オブジェクトストレージ上のファイルをエンベディングしてHeatWave GenAIのベクトルストアにロードする ML_RAG HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせを実⾏ ML_RAG_TABLE HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせをバッチ処理で実⾏(事前にテーブルに問い合わせを格納しておく) HEATWAVE_CHAT コンテキストを保持し、チャット形式でLLMに対して問い合わせを実⾏ ML_EMBED_ROW ⼊⼒したテキストデータに対するエンべディングを⽣成 ML_EMBED_TABLE テーブル内のテキストデータを⼊⼒として、バッチ処理でエンべディングを⽣成 NL_SQL ⾃然⾔語からSQLクエリを⽣成 ※ドキュメント︓HeatWave User Guide / HeatWave GenAI Routines https://dev.mysql.com/doc/heatwave/en/mys-hwgenai-routines.html ※別途、DISTANCE関数などのベクトル関数も使えます https://dev.mysql.com/doc/heatwave/en/mys-hw-vector-functions.html
  35. 「MySQL内のテキストデータに対してベクトル検索したい」 時に使うもの Copyright © 2025, Oracle and/or its affiliates 46

    ルーチン名 説明 ML_GENERATE LLMに対して問い合わせを実⾏ ML_GENERATE_TABLE LLMに対してバッチ処理で問い合わせを実⾏(事前にテーブルに問い合わせを格納しておく) VECTOR_STORE_LOAD オブジェクトストレージ上のファイルをエンベディングしてHeatWave GenAIのベクトルストアにロードする ML_RAG HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせを実⾏ ML_RAG_TABLE HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせをバッチ処理で実⾏(事前にテーブルに問い合わせを格納しておく) HEATWAVE_CHAT コンテキストを保持し、チャット形式でLLMに対して問い合わせを実⾏ ML_EMBED_ROW ⼊⼒したテキストデータに対するエンべディングを⽣成 ML_EMBED_TABLE テーブル内のテキストデータを⼊⼒として、バッチ処理でエンべディングを⽣成 NL_SQL ⾃然⾔語からSQLクエリを⽣成 ※ドキュメント︓HeatWave User Guide / HeatWave GenAI Routines https://dev.mysql.com/doc/heatwave/en/mys-hwgenai-routines.html ※別途、DISTANCE関数などのベクトル関数も使えます https://dev.mysql.com/doc/heatwave/en/mys-hw-vector-functions.html
  36. 「SQLだけでLLMを使いたい、LLMをチャット形式で使いたい」 時に使うもの Copyright © 2025, Oracle and/or its affiliates 47

    ルーチン名 説明 ML_GENERATE LLMに対して問い合わせを実⾏ ML_GENERATE_TABLE LLMに対してバッチ処理で問い合わせを実⾏(事前にテーブルに問い合わせを格納しておく) VECTOR_STORE_LOAD オブジェクトストレージ上のファイルをエンベディングしてHeatWave GenAIのベクトルストアにロードする ML_RAG HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせを実⾏ ML_RAG_TABLE HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせをバッチ処理で実⾏(事前にテーブルに問い合わせを格納しておく) HEATWAVE_CHAT コンテキストを保持し、チャット形式でLLMに対して問い合わせを実⾏ ML_EMBED_ROW ⼊⼒したテキストデータに対するエンべディングを⽣成 ML_EMBED_TABLE テーブル内のテキストデータを⼊⼒として、バッチ処理でエンべディングを⽣成 NL_SQL ⾃然⾔語からSQLクエリを⽣成 ※ドキュメント︓HeatWave User Guide / HeatWave GenAI Routines https://dev.mysql.com/doc/heatwave/en/mys-hwgenai-routines.html ※別途、DISTANCE関数などのベクトル関数も使えます https://dev.mysql.com/doc/heatwave/en/mys-hw-vector-functions.html
  37. 「RAGを簡単に活⽤したい」 時に使うもの Copyright © 2025, Oracle and/or its affiliates 48

    ルーチン名 説明 ML_GENERATE LLMに対して問い合わせを実⾏ ML_GENERATE_TABLE LLMに対してバッチ処理で問い合わせを実⾏(事前にテーブルに問い合わせを格納しておく) VECTOR_STORE_LOAD オブジェクトストレージ上のファイルをエンベディングしてHeatWave GenAIのベクトルストアにロードする ML_RAG HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせを実⾏ ML_RAG_TABLE HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせをバッチ処理で実⾏(事前にテーブルに問い合わせを格納しておく) HEATWAVE_CHAT コンテキストを保持し、チャット形式でLLMに対して問い合わせを実⾏ ML_EMBED_ROW ⼊⼒したテキストデータに対するエンべディングを⽣成 ML_EMBED_TABLE テーブル内のテキストデータを⼊⼒として、バッチ処理でエンべディングを⽣成 NL_SQL ⾃然⾔語からSQLクエリを⽣成 ※ドキュメント︓HeatWave User Guide / HeatWave GenAI Routines https://dev.mysql.com/doc/heatwave/en/mys-hwgenai-routines.html ※別途、DISTANCE関数などのベクトル関数も使えます https://dev.mysql.com/doc/heatwave/en/mys-hw-vector-functions.html
  38. 1. MySQLのデータをMySQL HeatWaveに移⾏する • データ移⾏にはMySQL Shellのデータダンプ&ロードユーティリティを使⽤可能 • データ移⾏後にレプリケーションを設定すれば、最新データをMySQL HeatWave環境に同期も可能 2.

    ML_EMBED_TABLEプロシージャーを実⾏して、テキストデータに対するエンべディングを⽣成 • 既存のテーブルにベクトルデータ型の列を追加することも、別テーブルを作成することも可能 3. DISTANCE関数を使ってベクトル検索する • 検索したいキーワードに対するエンべディングは ML_EMBED_ROW で⽣成する MySQL内のテキストデータに対してベクトル検索する⽅法 Copyright © 2025, Oracle and/or its affiliates 50
  39. mysql> SELECT sys.ML_EMBED_ROW('⽝', JSON_OBJECT('model_id', 'multilingual-e5-small')) INTO @v1; Query OK, 1

    row affected (0.64 sec) mysql> SELECT sys.ML_EMBED_ROW('猫', JSON_OBJECT('model_id', 'multilingual-e5-small')) INTO @v2; Query OK, 1 row affected (0.57 sec) mysql> SELECT DISTANCE(@v1, @v2, 'COSINE'); +------------------------------+ | DISTANCE(@v1, @v2, 'COSINE') | +------------------------------+ | 0.10679465532302856 | +------------------------------+ 1 row in set (0.00 sec) mysql> mysql> SELECT sys.ML_EMBED_ROW('イルカ', JSON_OBJECT('model_id', 'multilingual-e5-small')) INTO @v3; Query OK, 1 row affected (0.64 sec) mysql> SELECT DISTANCE(@v1, @v3, 'COSINE'); +------------------------------+ | DISTANCE(@v1, @v3, 'COSINE') | +------------------------------+ | 0.19882500171661377 | +------------------------------+ 1 row in set (0.00 sec) DISTANCE関数の使い⽅ Copyright © 2025, Oracle and/or its affiliates 51 「⽝とイルカ」のCOSINE距離は「⽝と猫」よりも遠い 「⽝と猫」のCOSINE距離は近い(意味的に近い)
  40. mysql> SELECT sys.ML_EMBED_ROW('⼩屋', JSON_OBJECT('model_id', 'multilingual-e5-small')) INTO @v4; Query OK, 1

    row affected (0.68 sec) mysql> SELECT DISTANCE(@v1, @v4, 'COSINE'); +------------------------------+ | DISTANCE(@v1, @v4, 'COSINE') | +------------------------------+ | 0.137731671333313 | +------------------------------+ 1 row in set (0.00 sec) DISTANCE関数の使い⽅ Copyright © 2025, Oracle and/or its affiliates 52 「⽝と⼩屋」のCOSINE距離は「⽝と猫」よりは遠いが 「⽝とイルカ」よりは近い
  41. • OCI Generative AIサービスと連携するためには、事前設定が必要です • 設定⽅法は以下のドキュメントを参照して下さい • HeatWave User Guide

    / Authenticating OCI Generative AI Service https://dev.mysql.com/doc/heatwave/en/mys-hw-genai-authenticate-service.html 備考︓OCI Generative AIサービスとの連携⽅法 Copyright © 2025, Oracle and/or its affiliates 54
  42. mysql> SELECT * FROM vectordb.comment; +------------+-------------+---------+------------------------------------------------------------------- ----------------------------------------------------------------------------+ | comment_id |

    customer_id | book_id | comment | +------------+-------------+---------+------------------------------------------------------------------- ----------------------------------------------------------------------------+ | 1 | 1 | 1 | 設定が作り込まれていて⾯⽩い。遅効性SFにハマっています︕ | | 2 | 2 | 2 | 普通の野球漫画とは全然違うけど、ギャンブル&野球という斬新な設定で⾯⽩い。 | | 3 | 1 | 3 | 読み始めた時は、こんな⾵にストーリーが展開するなんて思わなかった。 | | 4 | 3 | 4 | まさかの犯⼈の視点でのスピンオフ︕ | | 5 | 4 | 3 | 最初は転⽣ものっぽかったけど、よくある転⽣ものとは全然違った。 | | 6 | 2 | 1 | モブキャラがいない。全キャラが魅⼒的。バトルものなのにインフレしないままずっと⾯⽩いのも凄い。 | | 7 | 3 | 5 | 周りで殺⼈事件起き過ぎw | +------------+-------------+---------+------------------------------------------------------------------- ----------------------------------------------------------------------------+ 7 rows in set (0.00 sec) レビューコメントに対してベクトル検索する例 Copyright © 2025, Oracle and/or its affiliates 55 マンガに対するレビューが投稿され、commentテーブルの comment列に格納されていることを想定
  43. mysql> DESC vectordb.comment; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null

    | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | comment_id | int | NO | PRI | NULL | | | customer_id | int | YES | | NULL | | | book_id | int | YES | | NULL | | | comment | varchar(50) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql> CALL sys.ML_EMBED_TABLE('vectordb.comment.comment', 'vectordb.comment.comment_vec', -> JSON_OBJECT('model_id', 'multilingual-e5-small')); Query OK, 0 rows affected (1.25 sec) mysql> DESC vectordb.comment; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | comment_id | int | NO | PRI | NULL | | | customer_id | int | YES | | NULL | | | book_id | int | YES | | NULL | | | comment | varchar(50) | YES | | NULL | | | comment_vec | vector(2048) | NO | | NULL | | +-------------+--------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) レビューコメントに対してベクトル検索する例 Copyright © 2025, Oracle and/or its affiliates 56 ・ 第⼀引数にはエンべディングを⽣成したいテキストデータが⼊っている列を、 第⼆引数にはベクトルデータを格納したい列を指定する ( 「スキーマ名.テーブル名.列名」の形式 ) ・ 同じテーブルを指定した場合は、既存のテーブルに列が追加される
  44. mysql> CALL sys.ML_EMBED_TABLE('vectordb.comment.comment', 'vectordb.comment_vec.comment_vec', -> JSON_OBJECT('model_id', 'multilingual-e5-small')); Query OK, 0

    rows affected (1.27 sec) mysql> DESC vectordb.comment_vec; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | comment_id | int | NO | PRI | NULL | | | comment_vec | vector(2048) | NO | | NULL | | +-------------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) レビューコメントに対してベクトル検索する例 Copyright © 2025, Oracle and/or its affiliates 57 ・ 第⼆引数に存在しないテーブルを指定した場合は、 「元テーブルの主キー+ベクトルデータ型」のテーブルが ⾃動的に作成される
  45. mysql> SELECT sys.ML_EMBED_ROW('ミステリー', JSON_OBJECT('model_id', 'multilingual-e5-small')) -> INTO @query_embedding; Query OK,

    1 row affected (1.31 sec) mysql> SELECT c.comment_id, c.customer_id, c.book_id, c.comment, -> DISTANCE(c.comment_vec, @query_embedding, 'COSINE') AS distance -> FROM vectordb.comment c -> ORDER BY DISTANCE(c.comment_vec, @query_embedding, 'COSINE') ASC¥G *************************** 1. row *************************** comment_id: 7 customer_id: 3 book_id: 5 comment: 周りで殺⼈事件起き過ぎw distance: 0.11284857988357544 *************************** 2. row *************************** comment_id: 4 customer_id: 3 book_id: 4 comment: まさかの犯⼈の視点でのスピンオフ︕ distance: 0.13298475742340088 *************************** 3. row *************************** comment_id: 3 customer_id: 1 book_id: 3 comment: 読み始めた時は、こんな⾵にストーリーが展開するなんて思わなかった。 distance: 0.16685640811920166 レビューコメントに対してベクトル検索する例 Copyright © 2025, Oracle and/or its affiliates 58 comment列に⼊っているレビューと「ミステリー」という単語の意味的な近さを 基準にソートしてレビューを検索した結果、「ミステリー」と関連の深いレビューを 上位に表⽰できている
  46. *************************** 4. row *************************** comment_id: 5 customer_id: 4 book_id: 3

    comment: 最初は転⽣ものっぽかったけど、よくある転⽣ものとは全然違った。 distance: 0.17830097675323486 *************************** 5. row *************************** comment_id: 1 customer_id: 1 book_id: 1 comment: 設定が作り込まれていて⾯⽩い。遅効性SFにハマっています︕ distance: 0.18395888805389404 *************************** 6. row *************************** comment_id: 2 customer_id: 2 book_id: 2 comment: 普通の野球漫画とは全然違うけど、ギャンブル&野球という斬新な設定で⾯⽩い。 distance: 0.19708287715911865 *************************** 7. row *************************** comment_id: 6 customer_id: 2 book_id: 1 comment: モブキャラがいない。全キャラが魅⼒的。バトルものなのにインフレしないままずっと⾯⽩いのも凄い。 distance: 0.20563781261444092 7 rows in set (0.00 sec) レビューコメントに対してベクトル検索する例 Copyright © 2025, Oracle and/or its affiliates 59
  47. mysql> SELECT sys.ML_EMBED_ROW('ミステリー', JSON_OBJECT('model_id', 'cohere.embed-multilingual-v3.0')) -> INTO @query_embedding; Query OK,

    1 row affected (0.65 sec) mysql> SELECT c.comment_id, c.customer_id, c.book_id, c.comment, -> DISTANCE(c.comment_vec, @query_embedding, 'COSINE') AS distance -> FROM vectordb.comment c -> ORDER BY DISTANCE(c.comment_vec, @query_embedding, 'COSINE') ASC¥G *************************** 1. row *************************** comment_id: 7 customer_id: 3 book_id: 5 comment: 周りで殺⼈事件起き過ぎw distance: 0.2302156686782837 *************************** 2. row *************************** comment_id: 4 customer_id: 3 book_id: 4 comment: まさかの犯⼈の視点でのスピンオフ︕ distance: 0.24487388134002686 *************************** 3. row *************************** comment_id: 3 customer_id: 1 book_id: 3 comment: 読み始めた時は、こんな⾵にストーリーが展開するなんて思わなかった。 distance: 0.25991952419281006 備考︓”cohere.embed-multilingual-v3.0”でエンべディングした場合の実⾏例 Copyright © 2025, Oracle and/or its affiliates 60
  48. *************************** 4. row *************************** comment_id: 5 customer_id: 4 book_id: 3

    comment: 最初は転⽣ものっぽかったけど、よくある転⽣ものとは全然違った。 distance: 0.27529823780059814 *************************** 5. row *************************** comment_id: 1 customer_id: 1 book_id: 1 comment: 設定が作り込まれていて⾯⽩い。遅効性SFにハマっています︕ distance: 0.2850002646446228 *************************** 6. row *************************** comment_id: 6 customer_id: 2 book_id: 1 comment: モブキャラがいない。全キャラが魅⼒的。バトルものなのにインフレしないままずっと⾯⽩いのも凄い。 distance: 0.3376314640045166 *************************** 7. row *************************** comment_id: 2 customer_id: 2 book_id: 2 comment: 普通の野球漫画とは全然違うけど、ギャンブル&野球という斬新な設定で⾯⽩い。 distance: 0.37797898054122925 7 rows in set (0.00 sec) 備考︓”cohere.embed-multilingual-v3.0”でエンべディングした場合の実⾏例 Copyright © 2025, Oracle and/or its affiliates 61
  49. LLMに単⼀の質問を投げる場合 • ML_GENERATE を使う LLMにバッチ処理で複数の質問を投げる場合 • ML_GENERATE_TABLE を使う LLMをチャット形式で使う場合 •

    HEATWAVE_CHAT を使う SQLだけでLLMを使う⽅法、LLMをチャット形式使う⽅法 Copyright © 2025, Oracle and/or its affiliates 63
  50. mysql> SET @query="MySQLについて説明して下さい"; Query OK, 0 rows affected (0.00 sec)

    mysql> SELECT sys.ML_GENERATE(@query, JSON_OBJECT("task", "generation", "model_id", "llama3-8b- instruct-v1", "language", "ja"))¥G *************************** 1. row *************************** sys.ML_GENERATE(@query, JSON_OBJECT("task", "generation", "model_id", "llama3-8b-instruct-v1", "language", "ja")): {"text": "MySQLは、世界で最も⼈気の⾼いオープンソースのRDBMS(Relational Database Management System)です。1995年にMichael Wideniusによって開発されました。¥n¥n MySQLは、SQL(Structured Query Language)を使⽤し てデータベースを管理することができます。主にWebアプリケーションや企業の情報システムで使⽤されています。¥n¥nMySQLの特徴として、以下のような点が 挙げられます。¥n¥n* オープンソース︓MySQLはオープンソースソフトウェアであり、無料でダウンロード・インストールすることができます。¥n* スケーラビリ ティ︓ MySQLは⼤規模なデータベースを管理することができ、⼤量のトラフィックに対応することができます。¥n* セキュリティー︓MySQLにはセキュリティー 機能が充実しており、パスワードや暗号化されたデータを安全に保存することができます。¥n* プログラミング⾔語︓ MySQLは多くのプログラミング⾔語 (例えばPHP、Python、Javaなど)との互換性があります。¥n¥n MySQLの使⽤例として、以下のようなものが挙げられます。¥n¥n"} 1 row in set (14.99 sec) LLMに単⼀の質問を投げる例 Copyright © 2025, Oracle and/or its affiliates 64
  51. mysql> SET @query="MySQLについて説明して下さい"; Query OK, 0 rows affected (0.00 sec)

    mysql> SELECT sys.ML_GENERATE(@query, JSON_OBJECT("task", "generation", "model_id", "llama3-8b- instruct-v1", "language", "ja", "max_tokens", 500))¥G *************************** 1. row *************************** sys.ML_GENERATE(@query, JSON_OBJECT("task", "generation", "model_id", "llama3-8b-instruct-v1", "language", "ja", "max_tokens", 500)): {"text": "MySQLは、世界で最も⼈気の⾼いオープンソースのRDBMS(Relational Database Management System)です。1995年にMichael Wideniusによって開発されました。¥n¥n MySQLは、SQL(Structured Query Language)を使⽤してデータベースを管理することができます。主にWebアプリケーションや企業の情報システムで使⽤されています。 ¥n¥nMySQLの特徴として、以下のような点が挙げられます。¥n¥n* オープンソース︓MySQLはオープンソースソフトウェアであり、無料でダウンロード・インス トールすることができます。¥n* スケーラビリティ︓ MySQLは⼤規模なデータベースを管理することができ、⼤量のトラフィックに対応することができます。¥n* セキュリティー︓MySQLにはセキュリティー機能が充実しており、パスワードや暗号化されたデータを安全に保存することができます。¥n* プログラミング⾔語︓ MySQLは多くのプログラミング⾔語(例えばPHP、Python、Javaなど)との互換性があります。¥n¥n MySQLの使⽤例として、以下のようなものが挙げら れます。¥n¥n* Webアプリケーション︓MySQLを使⽤してWebアプリケーションにデータベースを実装することができます。¥n* 企業情報システム︓MySQL を使⽤して企業の情報システム(例えば会計システム、⼈事システムなど)を実装することができます。¥n* ゲーム開発︓MySQLを使⽤してゲームのデー タベースを実装することができます。¥n¥n以上のように、MySQLはRDBMSとして⾮常に有⽤なツールであり、多くの企業や個⼈で使⽤されています。"} 1 row in set (21.72 sec) LLMに単⼀の質問を投げる例(オプションを指定し、出⼒サイズを調整) Copyright © 2025, Oracle and/or its affiliates 65 ※設定できるオプションの詳細はドキュメントを参照 https://dev.mysql.com/doc/heatwave/en/mys-hwgenai-ml-generate.html
  52. mysql> SELECT * FROM input_table; +----+-----------------------------------------------------+ | id | Input

    | +----+-----------------------------------------------------+ | 1 | MySQLについて説明して下さい | | 2 | データベースについて説明して下さい | +----+-----------------------------------------------------+ 2 rows in set (0.00 sec) mysql> CALL sys.ML_GENERATE_TABLE("GenAi.input_table.Input", "GenAi.input_table.Output", JSON_OBJECT("task", "generation", "model_id", "llama3-8b-instruct-v1", "language", "ja", -> "max_tokens", 1000)); Query OK, 0 rows affected (45.50 sec) LLMにバッチ処理で複数の質問を投げる例 Copyright © 2025, Oracle and/or its affiliates 66
  53. mysql> SELECT * FROM GenAi.input_table¥G *************************** 1. row *************************** id:

    1 Input: MySQLについて説明して下さい Output: {"text": "MySQLは、世界で最も⼈気の⾼いオープンソースのRDBMS(Relational Database Management System)です。 <中略> * ゲーム︓ MySQLを使⽤してゲームのデータベースを実装することができます。¥n¥n以上のように、MySQLはRDBMSとして広く使われており、多くのアプリ ケーションで使⽤されています。"} *************************** 2. row *************************** id: 2 Input: データベースについて説明して下さい Output: {"text": "データベース(Database)は、コンピュータープログラムが使⽤するための、情報を格納した構造化されたコレクションです。 <中略> 1. **リレーショナルデータベース**︓テーブル間で関係がある情報を保持するデータベース。¥n2. **NoSQLデータベース**︓スケーラビリティや⾼速性 に優れたデータベース。¥n3. **グラフデータベース**︓ネットワークやグラフ構造の情報を保持するデータベース。¥n¥n以上、データベースについて簡単に 説明しました。"} 2 rows in set (0.00 sec) LLMにバッチ処理で複数の質問を投げる例 Copyright © 2025, Oracle and/or its affiliates 67
  54. mysql> SET @chat_options=NULL; Query OK, 0 rows affected (0.00 sec)

    mysql> SET @chat_options = JSON_OBJECT("model_options", JSON_OBJECT("model_id", "cohere.command-r- 08-2024", "language", "ja", "max_tokens", 1000)); Query OK, 0 rows affected (0.00 sec) mysql> CALL sys.HEATWAVE_CHAT("HeatWaveとはなにか教えてください")¥G *************************** 1. row *************************** response: HeatWave とは、コヒアが開発した⼤規模⾔語モデルです。このモデルは、⾃然⾔語処理タスクに特化し、さまざまな⾔語のテキストを理解 し、⽣成することができます。HeatWave は、コヒアの他の⾔語モデルと同様に、膨⼤な量のテキストデータを学習し、その知識と⽂脈理解に基づいて、⼈ 間のような応答やテキストの⽣成を⾏うことができます。 <後略> LLMをチャット形式で使う場合 Copyright © 2025, Oracle and/or its affiliates 68
  55. mysql> CALL sys.HEATWAVE_CHAT("それは違います。オラクルが提供しているHeatWaveについて教えてください")¥G *************************** 1. row *************************** response: はい、Oracleが提供しているHeatWaveについて説明します。 HeatWaveは、Oracle

    Databaseのインメモリ・コンピューティング機能です。この機能は、データベース内のデータを⾼速に分析し、複雑なクエリを処理 するために設計されています。HeatWaveを使⽤することで、データウェアハウスやビジネス・インテリジェンス・アプリケーションのパフォーマンスを⼤幅に向上させ ることができます。 <中略> HeatWaveは、データ分析やビジネス・インテリジェンスの分野で、迅速なインサイトの取得や意思決定を⽀援する強⼒なツールとなっています。Oracle Databaseのユーザーは、HeatWaveを利⽤することで、データ処理のパフォーマンスを⼤幅に向上させ、より効率的なビジネス運営を実現することができま す。 1 row in set (9.49 sec) Query OK, 0 rows affected (9.49 sec) LLMをチャット形式で使う場合 Copyright © 2025, Oracle and/or its affiliates 69
  56. mysql> CALL sys.HEATWAVE_CHAT("HeatWaveはOracle DatabaseではなくMySQLの拡張機能です。オラクルが提供しているHeatWave について教えてください")¥G *************************** 1. row *************************** response:

    はい、オラクルが提供しているMySQLの拡張機能であるHeatWaveについて説明します。 HeatWaveは、MySQLデータベースの分析処理を⾼速化するためのインメモリ・コンピューティング・エンジンです。この機能は、MySQLの標準的なクエリ処理 とは別に、分析クエリを処理するために最適化された環境を提供します。 HeatWaveの主な特徴は次のとおりです。 <中略> HeatWaveを利⽤することで、MySQLデータベース上で⾼度な分析処理やビジネス・インテリジェンス・アプリケーションを実⾏することができます。特に、ビッグ データの分析や、リアルタイムのデータ可視化、機械学習などの分野でその威⼒を発揮します。 オラクルは、HeatWaveをMySQLの重要な機能として位置づけ、企業や組織がデータから価値を最⼤限に引き出すことを⽀援しています。HeatWaveは、 MySQLの柔軟性とパフォーマンスをさらに強化し、データ分析の分野で強⼒なツールを提供しています。 1 row in set (9.25 sec) Query OK, 0 rows affected (9.25 sec) LLMをチャット形式で使う場合 Copyright © 2025, Oracle and/or its affiliates 70
  57. mysql> SET @options = JSON_OBJECT("schema_name", "RAG", "table_name", "test_embeddings", "language", "ja");

    Query OK, 0 rows affected (0.00 sec) mysql> CALL sys.VECTOR_STORE_LOAD("https://objectstorage.ap-osaka-1.oraclecloud.com/省略 /HeatWave_MySQL.txt", @options); +---------+----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------+ | task_id | task_status_query | +---------+----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------+ | 1 | SELECT id, name, message, progress, status, scheduled_time,estimated_completion_time, estimated_remaining_time, progress_bar FROM mysql_task_management.task_status WHERE id=1¥G | +---------+----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------+ 実⾏例︓ベクトルストアへのドキュメントのロード Copyright © 2025, Oracle and/or its affiliates 74 ロードの進捗状況を確認するためのSQLが表⽰される
  58. mysql> SELECT id, name, message, progress, status, scheduled_time,estimated_completion_time, estimated_remaining_time, progress_bar

    FROM mysql_task_management.task_status WHERE id=1¥G *************************** 1. row *************************** id: 1 name: Vector Store Loader message: Loading in progress... progress: 10 status: RUNNING scheduled_time: 2025-03-25 23:57:24 estimated_completion_time: 2025-03-25 23:59:54 estimated_remaining_time: 135.00000 progress_bar: #_________ 1 row in set (0.00 sec) 実⾏例︓ベクトルストアへのデータロード状況の確認 Copyright © 2025, Oracle and/or its affiliates 75
  59. mysql> SELECT id, name, message, progress, status, scheduled_time,estimated_completion_time, estimated_remaining_time, progress_bar

    FROM mysql_task_management.task_status WHERE id=1¥G *************************** 1. row *************************** id: 1 name: Vector Store Loader message: Loading in progress... progress: 40 status: RUNNING scheduled_time: 2025-03-25 23:57:24 estimated_completion_time: 2025-03-25 23:58:27 estimated_remaining_time: 37.50000 progress_bar: ####______ 1 row in set (0.00 sec) 実⾏例︓ベクトルストアへのデータロード状況の確認 Copyright © 2025, Oracle and/or its affiliates 76
  60. mysql> SELECT id, name, message, progress, status, scheduled_time,estimated_completion_time, estimated_remaining_time, progress_bar

    FROM mysql_task_management.task_status WHERE id=1¥G *************************** 1. row *************************** id: 1 name: Vector Store Loader message: Task completed. progress: 100 status: COMPLETED scheduled_time: 2025-03-25 23:57:24 estimated_completion_time: 2025-03-25 23:57:53 estimated_remaining_time: 0.00000 progress_bar: ########## 1 row in set (0.00 sec) 実⾏例︓ベクトルストアへのデータロード状況の確認 Copyright © 2025, Oracle and/or its affiliates 77
  61. mysql> SET @query="HeatWaveとはなにか教えてください"; Query OK, 0 rows affected (0.00 sec)

    mysql> SELECT sys.ML_GENERATE(@query, JSON_OBJECT("task", "generation", "model_id", "cohere.command- r-08-2024", "language", "ja", "max_tokens", 1000))¥G *************************** 1. row *************************** sys.ML_GENERATE(@query, JSON_OBJECT("task", "generation", "model_id", "cohere.command-r-08-2024", "language", "ja", "max_tokens", 1000)): {"text": "HeatWave とは、コヒアが開発した⼤規模⾔語モデルです。このモデルは、⾃ 然⾔語処理タスクに特化し、さまざまな⾔語のテキストを理解し、⽣成することができます。HeatWave は、コヒアの他の⾔語モデルと同様に、膨⼤な量の テキストデータを学習し、その知識と⽂脈理解に基づいて、⼈間のような応答やテキストの⽣成を⾏うことができます。¥n¥nHeatWave は、⾃然⾔語処理 のさまざまな分野で活⽤され、テキストの要約、質問応答、⽂章⽣成、翻訳など、幅広いタスクをこなすことができます。このモデルは、その柔軟性と適応性 により、さまざまな業界や分野で有⽤なツールとして利⽤されています。¥n¥nHeatWave の特徴の⼀つは、その多⾔語対応能⼒です。このモデルは、複数 の⾔語を学習し、異なる⾔語間の翻訳や、多⾔語環境でのテキスト処理を可能にします。これにより、グローバルなコミュニケーションや、多⾔語コンテンツの 処理に役⽴ちます。¥n¥nまた、HeatWave は、コヒアの他のモデルと同様に、継続的な学習と改善が可能です。新しいデータやフィードバックを取り⼊れる ことで、その性能と正確性を向上させ、より⼈間らしい応答や、複雑なタスクへの対応⼒を⾼めることができます。¥n¥nHeatWave は、⾃然⾔語処理の分 野で重要な役割を果たし、⼈⼯知能と⼈間のコミュニケーションをより⾃然で効率的なものにするために貢献しています。"} 1 row in set (5.39 sec) 実⾏例︓RAGを使わないLLMへの問い合わせ Copyright © 2025, Oracle and/or its affiliates 78
  62. mysql> SET @query="HeatWaveとはなにか教えてください"; Query OK, 0 rows affected (0.00 sec)

    mysql> SET @options = JSON_OBJECT("vector_store", JSON_ARRAY("RAG.test_embeddings"), "model_options", JSON_OBJECT("model_id", "cohere.command-r-08-2024", "language", "ja", "max_tokens", 1000)); Query OK, 0 rows affected (0.00 sec) mysql> CALL sys.ML_RAG(@query, @output, @options); Query OK, 1 row affected (7.85 sec) 実⾏例︓RAGを使ったLLMへの問い合わせ Copyright © 2025, Oracle and/or its affiliates 79
  63. mysql> SELECT JSON_PRETTY(@output)¥G *************************** 1. row *************************** JSON_PRETTY(@output): { "text":

    "HeatWave は、オラクルが提供する MySQL の拡張機能で、検索クエリを⾼速に実⾏できるようにする機能です。これにより、⼤量データ の分析や集計処理を従来よりも⾼速に⾏うことができます。また、HeatWave には、機械学習や LLM 活⽤、ベクトルストアとしての MySQL 利⽤など、 さまざまな拡張機能が含まれています。", "citations": [ { "segment": "HeatWave MySQLは、オラクルが提供するMySQLのマネージドサービスです。通常のMySQLのマネージドサービスとして使⽤す ることもできますが、HeatWaveという拡張機能を利⽤することで検索クエリーを通常のMySQLよりも⾼速に実⾏できます。従来MySQLは⼤量データの分析 /集計処理などには不向きとされてきましたが、HeatWave MySQLでは⼤量データの集計処理も超⾼速に実⾏できます。¥n¥nまた、HeatWave MySQLにはMySQL Databaseだけで(SQLだけで)機械学習を実現できるHeatWave AutoML、オブジェクトストレージ上のデータを⾼速に HeatWaveでの分析/集計対象にできるHeatWave Lakehouse、SQLだけでLLMを活⽤したりMySQLをベクトルストアとして使⽤できるHeatWave GenAIなどの拡張機能もあります。", "distance": 0.0958, "document_name": "https://objectstorage.ap-osaka-1.oraclecloud.com/省略/HeatWave_MySQL.txt" } ], 実⾏例︓RAGを使ったLLMへの問い合わせ Copyright © 2025, Oracle and/or its affiliates 80
  64. "vector_store": [ "`RAG`.`test_embeddings`" ], "retrieval_info": { "method": "n_citations", "threshold": 0.0958

    } } 1 row in set (0.00 sec) 実⾏例︓RAGを使ったLLMへの問い合わせ Copyright © 2025, Oracle and/or its affiliates 81