Slide 1

Slide 1 text

RAGの実用に向けた課題と知見を振り返りながら 次の生成AIの活用を考えてみる 2024.7.19 新規事業部 生成AIチーム 山本紘暉

Slide 2

Slide 2 text

Xへの投稿の際は、 ハッシュタグ #devio2024 でお願いいたします。 2 お願い

Slide 3

Slide 3 text

classmethod 自己紹介:山本紘暉 クラスメソッド株式会社 新規事業部 生成AIチーム 研究開発エンジニア 2020年 5月~ ・コンピュータビジョン 骨格検出や人物追跡 2023年 3月~ ・生成AIやLLM 最近はRAGに注力 「クラスメソッド 山本 ブログ」で検索 https://dev.classmethod.jp/author/yamamoto-hiroki/ 研究開発 ・最新研究と実適用の間の橋渡し ・妥当な期間・コスト・品質 ・着実に進めるために ・有り物だけでなく自作も 3

Slide 4

Slide 4 text

classmethod 導入をご支援した事例 4 https://classmethod.jp/cases/kusurinomadoguchi/ https://classmethod.jp/cases/optage/ 詳細はリンク先をご覧ください 「クラスメソッド 生成AI 事例」で検索

Slide 5

Slide 5 text

classmethod このセッションの内容 1.RAGの知見・課題(30分) ・1-1.はじめに・RAGの概要 ・1-2.回答改善の知見・課題 ・1-3.実用に向けた課題 2.次の生成AI活用に向けて(5分) ・2-1.Agent(RAGの次) ・2-2.データ活用のための準備(基盤づくり) 5

Slide 6

Slide 6 text

1.RAGの知見・課題

Slide 7

Slide 7 text

1-1.はじめに・RAGの概要

Slide 8

Slide 8 text

classmethod RAGとは LLM単体では知らないことを答えさせる (RAG:Retrieval Augmented Generation) 検索 で LLM を 拡張 8

Slide 9

Slide 9 text

classmethod LLMの問題点・RAGの目的 ユーザ 質問 誤った回答 LLM プログラム 質問 誤った回答 ユーザ 質問 正しい回答 LLM プログラム 質問 + 関連テキスト 正しい回答 参考 ドキュメント 検索 関連テキスト 通常 RAG 9

Slide 10

Slide 10 text

classmethod RAGの構成要素(ベーシックな構成) ユーザ 質問 回答 LLM プログラム 質問 + 関連テキスト 回答 参考 ドキュメント インポート 検索 システム 質問 関連テキスト 10

Slide 11

Slide 11 text

classmethod RAGのシステム構成(例:AWSの場合) AWS ユーザ Slack App Slack Notion アップロード ドキュメント (PDF・ワードなど) Python プログラム (in コンテナ) App Runner Kendra インデックス S3 バケット Bedrock Anthropic Claude インポート 11

Slide 12

Slide 12 text

classmethod RAGを使ったチャットボットの動作(例) ユーザが社内情報に関して質問 ボットが社内情報を読んで回答 ボットは使用したドキュメントへのリンクも回答 (ユーザが元データを確認できる) 12

Slide 13

Slide 13 text

classmethod なぜRAG?(社会的なニーズが高い) 一般業務として困っている ・多くの会社で ・多くの部門で、多くの人が 「社内ドキュメントを検索して回答する」 という作業を効率化したい 13

Slide 14

Slide 14 text

1-2.回答改善の知見・課題

Slide 15

Slide 15 text

classmethod 今までお話した内容・ブログ記事 15 https://dev.classmethod.jp/articles/rag-knowledge-on- real-projects/ https://dev.classmethod.jp/articles/rag-seminar- presentation-20240424/

Slide 16

Slide 16 text

classmethod 来週もお話します(QAパート) 16 https://events.classmethod.jp/seminar/ab2f0395-fff7-48ec-8f59-be9b90592ba7/

Slide 17

Slide 17 text

classmethod データ・検索が大事 17 こっちを改善する方が有効 こっちよりも

Slide 18

Slide 18 text

classmethod 回答改善の例1:ファイルを小さく分割する 18 FAQ.csv FAQ_0.csv FAQ_1.csv FAQ_2.csv

Slide 19

Slide 19 text

classmethod 回答改善の例2:タグ付け・フィルタリングをする 19 起動手順 ・アプリを起動 ・リストをタップ ... 製品A マニュアル 起動手順 ・アプリを起動 ・ファイルを確認 ... 製品B マニュアル 製品型番:A 製品型番:B 検索 サービス (フィルタリング)

Slide 20

Slide 20 text

