Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
実務で直面するRAGの問題とTips
Search
Yuki Takayama
October 29, 2024
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実務で直面するRAGの問題とTips
24/10/29 さくらAI Meetup vol.5発表資料
Yuki Takayama
October 29, 2024
More Decks by Yuki Takayama
See All by Yuki Takayama
LT「AI議事録の開発で感じたユーザー目線のAIの精度を測る難しさ」
ytakayama
0
65
Featured
See All Featured
The SEO Collaboration Effect
kristinabergwall1
1
590
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
The untapped power of vector embeddings
frankvandijk
2
1.9k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
sira's awesome portfolio website redesign presentation
elsirapls
0
460
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
Transcript
1 © Nishika, Inc Nishika株式会社 東京都港区芝浦3-7-8-202 実務で直面するRAGの問題とTips さくらAI Meetup vol.5
2024年10月29日 髙山 雄貴
2 © Nishika, Inc ◼ 髙山 雄貴(たかやま ゆうき) ◼ Nishika株式会社のデータサイエンティスト
⚫ 企業様向けのAI開発、最近はLLM関連を多く担当 ⚫ 自社AI議事録サービス「SecureMemoCloud」の推論システム開発や話者認識モデルの研究開発も担当 ⚫ ときどき機械学習コンペを企画・運営 経歴・スキル ◼ Kaggle Expert(Competition/Notebook) ◼ AtCoder緑 ◼ DB運用(Oracle) 自己紹介
3 © Nishika, Inc 事業内容 AIコンサルティング・開発 ✓ 法人向けGPTを超えた機能を提供する 「社内ナレッジの生き字引」システム AIコンシェルジュ
powered by GPT ✓ 実務で使える・運用できる 生成AIコンサルティング・開発 Build-in生成AI ✓ データサイエンティスト同士の競争による 圧倒的高精度のAI開発 コンペティション型AI開発 AI搭載プロダクト ✓ クラウド不要でセキュア、世界最高水準の精度を示す AI文字起こしソフトウェア SecureMemo ✓ 世界最高水準の音声認識AIに加え、 生成AIによる会議録特化型要約機能も搭載した、 会議録作成支援サービス SecureMemoCloud ✓ 最高水準の精度を誇るEC向け画像検索AI Nishika Image Finder AI人材マッチング ✓ データ分析コンペティションを通じて日夜腕を磨く、 10,000人超の優秀な人材に直接リーチできる ダイレクトリクルーティングサービス Nishika Connect ✓ AI・データ領域の人材紹介に専門性を有するエージェ ントによる人材紹介サービス Nishika エージェント
4 © Nishika, Inc SecureMemo/SecureMemoCloud SecureMemo ✓ 世界最高水準の精度94.7%のAIを搭載しつつ、文 字起こしがオフラインで完結する、日本市場唯一無 二のソフトウェア
✓ OpenAI Whisperの課題を解決し実用化した点が 特徴。独自開発の話者特定AIも搭載 ✓ 2023年度より本格展開しているが、既に警察、医 療機関、学術機関、民間企業IR部門などに導入 SecureMemoCloud ✓ SecureMemoと同等以上の高精度音声認識AIを 搭載。認識精度だけではなく、読み手の読みやすさの 最適化を目標とし、フィラー除去等の機能も備える ✓ 独自に開発したアルゴリズムに基づく会議目的特化の AI要約を搭載 ✓ 2024年4月に正式リリース、累計1200社強が利用
5 © Nishika, Inc アジェンダ 1. RAGの手法の検討の進め方 2. 「どんな質問をしたいのか?」別に考える、適切なRAG技法 〜RAG曼荼羅〜
3. 質問内容別の手法 4. 多様な質問内容に対応する手法 5. 質問の形式に対応する手法 6. まとめ
6 © Nishika, Inc 1. RAGの手法の検討の進め方
7 © Nishika, Inc RAGについておさらい ◼ RAGとはRetrieval Augmented Generationの略で、日本語では「検索拡張生成」 ◼
社内ドキュメントを「検索」して、自分の知識を企業内情報まで「拡張」して、回答を「生成」したい、これを実現する仕組み ◼ クエリの内容をもとに、文書のデータにうまく検索して、クエリで必要とされる文書のデータを取得するかが精度の鍵になる ユーザー 文書 (PDFなど) RAGアプリ 文埋め込み (embedding) モデル ベクトルDB 大規模言語 モデル(LLM) ①文書のベクトル化 テキスト 情報取得 ✓ プロンプト ✓ クエリ ✓ 文書データ ベクトル データ ベクトル データ ユーザー クエリ LLMの回答 ②ユーザーがクエリ (質問)入力して、 回答を生成
8 © Nishika, Inc RAGの手法はたくさんあるが、実務でどれを使えばいいかはわかりにくい 出典:「RAG From Scratch」
9 © Nishika, Inc 社内情報等の新たな外部知識を生成AIに与えて回答を生成させる技術をRAGと呼ぶ RAGでは、「検索」と「生成」が行われる ◼ 生成AIが活用されるのは「生成」のみであり、「検索」では埋め込みモデルなど検索用のモデルが活用される 質問が入力されたら、 関連する文書を
検索 する 検索してヒットした 文書の情報も踏まえ、回答を 生成 する 検索モデル (埋め込みモデルなど) 生成AI 使われる AIモデル
10 © Nishika, Inc RAGの性能を決める大半は「検索」の仕組みに依る ◼ 「質問で使われている言葉は、検索モデルが知っている言葉か?」 「質問で使われている言葉と、回答根拠となる文書で使われている言葉は似ているか?」が、性能に影響する二大論点 ⚫ 実際には、「最新の情報も取得して回答して欲しい」や「図表も解釈して欲しい」など、他にも多数の「質問の仕方」がある
「ユーザー管理画面で登録ができない」 は知っている言葉ばかりだが 「型番NR-F604WPXの寸法は?」 の「NR-F604WPX」は知らない 質問で使われている言葉は、 検索モデルが知っている言葉か? 検索モデルは、言葉の意味で検索することができ るが、「NR-F604WPX」のように知らない言葉の 意味は基本的に推測できないため、意味で検索 するのは精度を悪化させる場合がある 「年休って、1年の間どのくらい取れるの?」という 質問に関連する文書では 「有給休暇日数は、勤続年数に応じて・・・」と表 記され、似ている言葉が使われていない 質問で使われている言葉と、 回答根拠となる文書で使われている言葉は 似ているか? 質問はカジュアルだが回答文書はフォーマルである など、使われている言葉や文体が違いすぎると、単 純な検索では関連文書がヒットしないことがある
11 © Nishika, Inc 質問のユースケースごとにRAGをどう工夫したらいいのかを考える どういう質問をされるシステムだからどういう手法を採用して、精度向上のためにどういう工夫が必要かと言う知見はあまり公開 されていない。これまでのRAG関連の開発の知見をもとに、質問のユースケースを起点に体系的に整理してみるということが今 回の発表テーマです。 ◼ 主な質問のユースケースは以下の通り
⚫ マニュアルに関する質問 − 新しいプロジェクト管理システムの使い方を教えてください。 − ユーザー管理画面で登録ができない ⚫ 規程やルールに関する質問 − 年休って、1年の間どのくらい取れるの? − 出張の際の手当はどこまで適用されますか? ⚫ 技術文書・提案書等に関する質問 − 施策A導入後のリキャップタイムの変化について教えてください − NOxを低減する取り組みの評価を教えて ⚫ 型番やIDに関する質問 − 型番NR-F604WPXの寸法は? − No23456の請求書の詳細の内容を教えて アプリケーションのイメージ
12 © Nishika, Inc 2. 「どんな質問をしたいのか?」別に考える、適切なRAG技法 〜RAG曼荼羅〜
13 © Nishika, Inc RAG曼荼羅: 「質問の中身」別に、適切なRAGおよび周辺技術を提案 RAGの4象限: 適切なRAG技術の大きな分かれ目 個別ユースケースを実現するテクニック v1.0
14 © Nishika, Inc RAGの4象限:適切なRAG技術の大きな分かれ目 RAG曼荼羅:「質問の中身」別に、適切なRAGおよび周辺技術を提案 マニュアル に関する質問 「ユーザー管理画面で登録 ができない」
検索モデルが知って いる言葉が使われる 検索モデルが知らな い言葉が使われる 質問と回答根拠の 文書で使われる言 葉が似ている 質問と回答根拠の 文書で使われる言 葉が似ていない 型番やID に関する質問 「型番NR-F604WPXの寸 法は?」 規程やルール に関する質問 「年休って、1年の間どのくら い取れるの?」 技術文書・提案書等 に関する質問 「NOxを低減する取り組み の評価を教えて」 セマンティック検索 セマンティック検索 ダミークエリ生成、HyDE等 キーワード検索 キーワード検索 ダミークエリ生成、HyDE等 v1.0
15 © Nishika, Inc 個別ユースケースを実現するテクニック RAG曼荼羅:「質問の中身」別に、適切なRAGおよび周辺技術を提案 図形に関する質問 「過去の精度比較グラフも見て答えて」 画像の解釈情報追加 最新の情報を求める質問
「SecureMemoのWindows2025への搭載可 否を調べて」 Web検索 確実に間違いのない回答が欲しい 「昨年の日本橋イベントの売上・利益はいくら?」 情報ソースを併せて表示 or 検索迄実行、生成はしない 文章の背景情報も踏まえた回答が欲しい 「SMCのDB設計を教えて」 (回答は「SMC」フォルダ配下の「DB設計」ドキュ メントにある) ファイルの置き場所やファイル名、ファイル全体の要 約情報を追加 専門用語・造語も理解して欲しい 「工作機械メーカーのTCFDレポートを探して」 GraphRAGで専門用語のナレッジグラフを追加 v1.0
16 © Nishika, Inc 3. 質問内容別の手法
17 © Nishika, Inc セマンティック検索を利用し、トピック単位でのチャンク分割に注意することが重要 RAGの適用のアイデア ◼ 質問に意味が近いナレッジをヒットさせるセマンティック検索を使用する ⚫ 質問も回答根拠の文書も一般的な単語から成るため、検索用の言語モデルで意味を解釈できる語彙が多いことが想定される
◼ ベクトル化する際に基本的には文書単位でベクトル化するか、見出し単位などでベクトル化することで1つの手順やトピック が途中で分割されないような工夫をする。分割単位をLLMに提案してもらうことも有効 ⚫ 例:登録手順が以下の通りにあったときに手順1~3と手順4が2つのチャンクに分かれると手順を聞かれた際に手順1~4を回答できず、手 順1~3までしか回答できない問題が発生する可能性があります。 1. トップページに遷移: ... 2. 登録ボタンクリック: ... 3. 必要事項入力: ... 4. 完了ボタンクリック: ... ナレッジ整理の施策 ◼ ドキュメントの形式が混在だとコストがかかるので、できれば統一(言うだけ簡単でやるのが難しい) ◼ タイトルや文書の階層構造も解釈しやすいように修正する マニュアルに関する質問 • 新商品登録画面はどこから行け る? • ユーザー管理画面で登録ができな い 質問例
18 © Nishika, Inc 質問と文書のスタイルのギャップを埋める工夫が重要 RAG適用のアイデア ◼ 質問も回答根拠の文書も一般的な単語から成るため、検索用の言語モデルで意味を解釈できる語彙が多いことが想定さ れるので、質問に意味が近いナレッジをヒットさせるセマンティック検索を使用する ◼
事前整理済みのQAを対象に検索する ⚫ 質問は口語に近く、文書はやや堅苦しいスタイルでギャップがあり、意図した内容を検索しやすいように工夫する ◼ あらかじめ擬似的なクエリ(ダミークエリ)を作成しそれを検索する ⚫ こちらも質問と文書のスタイルのギャップを埋めるための施策 ⚫ HyDE(Hypothetical Document Embeddings:LLMが作成した仮の文書の埋め込みで検索する)を採用することも同様に有効 ナレッジ整理の施策 ◼ QAを事前に整理する 規程・法令・規則に関する質問 • 年休って、1年の間どのくらい取れ るの? • 出張の際の手当はどこまで適用さ れますか? 質問例
19 © Nishika, Inc セマンティック検索が機能しにくいので、キーワード検索・ベクトル化する前の工夫を検討する RAG適用のアイデア ◼ 専門用語の多い文書から、平易な単語から成る擬似的な質問(ダミークエリ)を作成し、それを検索する ⚫ HyDEを採用することも検討
◼ 頻出の社内の独自の略語を拡張してキーワード検索する ◼ 専門用語について尋ねるときには専用のDBをキーワード検索する RAGに頼らないアイデア ◼ 文書の内容の分類・タグなどのメタ情報を検索する ⚫ ユーザーが見たい案件・技術情報のカテゴリの文書をヒットさせる場合に適する ⚫ 分類やタグがない場合は、LLMに出力させ付与させることを検討する ナレッジ整理の施策 ◼ 専門用語および略語について専用のDBをあらかじめ整理する ◼ 熟練者の知見を引き出しテキスト化する ⚫ 文書作成 ⚫ インタビューして文字起こし 社内の技術文書・提案書に関する質問 • NOxを低減する取り組みの評価を 教えて • 過去の案件でデプスチャートの中で 特に技術的なボトルネックとなる箇 所はどこですか? 質問例
20 © Nishika, Inc セマンティック検索が機能しないので、キーワード検索を使用する RAG適用のアイデア ◼ BM25などの表層ベースの検索手法を採用する ⚫ 日本語であればOkapi
BM25などを使用して、固有名詞のキーワード検索の精度を向上させることを検討 ◼ キーワード検索をした後に上位のものについて意味的に近いもの順番になるようにリランク(Re Rank)することも有用 RAGに頼らないアイデア ◼ メタ情報での検索などの手法を選択 ナレッジ整理の施策 ◼ キーワード検索の精度が向上するように名寄せを行う ◼ 製品情報などのメタ情報を整理する 型番、IDなどに関する質問 • 型番NR-F604WPXの寸法は? • No23456の請求書の詳細の内 容を教えて 質問例
21 © Nishika, Inc 4. 多様な質問内容に対応する手法
22 © Nishika, Inc LLMが知らないWebの最新情報を元に回答する ◼ Web情報取得ツールを作成してLLMがエージェントとして呼び出す ⚫ 検索キーワードについてクエリの内容をそのまま入力すると精度が良くない ◼
BingSearchAPIなど検索用のAPIを利用できるように準備し実装 ◼ 以下の点に注意 ⚫ スクレイピング結果をLLMに入力するのでトークン数の大きい入力も可能なLLMが望ましく、そうでない場合は分割して判断させて回答結 果を集約する必要がある ⚫ Web検索を使用するため、回答の精度がクエリの最適な抽出と検索エンジンの返す結果に依存する部分が大きい Web検索+スクレイピングの活用 GPT 質問「今の日本の総 理大臣は誰?」 検索キーワード 「日本 総理大臣」 BingSearch API 検索結果(タイト ル、URL、スニペット [要約]) スプクレイピングする URL GPT スクレイピング結果 GPT 回答「今の日本の総 理大臣は石破茂さん です。」 ✓ 検索ワードを考える ✓ 質問と検索結果か ら情報取得するの にい最適なページ URLを選択 ✓ 質問とスクレイピング 結果をもとに回答を 作成
23 © Nishika, Inc 図形などの画像情報の内容を踏まえて回答する LLMやOCRによる画像情報の要約 ◼ 画像を解釈しテキストを出力可能なモデルGPT-4oやAzure Document Intelligenceを使い、画像を検索可能な対
象に変換 GPT-4o 「この棒グラフは燃費の比較示しています」 ベクトルDB 埋め込み用 モデル(Ada) ユーザー GPT 質問:「燃費を比較している図表をください」 DBを検索して対象の図表を取得 回答:「燃費を比較している図表が見つかり ました」
24 © Nishika, Inc 文章の背景情報も踏まえて回答する RAG適用のアイデア ◼ Wikiが階層化されている場合、文書の階層の情報も含めてチャンク化してベクトル化することで、文書の前提やトピックが 欠落しないようにする ⚫
例:「/XX事業部/申請/案件申請手順」という階層構造の文書があり、文書内に「XX事業部」の文言がない場合、階層情報を含めな いと「XX事業部」の案件申請手順に関するものだという文書の前提が欠落してしまう ◼ 長い文書をいくつかのチャンクに分ける場合に、ファイル全体の短い要約を追加することで、文脈を補足することも有効 ⚫ 参考:「実務で後一歩使えない」を解決するLLM・RAG ~文脈を付加して検索精度を上げる~ ( Nishika Tech Blog) ナレッジ整理の施策 ◼ 文書のタイトルや階層構造を整理する 文書の階層情報や要約の追加 質問例 • SMCのDB設計を教えて (回答は「SMC」フォルダ配下の「DB設計」ドキュメント にある)
25 © Nishika, Inc 専門用語・造語について全体的な構造を解釈した上での回答する GraphRAG ◼ 専門用語についての質問や全体の構造を理解する必要のある質問の回答精度を向上 ⚫ 例:システムの詳細設計を読み込み、全体の流れを答える
⚫ 従来型のベクトルベースのRAGで苦手とする質問の回答精度を改善する目的で、ベクトル検索とグラフ検索を組み合わせて活用される ◼ GraphRAGを用いた回答の仕組み ⚫ 質問の内容をもとにテキスト検索で、質問に関連するグラフを取得して、グラフの情報を入力してLLMが回答 ◼ ナレッジグラフを作成する方法 ⚫ LLMがドキュメントの内容をもとにナレッジグラフを構築 ⚫ 質問の内容をもとに、質問に関する概念とその概念に関する関係グラフの情報を取得 ナレッジグラフの例 ERP-データの同期->CRM ERP-データのバックアップ->Cloud Storage CRM-データのレポート->BI BI-示唆出し->社内ユーザー LLMに入力するグラフの情報のイメージ サンプルの質問 ERPの情報が社内のユーザーが参照する流れを教えて ✓ 質問に含まれる「ERP」の単語に関するグラフを取得し、 ERPに関連する全体的な構造を抑えることができる
26 © Nishika, Inc 間違った内容を含まないように回答する ◼ 書類に記載の数字の情報について確認したり、規程・ルールについて回答をする際など厳密性が重視されるとき検討する プロンプトの工夫 ◼ 回答の理由を合わせてLLMに出力させることハルシネーションの防止に一定の効果がある
UXの工夫 ◼ 検索でヒットした文書の出典を表示するようにする ◼ 間違った回答によるリスクが許容できない場合は、LLMによる回答生成は行わず、検索結果の表示にとどめる 根拠を出力させる・RAGをあえて使わない(検索まで) 質問例 • 昨年の日本橋イベントの売上・利益はいくら?
27 © Nishika, Inc 5. 質問形式に合わせる手法
28 © Nishika, Inc 複数の質問を含む場合は、LLMに質問ごとに分けさせる ◼ ユーザーの実際の質問では、質問ではない内容が含まれていたり、質問が複数含まれている場合があり、検索が期待通り にいかない場合がある ⚫ LLMの処理を増やすと回答までの時間は延びるので、ユーザー側に工夫を促すことを検討するのも望ましい場面もある
• HACCPに基づく衛生管理の手順を教えてください。 • 定期的な監査の対象エリアも教えてもらえますか? 質問例 • おはようございます。HACCPに基づく衛生管理の手 順を教えてください。また、定期的な監査の対象エリ アも教えてもらえますか? 分割した質問例 質問が与えられます。次の指示に従い修正してください。 指示1:挨拶などの不要な文言を除去する。 指示2:質問が複数ある場合は分割し以下の例に従いJSONフォーマットで 修正した内容を返します。 ---------- [質問例1]: お疲れ様です。NishikaのXXXです。注文管理の画面から注文を行うにはど うすれば良いでしょうか。またパスワードがロックされた場合はどの画面から解除 すれば良いでしょうか。 [回答例1]: {{ "questions":[ "注文管理の画面から注文を行うにはどうすれば良いでしょうか。", "パスワードがロックされた場合はどの画面から解除すれば良いでしょう か。" ] }} [質問例2]: お疲れ様です。NishikaのXXXです。納品完了報告はどこから上げれれば良 いでしょうか。 [回答例2]: {{ "questions":[ "納品完了報告はどこから上げれれば良いでしょうか。" ] }} プロンプト例
29 © Nishika, Inc 対話的な質問の場合は、会話を記憶させる機能とナレッジ参照を必要に応じて行う機能が ポイント ◼ 対話的な質問例について、最後の発言の「どんな書類が必要になりますか?」をもとに検索しても、予算申請で必要な書 類の情報は得られないため、会話の文脈を踏まえて検索クエリを生成する必要がある ◼
会話の履歴を保持できるメモリ機能とクエリの内容に近いナレッジを検索するかしないかをLLMが判断するエージェントの機 能を実装する ◼ LangChainの場合の実装イメージ − langchain.agents.openai_functions_agent.agent_token_buffer_memory.AgentTokenBufferMemoryなどで会話のメモリを 宣言 − langchain.tools.toolでナレッジを検索するモジュールをエージェントが使用できるツール化 − langchain.agents.AgentExecutorでそのツールを使えるエージェントを宣言 対話的な質問の例 • ユーザー:「新しいプロジェクトのための予算申請は どう進めればいいか?」 • AI:「予算申請の手順は、まず部署内での承認を 得てから、財務部門に提出する流れです。詳細な 申請書類の準備も必要になります。具体的にどの ステップについて知りたいですか?」 • ユーザー:「どんな書類が必要になりますか?」
30 © Nishika, Inc 6. まとめ
31 © Nishika, Inc RAG曼荼羅: 「質問の中身」別に、適切なRAGおよび周辺技術を提案 RAGの4象限: 適切なRAG技術の大きな分かれ目 個別ユースケースを実現するテクニック v1.0
32 © Nishika, Inc まとめ ◼ つまるところ、質問と回答根拠となる文書の語彙やスタイルのギャップをどう埋めるかが重要 ◼ 細かいユースケースや問題に網羅的に言及しきれていない点はご了承ください ◼
これから新しい手法が出てきて、知見も増えてきたらRAG曼荼羅をアップデート・改良していきたいと思います ◼ 本日の登壇内容については弊社のブログ(Nishika Tech Blog)でも公開。 ⚫ 本日紹介した手法で使用するプロンプトや詳細についても載せていますので、ご覧ください。 ⚫ 「どんな質問をしたいのか?」別に考える、適切なRAG技法 〜RAG曼荼羅」
33 © Nishika, Inc