Slide 1

Slide 1 text

エンプラRAG構築の最適解! Oracle AI Vector Searchによる明日からできるRAG! db tech showcase 2024 2024/7/11

Slide 2

Slide 2 text

本日お話ししたいこと Oracle AI Vector Searchは、 うまい! 安い! 早い!

Slide 3

Slide 3 text

最上 隆史 アドバンストテクノロジー部 ディレクター ウルシステムズ株式会社 2024年 Oracle DevelperDays登壇。GenerativeAI Japan登壇。DBTechShowcase登壇。 2023年 ScrumMaster(CSM)取得。 2020年 DBTechShowcase登壇。[RDS脳なあなたにKVSモデリングのノウハウを公開!KVS設計はこうしよう] 2019年 ChainerUserGroupにJOIN、DLLABにて一般向け講師、執筆等でChainer普及活動に貢献。 2019年 AWS DeepRacer日本選抜。 ウルシステムズ歴20年。アーキテクト、業務/データモデリング、AIを中心とし た技術コンサルティングおよび開発業務を展開。システム構築に関するグランド デザイン策定から要件定義、アーキテクチャ策定、概念モデリング、設計、開発、 運用、パフォーマンスチューニングまで幅広く支援。 SLAM(自己位置推定)系、ロボティクス系も好き。現在は蓄積された業務知識を 武器に生成AIを使ったビジネスユースケースへの適用を複数の企業と展開。

Slide 4

Slide 4 text

◼ LLMを業務活用して、もっと便利に使いたい。 ◼ でも、その業務をLLMが知らない。教えたい!? 生成AI+RAGが求められるようになった背景 LLMだけでは業務活用に十分ではありません。効果的な業務活用のためには、新卒教育のようにLLMに業務知識 を教える必要があります。 LLMモデルに 業務全体を記憶させる LLMに回答に必要な 業務情報を都度教える FineTuning RAG

Slide 5

Slide 5 text