classmethod 回答改善の例3:マルチモーダルモデルを使って文字起こし 20 詳細はこちらのブログをご覧ください https://dev.classmethod.jp/articles/read-powerpoint-document-with-claude-3/ # 経済産業省のMission ## 日本経済・国民の暮らしを豊 かにする ### 産業政策 - 人工知能、IoT、ヘルスケア - データ活用、中小企業 - 産業構造・・・ ### 通商・貿易 - EPA、TPP、インフラ輸出 - 新興国戦略、ルール形成 - 戦略・・・ ### 資源・エネルギー - 電力自由化、新エネ・省エネ - 原発、資源外交・・・ ### 手段 - 経済成長 - 産業競争力の強化 - イノベーション - 世界の富の取り込み - エネルギー安定供給 ### 目的 - 社会課題の解決 Ex.少子高齢化、貧困問題、 世界の不安定化 - 豊かな社会の実現

Slide 21

Slide 21 text

classmethod 研究動向:Advanced RAG・Modular RAG 21 https://arxiv.org/abs/2312.10997 Naive RAG Advanced RAG Modular RAG

Slide 22

Slide 22 text

classmethod 世の中的にはAdvanced RAGが広がってきている 22 https://aws.amazon.com/jp/blogs/news/verifying-the- accuracy-contribution-of-advanced-rag-methods-on-rag- systems-built-with-amazon-kendra-and-amazon-bedrock/ https://dev.classmethod.jp/articles/knowledge-bases-for- amazon-bedrock-advanced-rag-capabilities/

Slide 23

Slide 23 text

classmethod Knowledge Basesのアップデート機能(概要) 回答改善のためのアップデートがたくさん ・高度な解析オプション(データの前処理) ・追加されたチャンキング戦略 ・Lambda関数を使用したカスタムチャンキング ・CSVファイルのメタデータのカスタマイズ ・クエリの分解 23

Slide 24

Slide 24 text

classmethod 実用で躓く点1 (データ):図が読み込めない ドキュメントには図が多い ・業務フロー・手順 ・操作説明・画面説明 ・組織図 多くの検索サービスが対応していない ・基本的に無視される ・図があったこともわからない 24

Slide 25

Slide 25 text

classmethod 対策 (データ):マルチモーダルモデルを使って文字起こし 画像部分をテキストに置き換える ・ドキュメントをパースし画像を取り出し、生成AIでテキストに変換 ・もとのドキュメントに入れ直す 実際にはうまくできないケースもあり、以下のような対策もあり ・前処理:「”[フロー図]”」のように、簡単に文字起こし ・プロンプト:「図は詳細を説明せず、記載箇所を回答して」 ・回答:「詳細はドキュメントのフロー図を見て確認してください」 25

Slide 26

Slide 26 text

classmethod 実用で躓く点2 (検索):抽出単位が細かく情報が落ちる ほとんどの場合、ファイル単位で情報がまとめている 逆にいうと、ファイル全体を読まないとわからない ・冒頭に書いてある(例:前提・システムの概要・用語説明) ・最後に書かれている(例:補助対象の資格一覧) それに対して、ほとんどの検索サービスは、チャンク単位で抽出する ・ヒットした周辺のテキストのみ ・前後のテキスト・冒頭の情報などがわからない 26

Slide 27

Slide 27 text

classmethod 実用で躓く点2 (検索):抽出単位が細かく情報が落ちる 27 資格取得に関する規則 ..... 申請方法 ・ワークフローから申請してください 対象資格と補助額 ・別表を記載のある資格のみ申請可能 です。対応する額を入力してください ..... 別表 応用情報技術者の資格を取っ たのですが、補助金の申請方 法を教えてください ヒット しやすい ヒット しにくい 資格名 補助額 基本情報技術者 全額 応用情報技術者 半額

Slide 28

Slide 28 text

classmethod 対策 (検索):ファイル単位で抽出する 検索ヒットしたチャンクではなく、ファイルパスを取得 そのファイルを全て読み込んで、プロンプトに書き込む 28 資格取得に関する規則 ..... 申請方法 ・ワークフローから申請してください 対象資格と補助額 ・別表を記載のある資格のみ申請可能 です。対応する額を入力してください ..... 別表 .....

Slide 29

Slide 29 text

