204 Views
September 13, 25
スライド概要
2025年9月13日(土)に開催された「第35回 中国地方DB勉強会 in 岡山」での発表資料です。
https://dbstudychugoku.connpass.com/event/360688/
MySQL HeatWave GenAIの概要と、簡単に使えるユースケースについて解説しています。
日本オラクル株式会社 MySQL HeatWave Data Architect
MySQL HeatWave GenAIの使い所 中国地⽅DB勉強会 in 岡⼭ ⼭﨑 由章 / Yoshiaki YAMASAKI MySQL HeatWave Data Architect ⽇本オラクル株式会社
アジェンダ 1. MySQL HeatWave 概要 2. MySQL HeatWave GenAI 3. MySQL HeatWave GenAI の使い所 (簡単に使えるユースケース)
MySQL HeatWave 概要 3 Copyright © 2025, Oracle and/or its affiliates
インメモリー⾼速分散処理エンジン Transactional Analytics Lakehouse AutoML GenAI クラウド版MySQL Enterprise Edition ⼤規模データ分析を ⼤幅に⾼速化 オブジェクト・ ストレージとの統合 機械学習の パイプラインを⾃動化 専⾨知識なしで ⽣成AIを活⽤ 4 Copyright © 2025, Oracle and/or its affiliates
インメモリー⾼速分散処理エンジン Transactional Analytics Lakehouse AutoML GenAI クラウド版MySQL Enterprise Edition ⼤規模データ分析を ⼤幅に⾼速化 オブジェクト・ ストレージとの統合 機械学習の パイプラインを⾃動化 専⾨知識なしで ⽣成AIを活⽤ 安価なMySQL マネージドサービス MySQLのままDWHとし MySQLの外にある て使⽤可能 データも簡単に分析 対象に 5 Copyright © 2025, Oracle and/or its affiliates MySQL内のデータを SQLだけでLLMを活⽤ SQLだけで機械学習に し、RAGも容易に構築 活⽤可能
MySQL HeatWave の特徴(MySQLのマネージドサービスとしての特徴) MySQL開発ベンダーであるオラクル社からのサポートも受けられる ⾼性能かつコストパフォーマンスも⾼いフルマネージドデータベース︕︕ 6 ⾼性能 MDSでは⾼パフォーマンスなブロック・ボリュームを標準採⽤ (ブロック・ボリュームのIOPS︓75 IOPS/GB) 低価格 同等スペック(CPU、Memory)で⽐較すると、 他社製のMySQLマネージドサービスの1/2〜1/3程度 MySQL開発 ベンダーが提供 オラクルのMySQLチームが100%開発、運⽤、サポート MySQL部分についてもコアなサポートを受けられる Copyright © 2025, Oracle and/or its affiliates
顧客事例︓ファンコミュニケーションズ様 ⽼舗のブログサービス「Seesaaブログ」をAWSからOCIに移⾏し、約50%の劇的なコスト削減を実現 Seesaaブログ システム構成イメージ • 2003年にサービス開始。⽇記やアフィリエイト、まとめブログなど 様々なブログライフをサポート。200万⼈以上のユーザーが利⽤ 従来の課題 • 既存のAWS環境のコスト削減の必要性があった • VMのサイズが柔軟に選択できず、CPUコア数とメモリサイズが アンバランスで過剰なリソースコストを⽀払っていた 採⽤ポイントと導⼊効果 HeatWave MySQL • 既存AWS環境と⽐較して、約50%のコスト削減ができた • OCIのフレキシブル・シェイプのVMはCPUコア数とメモリサイズに 対してシンデレラフィットの設定が可能で、サーバ利⽤全体にて、 必要な性能に関して適切なコストで利⽤できるようになった • コスト削減フレームワークの利⽤により、AWSユーザー観点での 移⾏アセスメントなど、Oracleメンバーの適切な⽀援を 気軽に得られた。また、Oracleから提供される MySQLのQ&Aサポートは安⼼感があり有益だった • OCI Cache with Redisでは、既存利⽤のAmazon ElastiCache for Redisから約25%のコスト削減効果があった 7 Copyright © 2025, Oracle and/or its affiliates 利⽤サービス(クラウドサービス/その他) • Compute VM, Block Volume, HeatWave MySQL, OCI Cache with Redis, OCI Registry (Container Registry), etc. • コスト削減フレームワーク
顧客事例︓アプルーシッド様 「ドクセル」 を、OCI Container Instancesを活⽤してGoogle Cloudから移⾏し、圧倒的なコスト削減を実現 ドクセル(Docswell) システム構成イメージ • PDFやパワーポイントのスライドを共有できる国産のスライド シェアサービス。ユーザー約30万⼈、⽉間アクセス約600万回。 従来の課題 既存のGoogle Cloud環境のコスト削減の必要性があった (特に、アウトバウンドのデータ転送のコスト)。 ユーザーアクセス時にコンテナが都度起動する スピンアップの仕組みにより、時に遅延が発⽣していた。 HeatWave MySQL 採⽤ポイントと導⼊効果 既存Google Cloud環境から移⾏し、特にデータ転送 が毎⽉10TB無料の利点を享受し、全体で約65%のコスト削 減を実現。HeatWave MySQL の⾼可⽤性構成の部分は、 要件を実現しつつ約50%のコスト削減を実現。 OCI Container Instancesを活⽤し、Kubernetesを利⽤せず に既存のコンテナアプケーションをシームレスに移⾏できた。 コスト⾯で有利なContainer Instancesを必要個数、 常時起動しておくことで、スピンアップの仕組みにする必要が 無くなった。結果、遅延のない安定的な処理を実現。 複数のコンテナ間の疎結合な処理にOCI Queueを活⽤。 8 Copyright © 2025, Oracle and/or its affiliates 利⽤サービス(クラウドサービス/その他) • OCI Container Instances • OCI Registry • HeatWave MySQL • OCI Queue • OCI Cache • コスト削減フレームワーク (Oracleによる移⾏アセスメント⽀援)
MySQL HeatWaveのアーキテクチャ ⼤量データの集計処理などをHeatWave Nodeで⾼速に処理 • アプリケーションからは従来通りMySQLに対してSQLを実⾏するだけで⾼速化される Insert/ Update 分析 クエリ 結果 セット 並列化 MySQL Database Service HeatWave Node MySQL コンパイラ & オプティマイザー OLTPクエリ 最適化 MySQL クエリ実⾏ 分析ジョブスケジューラ 分析クエリ 最適化 InnoDB ストレージエンジン 結果 9 Copyright © 2025, Oracle and/or its affiliates クエリ プッシュダウン 分析クエリ実⾏ インメモリデータ管理 リアルタイム 更新 リロード Object Storage
顧客事例︓NTTソルマーレ 様 MySQL HeatWaveで国内最⼤級の電⼦書籍配信サービス「コミックシーモア」でのデータ利活⽤を強化 利⽤サービス・製品 • HeatWave MySQL お客様のコメント 「『HeatWave』の導⼊によりサービス基盤とデータ分析基盤のリア ルタイムなデータ同期が実現できました。さらにこれまで 通常のMySQLで1.5時間程度かかっていたバッチ処理が 2秒程度で完了するなど性能の良さも実感しています。 処理を待つ思考停⽌の時間が短縮化され、 業務効率化にもつながっています。 システム構成イメージ MySQLに対応したツールは『HeatWave』でもそのまま活⽤でき、 ユーザーの利便性を維持しながら様々な分析データを更なる サービス向上に役⽴てることができています。 レプリケーション 『HeatWave』を利⽤した新たなデータ分析基盤を活⽤し、 今後も更に幅広いお客様に楽しんでいただける書籍配信サービス を提供していきます。」 リアルタイム同期 コミックシーモアの サービス基盤 10 Copyright © 2025, Oracle and/or its affiliates HeatWaveによる データ分析基盤 エヌ・ティ・ティ・ソルマーレ株式会社 電⼦書籍事業部 サービス開発グループ ⽊下 ⽒
MySQL HeatWave Lakehouse導⼊事例 NTTソルマーレ様 オブジェクト・ストレージの売上や キャンペーンのデータと MySQL HeatWave上の トランザクション・データを統合して分析 マーケティング・キャンペーンの強化と 新たなビジネス機会発⾒の 改善に成功 MySQL HeatWave Lakehouseの 利⽤には追加費⽤は発⽣しないため より多くの社員による分析基盤の 今後の活⽤に期待 https://www.oracle.com/customers/ntt-solmare/ 11 Copyright © 2025, Oracle and/or its affiliates
HeatWave AutoML 顧客事例︓⽇本の医薬品および⾷品製造の⼤⼿企業の海外法⼈ 機械学習を活⽤した品質管理で⽣産性を最⼤20%向上し、品質指標を30%改善 企業・システム概要 • 現地企業との合弁にて、⽇本国内でも販売されている ブランドの飲料や栄養補助⾷品を現地⽣産 • 当該国内のみならず周辺国向けにも製造販売 • ロボットによる⾃動化を実現した⼯場にて、 IoTデバイスからのデータをMySQLサーバーに集約 従来の課題 • 装置の故障による計画外停⽌の対応コスト⾼ • 製造製品の不良による廃棄の増加と品質管理の課題 • 当該国は⽀払い遅延のリスクが全般的に⾼く、債務 不履⾏が発⽣する可能性の⾼い取引先の判別が重要 採⽤ポイントと導⼊効果 • 製造装置の故障を予測し⽣産性を10-20%向上。設備 総合効率(Overall equipment effectiveness)を改善 • 取引先の財務状況などを分析することで、 不良債権の発⽣を最⼤25%抑制 12 Copyright © 2025, Oracle and/or its affiliates MySQL HeatWave AutoML活⽤シナリオ • MySQL HeatWave AutoMLの「回帰」により、 製造装置の各種パラメータやセンサーのデータが 許容範囲の閾値を超えるかを予測 • PoCではメンテナンスの必要性や 品質問題の発⽣を80%の精度で予測 • MySQL HeatWave AutoMLの「説明」により、 製造不良が発⽣する原因の特定や分析を⽀援 • MySQL HeatWave AutoMLの「分類」により、 債権問題が発⽣しうる取引先を抽出 • PoCでは不良債権の発⽣を98%の精度で予測 利⽤サービス(クラウドサービス/その他) • MySQL HeatWave AutoML
HeatWave GenAI導⼊⽀援サービス︓株式会社ラック様が8⽉から提供開始 RAG環境を容易に構築、データを外部に出すことなく安全に⽣成AIを活⽤ 出典︓https://www.lac.co.jp/news/2025/08/06_press_01.html 13 Copyright © 2025, Oracle and/or its affiliates
MySQL HeatWave GenAI 14 Copyright © 2025, Oracle and/or its affiliates
MySQL HeatWave GenAI ⽣成AI & Vector Store MySQL HeatWave OLTP 15 Analytics AutoML Copyright © 2025, Oracle and/or its affiliates Autopilot GenAI Vector Store
16 Copyright © 2025, Oracle and/or its affiliates AI Services Data Infrastructure Partners オラクルはお客様の 価値向上と成果の ために「すべての」 レイヤーにAIを導⼊ SaaS Apps
Comprehensive AI services, data platform, and AI infrastructure Apps and Agents Fusion Applications Embedded Agents NetSuite & Industry Apps Non-Embedded Agents OCI GenAI Agents AI Platform and Services GenAI Code Assist Data Oracle 23AI Infrastructure Distributed Cloud 17 Supercluster with RDMA networking Public Copyright © 2025, Oracle and/or its affiliates Digital Assistant Oracle Autonomous Database Speech Language Search with OpenSearch MySQL HeatWave Compute GPU: Bare metal, VMs, Kubernetes Dedicated Sovereign Vision Document Understanding Database with PostgreSQL Data Science & Quick Actions Cache Block, Object, File Storage, HPC filesystems Alloy Government AI Partners, LLMs & ISVs
MySQL HeatWaveのAI関連の取り組み状況 ベクトル・ストア、LLM, OCI ⽣成AIサービス、RAGをサポート • DBのデータやオブジェクト・ストレージ上の ⾮構造化データを機械学習、LLM, RAGの対象に • ベクトル埋め込みの⽣成やLLMの利⽤、機械学習の アルゴリズム選定や訓練などのプロセスを⾃動化 • ⾃然⾔語でのセマンティック検索を可能とする ベクトル・ストアとベクトル・サーチをサポート • 内蔵のLLMまたは外部のAIサービスを 要件に応じて選択して最適化 • OCIではOCI⽣成AIサービスと連携可能 • MySQL HeatWaveの利⽤者は 追加費⽤なしで利⽤可能 18 Copyright © 2025, Oracle and/or its affiliates
MySQL HeatWave GenAIのLLM(⼤規模⾔語モデル)は選択可能 https://dev.mysql.com/doc/heatwave/en/mys-hw-genai-supported-models.html MySQL HeatWave内蔵のLLM • MySQL HeatWave内でネイティブに動作 OCIの⽣成AIサービスで提供のLLM • より⼤規模でGPU上で動作するモデルを利⽤ • 相対的に⼩規模なLLMを利⽤: • テキスト⽣成⽤: • 9.3.2からは利⽤可能な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-instructv1 とllama3.2-1b-instruct-v1 のみサポート 19 Copyright © 2025, Oracle and/or its affiliates • HeatWaveのバージョンアップなしで 最新のモデルを利⽤可能に • 利⽤可能なモデルの⼀覧取得 SELECT * FROM sys.ML_SUPPORTED_LLMS; • ⾼精度、⾼性能 • リージョン別の利⽤可能なモデルや最新のリストは OCI⽣成AIサービスのマニュアルを参照 https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/home.htm
検索拡張⽣成(RAG)による AIの回答精度の向上 20 Copyright © 2025, Oracle and/or its affiliates
導⼊検討が進む検索拡張⽣成(RAG) 企業が⽣み出すデータをビジネスの価値に Non-RAG構成 RAG構成 LLMはインターネットに公開されているテキストデータを学習した モデルのため、インターネットに公開されていないドキュメント(主に 企業内のドキュメント、専⾨分野のドキュメント)についての質問 には正確な回答を⽣成することができない。 ⼤規模⾔語モデルが学習していない知識を、 ベクトル・ストアに保持したドキュメントデータで補完し、 回答を⽣成 〇〇とは何ですか︖ Internet LLM 学習 〇〇とは何ですか︖ Internet LLM 〇〇とは、、、、 連携(ベクトル検索) 学習 〇〇︖ワカラナイ ⼤規模⾔語モデルの知識のみで回答(テキスト⽣成) 21 Copyright © 2025, Oracle and/or its affiliates ベクトル ストア ⼤規模⾔語モデルとベクトルデータベースの合わせ技で回答
RAG利⽤の流れ テキスト ⽣成モデル ③ベクトル検索結果、類似度の⾼いチャンクテキストと プロンプトテキストをLLMに⼊⼒ ④返答テキストを⽣成 prompt チャンク Completion [1.1, 2.9, 3.14] [1.1, 2.9, 3.14] Top4 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] [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] 22 Copyright © 2025, Oracle and/or its affiliates ①ドキュメントをチャンク分割、 ベクトル化しベクトルストアへロード
ユースケース1: パーソナライズされた推奨事項 オブジェクト・ストレージ 「今⽇のおすすめの ベジタリアン向け料理はなに︖」 メニュー 質問 ユーザー 解答 23 「おすすめの料理は次の通りです。 ⾖腐カレー、⾖腐ビリヤニ、 ひよこ⾖のカレー」 HeatWave ベクトル・ストア ユーザーが質問を⼊⼒ HeatWave AutoMLのレコメンデーション・システムが ユーザーの注⽂履歴を元にレストランを提案 LLMがパーソナライズされたおすすめ料理を ⾃然⾔語で回答 ベクトル・ストアに格納されている提案されたレストランの メニューからおすすめの料理を選択 Copyright © 2025, Oracle and/or its affiliates メニュー メニュー
ユースケース2: 予測メンテナンス 質問 「このログの主な問題点はなに︖ 2つの⽂章にまとめて」 本番環境 オブジェクト・ストレージ ログ 問題と対策のナレッジベースのログ 本番環境のログがリアルタイムで HeatWave AutoMLの処理対象となる HeatWaveベクトルストア経由でLLMが ナレッジベースのデータにアクセスできる ユーザー 解答 「このログにおける主な問題は 特定のプロセス(ID 8145)による メモリ使⽤量があらかじめ定義された 閾値を継続的に超過していることです」 ユーザーが質問を⼊⼒ ⾃然⾔語での回答を得る 24 Copyright © 2025, Oracle and/or its affiliates HeatWave ベクトル・ストア HeatWave AutoMLがログから異常を検出しフィルタリング ベクトルストアがログの異常に関するコンテキストを追加し、 LLMに対するプロンプトに情報を追加する LLMが情報が追加されたプロンプト(Augmented Prompt)を元にレポートを⽣成
MySQL HeatWaveでの ベクトル・ストア MySQL HeatWave OLTP 25 Analytics AutoML Copyright © 2025, Oracle and/or its affiliates Autopilot GenAI Vector Store
エンべディング︓データの意味を数値ベクトルに埋め込む 0.5, 1.5, 2.6, -1.1, … 26 Copyright © 2025, Oracle and/or its affiliates
「ベクトル値」を利⽤して類似情報の検索を容易に ⽂章 ⽂章をベクトル値に 変換し格納 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, …] … … 画像 画像をベクトル値に 変換し格納 27 Copyright © 2025, Oracle and/or its affiliates …
ベクトル(VECTOR)データ型と関数 MySQL 9.0 Innovation Release ベクトルの類似度を演算するHeatWaveのみで利⽤可能なDISTANCE関数 • 2つのベクトルを引数とする • 第3引数には距離の演算⽅法を指定 COSINE, DOT, EUCLIDEAN 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) 28 Copyright © 2025, Oracle and/or its affiliates
ベクトル埋め込み作成のためのルーチン
MySQL HeatWave内のテキストデータに対して、簡単にエンべディングを⽣成可能
ML_EMBED_ROW関数:
1件のデータの対してエンべディングを⽣成する
ML_EMBED_TABLEプロシージャー:
テーブルのデータに対してエンべディングを⽣成する
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)
29
Copyright © 2025, Oracle and/or its affiliates
•
対象のテーブルが存在しない場合は、
「元テーブルの主キー+ベクトルデータ型」の
テーブルが⾃動的に作成される
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)
MySQL Shell for VS Code – MySQL HeatWave Chat MySQL HeatWave Chat ⾃然⾔語を使ってチャット形式でLLMと対話可能 ⽂脈が保持され、フォローアップの質問による会話を 可能にする Lakehouse Navigator LLM がデータベース、MySQL HeatWave Lakehouse, HeatWave Vector Store全体または 特定のデータ・セットから情報を取得できるように ガイドし、速度と精度を向上させる グローバル検索と詳細検索 全てのベクトル・ストアを検索することも、 特定のスキーマに検索範囲を限定することも可能 30 Copyright © 2025, Oracle and/or its affiliates
MySQL Shell for VS Code - Lakehouse Navigator RAGのためのドキュメント・ファイルのアップロードとベクトル埋め込みの⽣成 • OCIのプロファイルを⽤意しておくと オブジェクト・ストレージのバケットの⼀覧が表⽰される • アップロードするドキュメントと対象のバケットを選択 31 Copyright © 2025, Oracle and/or its affiliates • ベクトル埋め込みを格納するテーブル名を指定 • 対象のテーブルはHeatWaveクラスターに ⾃動的にロードされる • アップロードする対象のファイル形式を選択 ⾃動判別も可能
MySQL Shell for VS Code - Lakehouse Navigator RAGのためのベクトル埋め込みの⽣成 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 | | +-------------------+---------------+------+-----+---------+-------+ • ベクトル埋め込みが格納されているテーブルの定義 • アップロードされたドキュメントのメタデータや ドキュメントを分割したセグメントの ベクトル埋め込みを格納 • ベクトル埋め込みの⽣成の進捗が表⽰される • ロード済みドキュメントの再ロードやアンロードも可能 32 Copyright © 2025, Oracle and/or its affiliates
RAGテーブルの例
HeatWaveのイン・データベースLLMが⽣成したベクトル埋め込みの格納先
• 各⾏にドキュメントの⼀部である
セグメント単位でのベクトル埋め込みを格納
• 格納されている情報
• ドキュメントがアップロードされたバケットのURL
• ドキュメントのメタデータ
• セグメントの⽂字列
• セグメントのベクトル埋め込み
※画⾯右の例はVECTOR_TO_STRING()関数で
VECTORデータ型の値を⽂字列に変換
• ML_EMBED_TABLE()ストアド・プロシージャ
• セグメントの⽂字列が格納された列から
ベクトル埋め込みを⽣成し別の列に格納可能
33
Copyright © 2025, Oracle and/or its affiliates
document_name: https://objectstorage.us-chicago1.oraclecloud.com/n/idazzjlcjqzj/b/bucket-202411251945/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-88d677b9bbb83c46_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.06737e02,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.98059e02,6.20408e-02,3.44924e-02,-5.85962e-02,-4.80669e-02,-2.94210e02,2.18502e-02,-1.33754e-02,-6.01970e-02,2.98551e-02,5.98533e02,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.89798e03,-1.70986e-02,-3.06104e-03,6.57276e-02,-9.53107e-02,-5.37361e02,2.24137e-02,1.84493e-02,5.42278e-02,4.01875e-03,8.33606e-02,-6.25437e03,8.57158e-02,-7.97270e-02,1.60378e-02,2.08244e-02,8.79194e-02, <略>
HeatWave Chat RAGを活⽤して⾃然⾔語でドキュメントを検索 • チャットの履歴が保存され、 追加の質問でのコンテキスト (⽂脈)として利⽤される • RAGとして利⽤する スキーマを選択可能 • 該当するドキュメントの 情報を表⽰ • 利⽤するLLMおよび⾔語を 選択可能 34 Copyright © 2025, Oracle and/or its affiliates
RAGの有無での精度の違い - 「HeatWave GenAIの主な機能は︖」への回答 モデル: cohere.command-r-plus, オプションの設定はなし RAGなしの場合 RAGありの場合 HeatWave GenAIは、Oracle Autonomous Databaseの主要なコンポーネントであり、機械学習 ワークロードを⾼速化するために設計されています。その 主な機能は、機械学習アルゴリムの⾼速処理と、デー タベース クエリのリアルタイム処理を可能にする、イン メ モリー処理です。 HeatWave GenAIの主な機能は、データベース内の ⼤規模⾔語モデル(LLM)、OCI⽣成AIと Amazon Bedrockとの統合、データベース内ベクト ル・ストア、組み込みの⾃動⽣成、スケールアウト・ベ クトルの処理などです。 → そもそもの製品としての情報が誤っているほか、 OCIでのcohere.command-r-plusは HeatWave GenAIリリース前の2024年6⽉に 提供開始となっているため情報が不⾜している HeatWave GenAIの⽇本語プレスリリース、 製品ページ(oracle.com/jp/heatwave/genai/)の 機能⼀覧とよくある質問、およびプレゼンテーションを 情報源として追加 → 今回のケースでは、上記のうち機能⼀覧とプレスリリースを利 ⽤し回答を⽣成 35 Copyright © 2025, Oracle and/or its affiliates
OCI⽣成AIエージェント・サービスの ナレッジベースとしてのMySQL HeatWave 36 Copyright © 2025, Oracle and/or its affiliates
OCI⽣成AIエージェント・サービス OCI Generative AI Agents AIエージェント構築を素早く、安全に⾏うための、 包括的なエージェント開発プラットフォーム Agent Core AIエージェントの”ブレイン” 様々なツールをオーケストレーション シンプルなAIエージェントの開発 市場投⼊までの時間を⼤幅に短縮 Oracle Database, MySQL HeatWaveに対応 お客様のデータをすぐにAIエージェントと活⽤ 事前準備されたツールを提供 お客様の使い⽅に合わせて柔軟にカスタマイズ Tools エージェントが外部情報を取得するためのツール 事前準備済み RAG tool SQL tool ⽇本ではOCIの⼤阪リージョンで利⽤可能 カスタム Functions API Calling プログラム API プログラム ⾮構造データ 37 Copyright © 2025, Oracle and/or its affiliates 構造データ API 外部プログラム&サービス
OCI⽣成AIエージェントのナレッジ・ベースとしてのMySQL HeatWave OCI⽣成AIエージェントのRAGツールにて MySQL HeatWaveに格納されたベクトル埋め込みを利⽤ • MySQL HeatWaveのデータを活⽤して ⽂脈に応じたより適切な回答を⾃然⾔語で対応 • ナレッジ・ベース⽤のテーブル定義 データ DOCID レコードまたはドキュメントのID BODY エージェントが検索対象とするコンテンツ⽂字列 データベースの接続情報を管理する OCIのデータベース・ツールを経由して接続 VECTOR BODY列のコンテンツから⽣成されたベクトル埋め込み CHUNKID コンテンツが512トークンを越える場合はそのチャンク (オプション) OCI⽣成AIエージェントとMySQL HeatWaveは 別のリージョンや別のテナンシーに配置することも可能 URL コンテンツのURL (オプション) TITLE コンテンツのタイトル(オプション) PAGE_NUMBERS コンテンツのページ番号(オプション) • 38 MySQL HeatWaveには所定の形式のテーブルと ベクトル検索の結果を返すストアド・プロシージャが必要 列名 ナレッジ・ベース作成時に「データ・ストア・タイプ」として 「データベースAIベクトル検索」選択 • 要件および利⽤時のポイント OCI⽣成AIエージェントとデータベース・ツールは 同⼀リージョンに作成すること Copyright © 2025, Oracle and/or its affiliates ※ Lakehouse Navigatorが作成するRAGテーブルとは 定義が⼤きく異なるので注意
MySQL HeatWaveが解決する多様なデータ活⽤の課題 ECサイトを例に リアルタイムでの売上や⾏動分析 お客様ごとの「おすすめ」の提供 RDBMSのテーブルに蓄積された 履歴データに対する 複雑なSELECT⽂の実⾏ お客様の購買履歴や 属性情報に対する 機械学習でのレコメンデーション レビューの感情分析や要約 ⽣成AIを利⽤して 書き⼿の感情の分析や 複数のレビューを要約 異なるシステムやサービス間でのデータのやりとりが発⽣ ⽣成AI データベース 機械学習 39 Copyright © 2025, Oracle and/or its affiliates
MySQL HeatWaveが解決する多様なデータ活⽤の課題 ECサイトを例に リアルタイムでの売上や⾏動分析 お客様ごとの「おすすめ」の提供 RDBMSのテーブルに蓄積された 履歴データに対する 複雑なSELECT⽂の実⾏ お客様の購買履歴や 属性情報に対する 機械学習でのレコメンデーション レビューの感情分析や要約 ⽣成AIを利⽤して 書き⼿の感情の分析や 複数のレビューを要約 データを移動せずに⼀つのクラウド・サービス内で処理可能 ⽣成AI データベース 機械学習 40 Copyright © 2025, Oracle and/or its affiliates
MySQL HeatWaveによりセキュリティが強固に MySQL HeatWave その他のサービス レイクハウス 機械学習 LLM ユーザ・ データ アプリ 分析 OLTP ベクター ストア HeatWave • データが広範囲にわたって移動 • データは1つのデータベース・システムで管理される • 暗号化鍵、ユーザー・アクセス、認証スキームなど、 異なるセキュリティ特性を持つ複数のサービス • 統⼀的なアクセス制御と単⼀の構成 • すべての通信が認証され暗号化 • 41 ユーザーが複数のサービスを構成し、接続する必要がある Copyright © 2025, Oracle and/or its affiliates
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
MySQL HeatWave GenAI の使い所 43 Copyright © 2025, Oracle and/or its affiliates
MySQL HeatWave GenAI を簡単に活⽤できるユースケース 1. MySQL内のテキストデータに対してベクトル検索したい 2. SQLだけでLLMを使いたい、LLMをチャット形式で使いたい 3. RAGを簡単に活⽤したい 4. (⾃然⾔語でSQLを⽣成したい) 44 Copyright © 2025, Oracle and/or its affiliates
MySQL HeatWave GenAI で使⽤できるルーチン(プロシージャー、関数) ルーチン名 説明 ML_GENERATE LLMに対して問い合わせを実⾏ ML_GENERATE_TABLE LLMに対してバッチ処理で問い合わせを実⾏(事前にテーブルに問い合わせを格納しておく) VECTOR_STORE_LOAD オブジェクトストレージ上のファイルをエンベディングしてHeatWave GenAIのベクトルストアにロードする ML_RAG ML_RAG_TABLE HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせを実⾏ 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 45 Copyright © 2025, Oracle and/or its affiliates ※別途、DISTANCE関数などのベクトル関数も使えます https://dev.mysql.com/doc/heatwave/en/mys-hw-vector-functions.html
「MySQL内のテキストデータに対してベクトル検索したい」 時に使うもの ルーチン名 説明 ML_GENERATE LLMに対して問い合わせを実⾏ ML_GENERATE_TABLE LLMに対してバッチ処理で問い合わせを実⾏(事前にテーブルに問い合わせを格納しておく) VECTOR_STORE_LOAD オブジェクトストレージ上のファイルをエンベディングしてHeatWave GenAIのベクトルストアにロードする ML_RAG ML_RAG_TABLE HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせを実⾏ 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 46 Copyright © 2025, Oracle and/or its affiliates ※別途、DISTANCE関数などのベクトル関数も使えます https://dev.mysql.com/doc/heatwave/en/mys-hw-vector-functions.html
「SQLだけでLLMを使いたい、LLMをチャット形式で使いたい」 時に使うもの ルーチン名 説明 ML_GENERATE LLMに対して問い合わせを実⾏ ML_GENERATE_TABLE LLMに対してバッチ処理で問い合わせを実⾏(事前にテーブルに問い合わせを格納しておく) VECTOR_STORE_LOAD オブジェクトストレージ上のファイルをエンベディングしてHeatWave GenAIのベクトルストアにロードする ML_RAG ML_RAG_TABLE HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせを実⾏ 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 47 Copyright © 2025, Oracle and/or its affiliates ※別途、DISTANCE関数などのベクトル関数も使えます https://dev.mysql.com/doc/heatwave/en/mys-hw-vector-functions.html
「RAGを簡単に活⽤したい」 時に使うもの ルーチン名 説明 ML_GENERATE LLMに対して問い合わせを実⾏ ML_GENERATE_TABLE LLMに対してバッチ処理で問い合わせを実⾏(事前にテーブルに問い合わせを格納しておく) VECTOR_STORE_LOAD オブジェクトストレージ上のファイルをエンベディングしてHeatWave GenAIのベクトルストアにロードする ML_RAG ML_RAG_TABLE HeatWave GenAIのベクトルストアにロードされたデータを使って、 LLMに対してRAGを使った問い合わせを実⾏ 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 48 Copyright © 2025, Oracle and/or its affiliates ※別途、DISTANCE関数などのベクトル関数も使えます https://dev.mysql.com/doc/heatwave/en/mys-hw-vector-functions.html
MySQL 内のデータに対してベクトル検索する⽅法 49 Copyright © 2025, Oracle and/or its affiliates
MySQL内のテキストデータに対してベクトル検索する⽅法 1. MySQLのデータをMySQL HeatWaveに移⾏する • データ移⾏にはMySQL Shellのデータダンプ&ロードユーティリティを使⽤可能 • データ移⾏後にレプリケーションを設定すれば、最新データをMySQL HeatWave環境に同期も可能 2. ML_EMBED_TABLEプロシージャーを実⾏して、テキストデータに対するエンべディングを⽣成 • 既存のテーブルにベクトルデータ型の列を追加することも、別テーブルを作成することも可能 3. DISTANCE関数を使ってベクトル検索する • 検索したいキーワードに対するエンべディングは ML_EMBED_ROW で⽣成する 50 Copyright © 2025, Oracle and/or its affiliates
DISTANCE関数の使い⽅ 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) 「⽝と猫」のCOSINE距離は近い(意味的に近い) 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) 51 Copyright © 2025, Oracle and/or its affiliates 「⽝とイルカ」のCOSINE距離は「⽝と猫」よりも遠い
DISTANCE関数の使い⽅ 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) 52 Copyright © 2025, Oracle and/or its affiliates 「⽝と⼩屋」のCOSINE距離は「⽝と猫」よりは遠いが 「⽝とイルカ」よりは近い
補⾜︓同じデータでもエンベディング⽅式が変わればベクトル間の距離は変わる OCI Generative AIサービスと連携し、”cohere.embed-multilingual-v3.0”でエンべディングした場合の COSINE距離 • ⽝と猫︓0.1125444769859314 • ⽝とイルカ︓0.23323941230773926 • ⽝と⼩屋︓0.21109145879745483 53 Copyright © 2025, Oracle and/or its affiliates
備考︓OCI Generative AIサービスとの連携⽅法 • OCI Generative AIサービスと連携するためには、事前設定が必要です • 設定⽅法は以下のドキュメントを参照して下さい • HeatWave User Guide / Authenticating OCI Generative AI Service https://dev.mysql.com/doc/heatwave/en/mys-hw-genai-authenticate-service.html 54 Copyright © 2025, Oracle and/or its affiliates
レビューコメントに対してベクトル検索する例 マンガに対するレビューが投稿され、commentテーブルの comment列に格納されていることを想定 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) 55 Copyright © 2025, Oracle and/or its affiliates
レビューコメントに対してベクトル検索する例 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) 56 Copyright © 2025, Oracle and/or its affiliates
レビューコメントに対してベクトル検索する例 ・ 第⼆引数に存在しないテーブルを指定した場合は、 「元テーブルの主キー+ベクトルデータ型」のテーブルが ⾃動的に作成される 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) 57 Copyright © 2025, Oracle and/or its affiliates
レビューコメントに対してベクトル検索する例
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列に⼊っているレビューと「ミステリー」という単語の意味的な近さを
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
58
Copyright © 2025, Oracle and/or its affiliates
レビューコメントに対してベクトル検索する例 *************************** 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) 59 Copyright © 2025, Oracle and/or its affiliates
備考︓”cohere.embed-multilingual-v3.0”でエンべディングした場合の実⾏例
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
60
Copyright © 2025, Oracle and/or its affiliates
備考︓”cohere.embed-multilingual-v3.0”でエンべディングした場合の実⾏例 *************************** 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) 61 Copyright © 2025, Oracle and/or its affiliates
SQLだけでLLMを使う⽅法、LLMをチャット形式使う⽅法 62 Copyright © 2025, Oracle and/or its affiliates
SQLだけでLLMを使う⽅法、LLMをチャット形式使う⽅法 LLMに単⼀の質問を投げる場合 • ML_GENERATE を使う LLMにバッチ処理で複数の質問を投げる場合 • ML_GENERATE_TABLE を使う LLMをチャット形式で使う場合 • HEATWAVE_CHAT を使う 63 Copyright © 2025, Oracle and/or its affiliates
LLMに単⼀の質問を投げる例
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-8binstruct-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)
64
Copyright © 2025, Oracle and/or its affiliates
LLMに単⼀の質問を投げる例(オプションを指定し、出⼒サイズを調整)
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-8binstruct-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)
※設定できるオプションの詳細はドキュメントを参照
https://dev.mysql.com/doc/heatwave/en/mys-hwgenai-ml-generate.html
65
Copyright © 2025, Oracle and/or its affiliates
LLMにバッチ処理で複数の質問を投げる例 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) 66 Copyright © 2025, Oracle and/or its affiliates
LLMにバッチ処理で複数の質問を投げる例
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)
67
Copyright © 2025, Oracle and/or its affiliates
LLMをチャット形式で使う場合
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-r08-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 は、コヒアの他の⾔語モデルと同様に、膨⼤な量のテキストデータを学習し、その知識と⽂脈理解に基づいて、⼈
間のような応答やテキストの⽣成を⾏うことができます。
<後略>
68
Copyright © 2025, Oracle and/or its affiliates
LLMをチャット形式で使う場合 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) 69 Copyright © 2025, Oracle and/or its affiliates
LLMをチャット形式で使う場合 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) 70 Copyright © 2025, Oracle and/or its affiliates
RAGを簡単に活⽤する⽅法 71 Copyright © 2025, Oracle and/or its affiliates
RAGを簡単に活⽤する⽅法 1. RAGで参照するデータをVECTOR_STORE_LOADルーチンを使ってHeatWave GenAIのベクトルストアに格納する 2. ML_RAG、ML_RAG_TABLE を実⾏してLLMに対して問い合わせをする 72 Copyright © 2025, Oracle and/or its affiliates
実⾏例︓ベクトルストアへロードするテキストドキュメント ■HeatWave_MySQL.txtの内容 HeatWave MySQLは、オラクルが提供するMySQLのマネージドサービスです。通常のMySQLのマネージドサービスとして使⽤することもできますが、 HeatWaveという拡張機能を利⽤することで検索クエリーを通常のMySQLよりも⾼速に実⾏できます。従来MySQLは⼤量データの分析/集計処理などに は不向きとされてきましたが、HeatWave MySQLでは⼤量データの集計処理も超⾼速に実⾏できます。 また、HeatWave MySQLにはMySQL Databaseだけで(SQLだけで)機械学習を実現できるHeatWave AutoML、オブジェクトストレージ上のデー タを⾼速にHeatWaveでの分析/集計対象にできるHeatWave Lakehouse、SQLだけでLLMを活⽤したりMySQLをベクトルストアとして使⽤できる HeatWave GenAIなどの拡張機能もあります。 73 Copyright © 2025, Oracle and/or its affiliates
実⾏例︓ベクトルストアへのドキュメントのロード
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 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
ロードの進捗状況を確認するためのSQLが表⽰される
74
Copyright © 2025, Oracle and/or its affiliates
実⾏例︓ベクトルストアへのデータロード状況の確認 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) 75 Copyright © 2025, Oracle and/or its affiliates
実⾏例︓ベクトルストアへのデータロード状況の確認 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) 76 Copyright © 2025, Oracle and/or its affiliates
実⾏例︓ベクトルストアへのデータロード状況の確認 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) 77 Copyright © 2025, Oracle and/or its affiliates
実⾏例︓RAGを使わないLLMへの問い合わせ
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.commandr-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)
78
Copyright © 2025, Oracle and/or its affiliates
実⾏例︓RAGを使ったLLMへの問い合わせ 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) 79 Copyright © 2025, Oracle and/or its affiliates
実⾏例︓RAGを使ったLLMへの問い合わせ
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"
}
],
80
Copyright © 2025, Oracle and/or its affiliates
実⾏例︓RAGを使ったLLMへの問い合わせ "vector_store": [ "`RAG`.`test_embeddings`" ], "retrieval_info": { "method": "n_citations", "threshold": 0.0958 } } 1 row in set (0.00 sec) 81 Copyright © 2025, Oracle and/or its affiliates
まとめ 82 Copyright © 2025, Oracle and/or its affiliates
まとめ • HeatWave GenAIを使うと、MySQL内のテキストデータに対してベクトル検索を活⽤できる • SQLだけでLLMを活⽤でき、RAGの仕組みも簡単に構築できる • HeatWave AutoMLと組み合わせるなどすると、更なる活⽤も可能 83 Copyright © 2025, Oracle and/or its affiliates