生成AI+RAGが求められるようになった背景 RAGは、うまい! 安い! 早い! LLMモデルに 業務全体を 記憶させる 回答に必要な 業務を検索して LLMに都度与える FineTuning RAG • 精度が高い。のか?? Pros Cons • 検証までに時間がかかる • お金もかかる • ハルシネーション問題 • すぐに検証できる • さほどお金はかからない • 検証精度が高いと十分使える • ハルシネーション対策 • ハルシネーション問題 Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs(https://arxiv.org/pdf/2312.05934) 結果として、ファインチューニングは一部の改善を提供しますが、RAGは既存の知識や新しい知識の注入において一貫して優れた性能を示した。特に、LLMがファインチューニングで新しい事実を学ぶ のは困難であることが明らかになりました。

Slide 6

Slide 6 text

生成AI+RAGが適用できる業務領域 複数のデータセットが複数のエリアに対して業務改善ができる。 カスタマサポート 過去の問い合 わせログ 製品 マニュアル 業界トレンド/ 市場調査 R&D、製品企画 マーケティング 人事部門、採用 • 回答の正確性と一貫性が向上 • 新入社員の教育時間短 • 縮顧客満足度の向上 • イノベーションの加速 • 競合分析の効率化 • 新製品アイデアの創出 • ターゲット顧客の深い理解 • パーソナライズされたキャンペーン作成 • トレンド予測の精度向上 • 適切な人材のマッチング精度向上 • 採用プロセスの効率化 • 従業員のキャリア開発支援 履歴書/評価 データベース 技術論文 特許情報

Slide 7

Slide 7 text

◼ ベクトル検索は「意味が近い」データを検索できる おいしくするタレは、ベクトル検索にある エンプラデータ(社内文書、社内データ)が、なぜRAGを使うと活用できるようになるのか。 彼は公園で ジョギングを している 彼女は公園を 走っている 私は夏休みにビーチに行くのが好きです 彼女は夏にビーチを訪れるのが好きだ 似てる 似てない 似てる ベクトルデータのイメージ d1 d2

Slide 8

Slide 8 text

ベクトル化の重要性 テキストの意味的な特徴を数学的に高次元のベクトルで表現することで、意味が近い・遠いが数字でわかる ✓ ハルシネーション問題に対処ができる ✓ 社内情報/データを使って、より優れた回答を生み出す ✓ LLMトークンの制限を超えないようにできる • 猫は魚が好きだ • ネコは魚を食べるのが好きだ • 猫は魚料理を喜んで食べる • フェリーヌは魚介類を好む • 数学は難しい • 数式を理解するの は大変だ • 数学の問題を解く のは骨が折れる • 複雑な計算は頭を 悩ませる • 動物の学習能力は驚くべきものだ • 猫の問題解決能力を研究している • 動物の知能を数値化するのは難しい • 猫の空間認識能力は高度だ 意味が近い(0.1) 意味が近い(0.1) 意味が近い(0.1) 意味が微妙に近い (0.3) 意味が遠い (0.9) 意味が微妙に近い (0.4)

Slide 9

Slide 9 text

ベクトル化技術の発展 初期の単純なモデルから現代の複雑で文脈を理解するモデルまで、半世紀以上にわたる進化の歴史 1960s ベクトル空間モデル 1990s 潜在意味解析 2003s トピックモデル(LDA) 2013s Word2Vec 2018-現在 BERT,GPT等の 大規模言語モデル テキストを数値ベクト ルとして表現する基本 的なアイデアが誕生。 しかし、当時は計算能 力の制限により、実用 化は限定的。 単語の共起関係を利 用して、潜在的な意味 を捉えようとした。テ キストの意味的類似性 をより良く表現できる ようになる。 文書をトピックの確率 分布として表現する手 法が開発。テキストの 意味構造をより深く理 解できるようになる。 単語レベルでの効率 的なベクトル表現が可 能。大規模なテキスト から学習し、単語間の 意味的関係をより精 密に捉えることができ た。、多くの自然言語 処理タスクの性能を大 幅に向上させる。 2018年以降、BERT、 GPTシリーズなどの 大規模言語モデルが 次々と登場。自然言語 処理タスクの性能を飛 躍的に向上させ、文脈 を考慮したより深い言 語理解と生成が可能 になった。

Slide 10

Slide 10 text

生成AI+RAGの代表的アーキテクチャとは 生成AI+RAGのデータの流れ 【質問】 猫の寿命は? 【LLM統合プロセス】 • 一般的な寿命範囲の特定 • 品種による差異の認識 • 環境要因の影響の考慮 • ケアの重要性の強調 • 個体差への言及 【検索結果1】 家猫の平均寿命は12〜18 年程度です。適切なケア で20年以上生きる猫もい ます。 【検索結果2】 猫の品種によって寿命は 異なります。シャム猫は 15〜20年、メインクーン は12〜15年程度です。 【検索結果3】 屋内で飼育される猫は屋 外の猫よりも長生きしま す。平均で13〜17年の寿 命があります。 【LLMが生成する回答】 猫の平均寿命は一般的に12〜18年程度 ですが、様々な要因によって変動します。 品種による差異があり、例えばシャム猫は 15〜20年、メインクーンは12〜15年程 度の寿命があります。環境も重要な要素で、 屋内で飼育される猫は13〜17年程度の 寿命がある一方、屋外猫は3〜10年と短く なる傾向があります。これは、屋外の様々 な危険から守られているためです。適切な ケアと栄養管理を行えば、20年以上生き る猫もいます。猫の寿命は、遺伝的要因、 環境、健康管理など、多くの要素に影響さ れます。したがって、猫の寿命を最大限に 延ばすには、適切な栄養、定期的な獣医の チェック、安全な屋内環境の提供が重要で す。ただし、個体差があるため、これらはあ くまで平均的な数値であることに注意して ください。 Retriever LLM

Slide 11

Slide 11 text

生成AI+RAGの代表的アーキテクチャとは どのクラウドを使っても構成は一緒 Online Application Vector Store Database LLM Batch Application

Slide 12

Slide 12 text

RAGという技術が熱いらしい!5,000万で導入しろ! は、はい... ~3ヶ月後~ あのラグタイムの進捗は? RAGです...結果は... おお!素晴らしいんだろう? 実は...イマイチで... 何!?5,000万かけて何してた? 構築に4500万、検証に500万使って... 検証?何を検証した? えーと...GPT-4との比較でF1スコアを... で? すみません...でも、学びはたくさんあって... へぇ、5000万の学びか。高い授業料だったな! 次は100万くらいで... (突然笑う)「面白い!承認だ。今度こそ結果を出せよ! 話はかわりますが・・・こういうことってありますよね? パート1 RAG導入の珍道中

Slide 13

Slide 13 text

◼ いまは構築はしたくないなー。ちょっと試してみたい だけなんだけどなぁ。 ◼ WEBマニュアルに詳しく書いてあるけど、読みたく ないなー。いま、どうしたらいいのか教えて欲しいん だけどぉー。というか構築はどうでもいいんだけ どぉ。 ◼ あーなんか聞いたことのないクラウドリソース名が でてきた。いやだなー。 ◼ あ、権限エラーか・・・あ、IPアドレス制限か。うーん。 つながらないなー。ポートかなー。で、3日がすぎる。 話はかわりますが。。。こういうことってありますよね? パート2 構築が最初のハードル。あ、権限が、あ、ポートが。。。うーん。立ち上がらない・・・

Slide 14

Slide 14 text

➢ alter table employee add column SKILL_VECTOR VECTOR; ➢ insert/update employee XXXX ➢ select VECTOR_DISTANCE(A, B) from employee それ、いつもあなたのそばにあるOracleデータベースが解決します! alter add columnで始まる、Oracleデータベース上でのベクトル検索

Slide 15

Slide 15 text

代表的アーキテクチャと一線を画すOracleデータベース ベクトル検索のために、エンプラデータ(社内情報/社内データ)を別のVector Storeにレプリケートするよりも、 ベクトル化を追加する方が簡単である Online Application Vector Store Database LLM Batch Application Online Application Oracle Database23ai LLM Batch Application Vector Store 一般的なRAGアーキテクチャ Oracleを使ったRAGアーキテクチャ

Slide 16

Slide 16 text

◼ 新規にVECTORデータ型を構成 Oracle AI Vector Searchの基本 あなたの得意な、普通のSQLにびっくり!! これだけ知っていれば十分使える。 CREATE TABLE employee( id number, name varchar2(128) skill varchar2(1024) skill_vector VECTOR );

Slide 17

Slide 17 text

◼ 行制限(FETCH)句の新しいAPPROXIMATEキーワードは、類 似度検索を示す。 skill_vectorを使用し、類似度で上位5の社員を検索 Oracle AI Vector Searchの基本 あなたの得意な、普通のSQLにびっくり!! これだけ知っていれば十分うまい。 SELECT id, name, skill FROM employee ORDER BY VECTOR_DISTANCE(skill_vector, :QUERY_VEC) FETCH APPROXIMATE FIRST 5 ROWS ONLY;

Slide 18

Slide 18 text

◼ ベクトル演算子 より類似性の高い同士の方が、ベクトル間の距離が短くなる。 Oracle AI Vector Searchの基本 もうちょっとだけ、深堀り① VECTOR_DISTANCE(猫, 魚) < VECTOR_DISTANCE(猫, 数学)

Slide 19

Slide 19 text

◼ テーブル結合 ベクトルストアのみでは業務データとの結合は実現できない。 私たちが知っている多様なSQLが使える。 もちろんPL/SQLも!トランザクションも!インデックスによる高速化も! Oracle AI Vector Searchの基本 もうちょっとだけ、深堀り② SELECT id,name FROM employee e, project_assign ps WHERE e.id = ps.employee_id ORDER BY VECTOR_DISTANCE(e.skill_vector, :QUERY_VEC) FETCH APPROXIMATE FIRST 5 ROWS ONLY;

Slide 20

Slide 20 text

Oracle AI Vector Searchの基本 もうちょっとだけ、深堀り③ 関数 説明 UTL_TO_TEXT テキストをチャンクに分割する関数。文書を扱いやすい小さな単位に分割するの に役立つ。 UTL_TO_CHUNKS 大きなテキストドキュメントを小さなチャンク(断片)に分割する。 UTL_TO_EMBED テキストをベクトル埋め込みに変換する関数。単一のテキストから埋め込みベク トルを生成できる。 LOAD_ONNX_MODEL ONNXモデルをデータベースにロードする関数。外部で学習したモデルをDBに 取り込める UTL_TO_SUMMARY テキストから短い要約を生成します。 その他もりだくさん https://docs.oracle.com/en/database/oracle/oracle-database/23/vecse/oracle-ai-vector-search-users-guide.pdf

Slide 21

Slide 21 text

Oracle AI Vector Searchの基本 OracleDeveloperDay2024 https://www.youtube.com/watch?v=5ONkZ8Zgwu0

Slide 22

Slide 22 text

生成AI+RAGアプリケーションを作る タレントマネジメントシステム構想

Slide 23

Slide 23 text

◼ 設計・開発の課題 • スキルの設計方式(マスタ化?add column?)がいつも悩む。 • 案件紹介時点では、そもそもスキルが明確にならない。 • 密接な関係にあるはずの社内評価システムとの連携ができない。 →物理的な問題ではなく、連携できる項目がない。目標?結果? ◼ 運用の課題 • 個人別スキルを、誰が・どう・いつ・メンテナンスするのか? • スキル名って名寄せが必要。 • プロジェクトはスキルだけでは成り立たない。その人の人となり。人と人 との関係性も正否を分ける。これらの情報は誰かが知っている。 私のタレントマネジメントシステム構想 本来必要なはずのタレントマネジメントシステムが、嫌われる理由を考えてみた。

Slide 24

Slide 24 text

タレントマネジメントシステムの構想 タレントマネジメントシステムは、自然言語で検索できるべき。 600人の社員 生成AIを使って携帯ショップの窓口をサポート し、最適な料金プランを提案するシステムの構築 を要求されている。理由はわかんないけど、Aベ ンダーからの引継ぎなので、我々には計画性が問 われているかと。アーキテクチャ・設計センスも 必要、あとはお客様をリードできれば・・・ Lv3を2人、Lv4が1人かな。期間は9月から空い ている人で。 “ ” スコア 案件紹介 技術 管理 業務 要求スキル抽出 Aさん Bさん Cさん Dさん スコア算出

Slide 25

Slide 25 text

タレントマネジメントシステムのデータ構造 ベクターカラムを追加するだけ! 社員関係性 ◆ 社員ID ◆ 社員ID 関係性 Vector_関係性 社員 ◆ 社員ID 氏名 性別 ジョブランク スキル_IT スキル_マネジメント スキル_ビジネス ストレングス vector_スキル_IT Vector_マネジメント Vector_ビジネス Vector_ストレングス プロジェクト ◆ プロジェクトID プロジェクト名 業界/業務 利用技術 どのくらい燃えたか vector_業界/業務 vector_利用技術 Vector_どのくらい燃えた か プロジェクトメンバ ◆ プロジェクトID ◆ 社員ID 役割 計画工数 実績工数 経験値、実績 vector_経験値、実績 いままでは「関係性」「スキル」「利用技術」等のデータを検索しやすいように、事前に人間が定義した 項目別に前処理する必要があった。→ それ、自然言語のままでいけます! プロジェクト評価 目標設定/評価 vector_目標設定/評価

Slide 26

Slide 26 text

技術、管理、業務の単位別に類似度を算出しアンサンブルする タレントマネジメントシステムのクエリ SQL拡張をおぼえるだけ SELECT id, name, ( VECTOR_DISTANCE(skill_it, :required_skill_it) + VECTOR_DISTANCE(skill_mng, :required_skill_mng) + VECTOR_DISTANCE(skill_biz, :required_skill_biz) / 3 ) as score FROM employee ORDER BY score FETCH APPROXIMATE FIRST 5 ROWS ONLY;

Slide 27

Slide 27 text

普通のWEBアプリと同じ構成じゃん!! おお、これなら1日で作れそう。 依頼文 候補メンバー INSERTと同時に Embedding Webアプリ アサイン 担当 OCI Computing Instance Oracle 23c with Vector Search LLM Embedding Embed v3 “embed-multilingual-v3.0” + 社員データ Query 類似度

Slide 28

Slide 28 text

できたぞ、近未来のタレントマネジメントシステム

Slide 29

Slide 29 text

成功したチームをお手本に、成功率の高いチームを作る。ここもベクト ル検索を使える。 タレントマネジメントシステムの次の構想 組織としては、成功率の高いプロジェクト体制のスケールアウトが大事。 クラスタからピックアップ 成功したチーム体制 成功するかもしれない チーム体制

Slide 30

Slide 30 text

◼ SQLが書ける人は、「今すぐ」「簡単に」RAGを検証できる ◼ オンプレ環境にもRAGが導入できる ◼ 特別なソフトウェアの導入が不要(Oracleだけあればいい) ◼ ベクトルのバージョン管理ができる ◼ Oracleの管理ノウハウがそのまま活かせる(学習コストが低い) ◼ 闇雲にチューニング沼には入らない ➢ ブラックボックスの組み合わせ RAG沼は危険 Oracle AI VectorSearchについて Oracle AI Vector Search を使った感触 OracleDeveloperDay2024 https://www.youtube.com/watch?v=5ONkZ8Zgwu0

Slide 31

Slide 31 text

1. 構築が1、検証が9であること。 • 事前検証にかける時間の割合を間違えてはいけない。構築は検証が終わった後に実施する。 2. OracleDatabase(23c以降)は、生成AI+RAGに向いている。 • 既にそこにあるOracleDatabaseであれば、alter table add columnするだけ。構築不要。 • そこには、すでに検証するためのエンプラデータ(社内情報、社内データ)がある。使える。 3. 生成AI+RAGの適用範囲として、いままで実現が難しかったエリアを再考しよう! • その一つとして、タレントマネジメントシステムの可能性について触れた。 • データ項目設計が難解であった部位が使えるデータに代わる。システム構成のゲームチェン ジャーである。 4. 私は予測する! • すべてのI/Fは自然言語に置き代わる時がある。そう、APIもSDKもすべて。 • ローカル言語(英語、日本語、ドイツ語、中国語・・・)は単なるビューでしかない時がくる。 • その時に向けて、今、準備を始める必要があります。さあ、一緒に取り組みましょう! まとめ

Slide 32

Slide 32 text

ウルシステムズ サービス紹介 PoCだけでは終わりにさせない。生成AIビジネスユースケース実践適用を推進! 生成AI導入コンサルティング 精度向上施策の適用コンサルティング 運用サポートと技術支援コンサルティング • 現状分析:現業務フローおよびシステム構成の分析。 • 生成AIに関するユースケース、トレンドおよび技術情報の提供:業界別ユースケース(製造業、金融業、医療業界など)、特定のビジネ スシナリオでのAI活用事例を提供。 • ソリューション提案:貴社のビジネスニーズに合った具体的なソリューションを提案。 • 要件整理、効果測定:後続の要件定義のための準備。 • 計画策定:グラインドデザイン策定、段階的な導入計画の策定と実行スケジュールの明確化 • New!! Dify導入コンサルティングサービス • トランスファーラーニング:基礎モデルを微調整し、特定のタスクやドメインに対する精度を向上施策。 • プロンプトエンジニアリング: プロンプトを再設計することで、生成AIモデルの出力精度の向上施策。 • フィードバックループ: ユーザーからのフィードバックに対する検討・検証・施策実行。 • ユーザー教育:モデルの利用方法、設定、カスタマイズについてのテクニカルトランスファーセッションの開催。 • 技術サポート:モデル運用中のトラブルシューティングと技術支援を24/7で提供およびドキュメント作成支援。 • メンテナンスとアップデート:定期的なモデルの調整と最適化、及び各クラウドサービスのアップデート対応。