classmethod 補足:ファイル単位で抽出する コストが気になる場合、以下のような方式もあり ・小さいモデルで、ファイルを読み込み、関連情報を抽出する ・大きいモデルで、要約して回答を生成する 29 GPT-4o mini GPT-4o 資格取得に関する規則 ..... 申請方法 ・ワークフローから申請してください 対象資格と補助額 ・別表を記載のある資格のみ申請可能で す。対応する額を入力してください ..... 別表 ..... 資格取得に関する規則 ..... 申請方法 ・ワークフローから申請してください 対象資格と補助額 ・別表を記載のある資格のみ申請可能で す。対応する額を入力してください ..... 別表 ..... 資格取得に関する規則 ..... 申請方法 ・ワークフローから申請してください 対象資格と補助額 ・別表を記載のある資格のみ申請可能で す。対応する額を入力してください ..... 別表 .....

Slide 30

Slide 30 text

classmethod 補足:検索エンジンを使わなくても良いかも チャンク検索ではなくファイル検索もあり ・ファイルパスのみから選択させる ・(要約を追加しても良いかも) 特に、ファイル数が多くない場合・使用頻度が低い場合に有効 ・数百ファイル程度・各ファイルが10ページ程度 ・1000回/月程度 ・ドキュメント読み込みのコストが上がるが、 検索エンジンのランニングがコストがなくなる 30

Slide 31

Slide 31 text

classmethod 補足:検索エンジンを使わなくても良いかも 31 以下は会社のドキュメントファイルです。 ユーザの質問に回答するのに必要な情報が書かれてい るファイルを選択し、番号を教えてください <ドキュメント> ・規則集/ ・第1章/ ・第1節/ ・社員就業規則.pdf [0] ・制度運用規程.pdf [1] ・従業員職種名称規程.pdf [2] ・特別休暇付与基準.pdf [3] ... ・健康診断/ ・検診機関一覧.pdf [281] ・提携医療機関一覧(首都圏).pdf [282] ・健康診断申込書.pdf [283] ・検診項目一覧.pdf [284] ・実施案内.pdf [285] <ユーザの質問> 11月に入社しました。有給はいつ付与されますか? ファイルを選択させる場合の プロンプト(1回で選択させる) → そこそこ上手く選択してくれた フォルダを選択させて、 ファイルを選択させる方法もあり (複数回で選択させる) ファイルの要約を追加しても良い

Slide 32

Slide 32 text

classmethod ちなみに:弊社は全額補助されます 補足:なぜ回答できたのか ・ドキュメントに書かれていること:IPAの資格は対象です(応用情報とは書いてない) ・生成AIが、応用情報はIPAの資格に含まれることから、推論して答えてくれた 32

Slide 33

Slide 33 text

classmethod 実用で躓く点3 (検索):複数のファイルにまたがった質問 ある情報がヒットすると、それのみをもとに回答してしまう ユーザからすると別の情報がないように思えてしまう ・例:申請できる補助金が2種類(会社・労組)あるが、1つのみ回答 対策:検討中(難しいと感じています、、) ・該当の情報が1つのみか、それ以上あるのか、判断させるのは難しい ・単純にヒットさせる件数を増やすだけでも一定の効果はあるが、 不十分な印象 33

Slide 34

Slide 34 text

classmethod 実用で躓く点4 (回答生成):暗黙的な情報 学習していない・ドキュメントにない情報は回答できない ・社内用語・専門用語・暗黙知:生成AIが間違って解釈しやすい ・コンテキスト:ユーザの質問にも、ドキュメントにも含まれてる よくある対策:用語集を作る・FAQを作る ・人力での作業が必要(高いコスト) ・生成AIを使って作成することもできる(が、質はそこそこ) 34

Slide 35

Slide 35 text

classmethod 補足:暗黙的な情報 回答に関係する情報(社内情報に関するQAの場合) 質問本文 メタデータ コンテキスト 暗黙知 明文化 (ドキュメント) 暗黙知 明文化 (ドキュメント) 業務知識 社内知識 暗黙知 業界の常識 ドキュメント 本文 メタデータ コンテキスト 通常のQAシステムの 対象範囲 通常のQAシステムの 対象範囲 エンタープライズ検索で 検索できる(しやすい)範囲 システムが使用している情報は、人間に比べてごく一部 35

Slide 36

Slide 36 text

classmethod 1-2.回答改善の知見・課題 のまとめ PoC検証が行われていて、知見がたまり始めた 実用に向けた回答改善として、Advanced RAGが広まってきていて、 サービスのアップデートなどで、RAGの改善しやすくなってきた ただ、ユースケースやデータに合わせて選択・改良する必要や、 根本的に解くのが難しい課題があり、まだまだ改善の余地がある 36

Slide 37

Slide 37 text

1-3.実用に向けた課題 (回答改善以外の部分)

Slide 38

Slide 38 text

classmethod 言いたいこと:ここが大変 実用に向けては、回答の質以外にも 満たしてほしい要件・機能がたくさんある ただ、世の中ですべて満たすサービスがない → 個々のサービスを調査・検証して、選択しながら 不足点を埋める(自作する)必要がある 今後のアップデートもキャッチアップする必要がある 38

Slide 39

Slide 39 text

classmethod よくある構成 自社データ サービス 39 AWS 検索 サービス チャット アプリ App Runner Kendra

Slide 40

Slide 40 text

classmethod こういう構成が良さそう 自社データ サービス 40 クラウド データ 基盤 検索 エンジン 検索 プログラム チャット アプリ

Slide 41

Slide 41 text

classmethod こういう構成が良さそう(例) 自社データ サービス 41 AWS データ 基盤 検索 エンジン 検索 プログラム チャット アプリ App Runner RDS S3 ※ 検討中の内容です。実現できるとは限りません

Slide 42

Slide 42 text

classmethod こういう機能・観点が必要そう 自社データ サービス 42 クラウド 権限情報 の取得 データ分析 データ 基盤 検索 エンジン 検索 プログラム クエリ変換 再検索 認証 コネクタ 抽出処理 クエリレート コスト データ退避・復帰 アクセス 権限設定 チャット アプリ 前処理 チャンキング 検索手法 フィードバック ユーザ応対 ドキュメント 整理 アクセス制御 フィルタリング メタデータ の取得

Slide 43

Slide 43 text

classmethod こういう運用が必要そう 43 クラウド データ管理 格納データの確認 前処理結果の確認 フィードバック集計・評価 システム評価 自社データ サービス データ 基盤 検索 エンジン 検索 プログラム チャット アプリ +セキュリティ

Slide 44

Slide 44 text

classmethod 機能観点1:データ取り込み(コネクタ・メタデータ・権限) 使用したいデータサービスに対応しているか 取り込み範囲は指定できるか、妥当な形式か メタデータ・権限情報も取り込めるか 直感と同じ設計になっているか 44

Slide 45

Slide 45 text

classmethod 機能観点1:データ取り込み(コネクタ・メタデータ・権限) [不足感がある例] ・Knowledge Basesだと対応は5種類のみ ・S3・Web・Confluence・SharePoint・Salesforce ・KendraでBOXに接続すると、デフォルトでは格納データを全て取得。 パターンを網羅して設定する必要がある(手間) ・KendraでSlackの権限情報を取得すると 直近で発言したユーザしか許可されない (パブリックチャンネルであっても) 45 なかなか簡単に 使えるものがない

Slide 46

Slide 46 text

classmethod Tips:データ取り込み Kendraのコネクタ ・メリット:対応サービスが多い ・オススメの使い方:コネクタを使ったデータ吸い出し ・Custom Document Enrichment の PreExtraction ・データサービスから吸い出したデータをS3に出力できる ・別の検索サービス(OpenSearch Seavice・RDS)で使う ・要確認な点:データ形式・対象・範囲 46 https://aws.amazon.com/jp/blogs/machine- learning/enrich-your-content-and-metadata-to- enhance-your-search-experience-with-custom- document-enrichment-in-amazon-kendra/

Slide 47

Slide 47 text

classmethod 機能観点2:検索エンジン(コスト・退避/復帰) RAGシステムのコストの大半:検索エンジン そもそものコストが高いと、費用対効果が悪くなる ・安い検索エンジン・サービスを探す必要がある データを退避・復帰させる機能があれば、コストを節約できる [嬉しい例] ・Pineconeの料金設定(価格感) ・RDSのスナップショット機能 47 こういった機能が 他のサービスにもあると 嬉しい

Slide 48

Slide 48 text

classmethod 機能観点3:認証(アクセス権限・アクセス制御) 認証プロバイダが複数存在する場合がある ・データソース(ここも複数存在しうる) ・Webアプリ 難しい点 ・検索処理でアクセス制御する必要がある(どう適用するか?) ・それぞれのプロバイダが異なるとき、どのようにマッピングするか? ・どう管理するか? 48 まだまだ 調査・悩み中

Slide 49

Slide 49 text

classmethod 補足:認証(アクセス権限・アクセス制御) 以下のような回避方法もあり ・アプリ側で権限設定 ・バックエンド側でデータを選択 (= フィルタリング・制限) 49 総務用 ボット 経理用 ボット 法務用 ボット 総務用 データ 経理用 データ 法務用 データ 共通 データ

Slide 50

Slide 50 text

classmethod 機能観点4:ユーザへの応対 応答部分がプログラム(固定処理を実行するだけ) ・どんな入力があっても ・1回だけ検索をして、必ず回答する ユーザが期待しているのは、もう少しAIチックな動作 ・問題を解決する・整理する・聞き返す・再検索する 直接検索・回答生成を行うのではなく、AIが表に立って応対 ・検索をツールとして使う、Agentのような動作 50 まだまだ 検証・悩み中

Slide 51

Slide 51 text

51 補足:ユーザへの応対 https://dev.classmethod.jp/articles/discussion-on-needs-for-g-of-rag/ https://dev.classmethod.jp/articles/estimate-user-intention-in-genai-bot-with-rag/

Slide 52

Slide 52 text

classmethod 運用観点1:データ前処理 データ前処理の確認 ・生成AI(マルチモーダルモデル)を使って、 ドキュメントを文字起こしする、というのが主流になりそう ・運用では、人目で確認する必要がでてくる そのためのワークフローがあると便利 AI前処理 → AI確認 → 運用担当者 → 業務担当者 エスカレーションできると、負荷を分散できそう 52 こういった機能が あると良さそう

Slide 53

Slide 53 text

classmethod 運用観点2:格納データの確認、管理 検索エンジンに取り込んだデータが、どうなっているかわからない ・どのデータが・どのようなチャンクに分割されて ・どんなメタデータがついているか メタデータの操作が面倒 一覧で表示されて、簡単に操作できると嬉しい ・あるフォルダ内のドキュメントに一括タグ付け 53 こういった機能が あると嬉しい

Slide 54

Slide 54 text

classmethod 運用観点3:評価 実際のユーザのフィードバックを集計・評価する ・どこに困っているのか分析、集計 ”精度”を評価・比較する ・モデルを変更したり、プロンプトを変えたときに ・評価用データを用意したら、一気に回答生成を実行 ・AIで一次評価し、人目でチェック ・原因・要因を分析し、数値化したり、対策箇所を挙げる 54 こういった 機能が必要

Slide 55

Slide 55 text

classmethod 1-3.実用に向けた課題 のまとめ 実用しようとすると、様々な観点での検討が必要 まだ全部を満たすサービスがないので、不足点は自作する必要あり ・そのために、サービスの機能・性能を、細かく調査・検証 55

Slide 56

Slide 56 text

2.次の生成AI活用に向けて

Slide 57

Slide 57 text

2-1.Agent(RAGの次)

Slide 58

Slide 58 text

書いてはみたものの、一般的なことしか 書けなかったので割愛いたします m(_ _)m

Slide 59

Slide 59 text

2-2.データ活用のための準備 (基盤づくり)

Slide 60

Slide 60 text

classmethod 今後の生成AI マルチモーダル ・画像・動画・音声 ・世の中のデータの ほとんどが利用可能 ・入力も出力も ・ほぼリアルタイムに どの生成AIでもデータが基本 ・RAGにも・Agentにも・他の生成AIにも https://openai.com/index/hello-gpt-4o/

Slide 61

Slide 61 text

classmethod 生成AIのためのデータを準備しておく1 何がデータなのか考えなおす ・テキスト以外の業務データ:画像・音声・動画も 例:設計図・電話対応の音声・ ・普段のコミュニケーション(社内チャット・オンライン会議) ・普段の作業(パソコンの操作) ※プライバシーに配慮しつつ

Slide 62

Slide 62 text

classmethod 生成AIのためのデータを準備しておく2 データを整理しておく ・社内データをリストアップして、置き場所を決めるだけでも十分 ・場所さえ決まっていれば、AIを使って整理もできる (今後できるようになりそう) 大層な話ではなく、どこに・何を置くのか決める (どこに何があるかわかる状態にする) 62

Slide 63

Slide 63 text

classmethod RAGの話で言えば インデックス・サービスの中に、 データが閉じめられているケースがほとんど → 活用できない 社内ドキュメントを取り出して集める 前処理しておく → 他の生成AIを使った活用 このための準備としても、RAGをやっていくと良さそう 63 RAGで利用 他で利用

Slide 64

Slide 64 text

64 補足:なぜRAG?(生成AI活用のステップアップとして) 生成AI導入の流れ ・まず個人レベルの作業を 効率化する ・次に業務を任せてみる 質問回答から始める (社内の合意形成を図る) ・その後、専門業務を任せる 専門業務レベル (専門システムを構築) 一般業務レベル (パッケージを導入) 個人レベル (ChatGPT・Copilotを利用) 広まってる 今ここ そろそろ

Slide 65

Slide 65 text

classmethod このセッションのまとめ RAGの回答改善がしやすくなってきた、知見も出てきた ただ、まだまだ難しい課題もある RAGの実用に向けて、回答改善以外に不足している点がたくさんある 今後埋めていきたい RAG以外の生成AI活用に向けて、データの準備をしておきたい 65