Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チャット履歴と質問を組み合わせLLMの回答精度を高めるLangChain Conversati...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
西岡 賢一郎 (Kenichiro Nishioka)
December 29, 2023
Technology
1.5k
0
Share
チャット履歴と質問を組み合わせLLMの回答精度を高めるLangChain Conversational Retrieval QA
機械学習の社会実装勉強会第30回 (
https://machine-learning-workshop.connpass.com/event/305446/
) の発表資料です。
西岡 賢一郎 (Kenichiro Nishioka)
December 29, 2023
More Decks by 西岡 賢一郎 (Kenichiro Nishioka)
See All by 西岡 賢一郎 (Kenichiro Nishioka)
ハーネスエンジニアリング入門
knishioka
0
170
OpenClawでPM業務を自動化
knishioka
2
500
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
600
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
860
Claude Codeを使った情報整理術
knishioka
20
13k
Claude Skillsで"仕事の型"を配布する
knishioka
0
380
Claude Agent SDKで始める実践的AIエージェント開発
knishioka
0
210
AIがAIを拡張する時代へ ~Claude Codeで実現する高品質文書作成~
knishioka
0
200
MLflow × LLM 生成AI時代の実験管理とリスク低減
knishioka
0
200
Other Decks in Technology
See All in Technology
ECSのTerraformモジュールにコントリビュートした話
harukasakihara
0
200
LookerとADKで作る社内AIエージェント
chanyou0311
0
230
AWSアップデートから考える継続的な運用改善
toru_kubota
2
240
ESP32 IoTを動かしながらメモリ使用量を観測してみた話
zozotech
PRO
0
130
Claude Code で使える DuckDB Skills を試してみた / DuckDB Skills and Claude Code
masahirokawahara
1
290
PdM・Eng・QAで進めるAI駆動開発の現在地/aidd-with-pdm-eng-qa
shota_kusaba
0
240
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.4k
2026-05-14 要件定義からソース管理まで!IBM Bob基礎ハンズオン
yutanonaka
0
160
Agent Skillsで実現する記憶領域の運用とその後
yamadashy
2
1.9k
O'Reilly Infrastructure & Ops Superstream: Platform Engineering for Developers, Architects & the Rest of Us
syntasso
0
170
なぜ、私がCommunity Builderに?〜活動期間1か月半でも選出されたワケ〜
yama3133
0
130
SREの仕事は「壊さないこと」ではなくなった 〜自律化していくシステムに、責任と判断を与えるという価値〜 / 20260515 Naoki Shimada
shift_evolve
PRO
1
170
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
350
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
sira's awesome portfolio website redesign presentation
elsirapls
0
240
Exploring anti-patterns in Rails
aemeredith
3
350
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Building the Perfect Custom Keyboard
takai
2
750
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
130
Transcript
チャット履歴と質問を組み合わせLLMの回答精度を高める LangChain Conversational Retrieval QA 2023/12/30 第30回勉強会
自己紹介 • 名前: 西岡 賢一郎 ◦ Twitter: @ken_nishi ◦ note:
西岡賢一郎@研究者から経営者へ (https://note.com/kenichiro) ◦ YouTube: 【経営xデータサイエンスx開発】西岡 賢一郎のチャンネル (https://www.youtube.com/channel/UCpiskjqLv1AJg64jFCQIyBg) • 経歴 ◦ 東京大学で位置予測アルゴリズムを研究し博士 (学術) を取得 ◦ 東京大学の博士課程在学中にデータサイエンスをもとにしたサービスを提供する株式会社ト ライディアを設立 ◦ トライディアを別のIT会社に売却し、CTOとして3年半務め、2021年10月末にCTOを退職 ◦ CDPのスタートアップ (Sr. PdM)・株式会社データインフォームド (CEO)・株式会社ディース タッツ (CTO) ◦ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
本日のお話 • RAG (Retrieval Augmented Generation) • チャット履歴を考慮したRAG • デモ
RAG (Retrieval Augmented Generation)
RAG(Retrieval Augmented Generation)のアーキテクチャ • 質問に関連した外部リソースをLLMに連携し、LLMの回答の精度を高める手法 • 外部リソースのデータ検索のプロセス ◦ RAGでは、入力されたプロンプトに基づいてデータを検索し、その結果をLLMに組み込んで回答を生 成
◦ 検索サーバの設置が必要。 • 検索方式の多様性 ◦ RAGでは、キーワード検索とセマンティック検索(ベクターサーチ)の両方が利用される。 ◦ セマンティック検索では、入力されたプロンプトをベクトルに変換し、関連するデータを検索。今回 はこちらを利用。 • 文章の分割とサマリ ◦ LLMの入力制限に対応するため、データは適切に分割され、必要に応じてサマリされる。 ◦ これにより、ベクトル内の情報が適切に反映されるように管理される。 • Vector Databaseの役割 ◦ RAGのセマンティック検索には、Vector Databaseが重要。これにより、プロンプトに関連するデー タを効率的に検索が可能になる。
Vector Databaseとは • Vector Databaseは、ベクトル埋め込みを効率的に保存・管理する特殊なデータ ベース。 • AIアプリケーション、特に大規模言語モデル(LLM)にとって、長期記憶や高速検 索・クエリ能力を提供。 •
ベクトル (テキスト) 埋め込み(Vector Embedding) ◦ ベクトル埋め込みは、オブジェクトが数値のリストに変換され、非構造化データを検索可能にする。 ◦ 機械学習アルゴリズムを使用して、複雑なデータを低次元のベクトル空間に表現。 • 最近傍探索(Nearest Neighbour Search) ◦ ベクトル間の距離は類似性を表し、最も類似したデータを探す「最近傍探索」が重要な概念。 ◦ 最近傍を迅速に見つける能力が、Vector Databaseの価値となる。 • Vector Databaseの必要性 ◦ 伝統的なデータベースにベクター拡張を追加することも可能だが、、特化型Vector Databaseが必要 という議論もある。
RAGのアーキテクチャ: インデックス作成 • RAGを実現するためには、手元にある文書をベクトル化して、Vector Databaseに保存する。 • 「文書を読み込む」→ 「文書を分割する」→「分割された文書をベクトル 化」→「ベクトル化された文書と文書情報をVectore Storeに保存」
RAGのアーキテクチャ: LLMのプロンプト作成 • ユーザの質問に関連した文書をプロンプトに埋め込み、LLMに答えさせられ るようにする。 • 「ユーザの質問をベクトル化」→「Vectore Databaseで関連文書を抽出」→ 「抽出された文書をPromptに埋め込む」 •
質問と回答がベクトル空間上で近いことを前提としている
単純なRAGでうまくいかない例 質問と近い文書を検索し、プロンプトに組み込むだけではうまくいかない場合も多くある。 • 抽象的な質問と具体的な回答 ◦ 質問: 幸せとは何ですか? ◦ 抽出される文書: 幸福の心理学:幸せを感じるための要因と方法
◦ 幸福に関する心理学的な視点を提供するかもしれないが、質問の抽象的な性質に直接的な答えを与えるものではない • 因果関係の質問と統計的な回答 ◦ 質問: なぜ日本の人口は減少しているのですか? ◦ 抽出される文書: 日本の人口動態:出生率と死亡率の統計データ ◦ 日本の人口動態に関する統計情報を提供するかもしれないが、人口減少の社会的、経済的な原因については詳しく説明していない可能性がある • 比喩的な質問と文字通りの回答 ◦ 質問: 心が重いとはどういう感じですか? ◦ 抽出される文書: うつ病とその症状:心理的な重圧感の理解 ◦ うつ病や関連する心理的な症状について説明しているかもしれないが、比喩的な「心が重い」という表現の感覚的な側面には触れていないかもしれない • 広範な質問と特定の回答 ◦ 質問: 科学とは何ですか? ◦ 抽出される文書: 現代科学の基礎:科学的方法とその歴史 ◦ 科学の基本的な原則や歴史について説明しているかもしれないが、質問の広範な性質に対して特定の側面のみを照らし出しいる 質問からLLMに仮の答えを作らせて、その答えから文書を検索するHypothetical Document Embeddings (HyDE) という手法もある。 そもそもLLMがうまく回答できる良い質問を作ること自体が難しい
チャット履歴を考慮したRAG
フォローアップクエスチョンの重要性 • そもそも、質問が常に完全な情報を提供するわけではない。 • 会話の中で出てくるフォローアップクエスチョンは、より深い理解と具体的な回答を導く 鍵となる。 • フォローアップクエスチョンが必要となる例 ◦ 初期質問とAIの回答
▪ ユーザーの質問: 「気候変動は経済にどのような影響を与えるか?」 ▪ AIの回答: 「気候変動は、農業、エネルギー、保険業界など多くの経済セクターに影響を与えます。特 に、気候変動による極端な気象は農作物の生産に影響を及ぼし、エネルギー需要の変動を引き起こす可 能性があります。」 ◦ ユーザーのフォローアップ質問 ▪ フォローアップ質問: 「特に再生可能エネルギーの市場における気候変動の影響について詳しく教えて ください。」 ▪ 目的: AIの一般的な回答から、ユーザーは特定の関心領域(再生可能エネルギー市場)に焦点を絞る。 • RAGシステム内で、過去の会話を考慮し、フォローアップクエスチョンに対応することが 重要
会話を考慮する vs 会話を考慮しない 会話を考慮したAIへの質問例 • ユーザー: こんばんは、今夜のディナーに何かおすすめのレシピは ありますか? • サービス:
もちろんです。お好みの料理の種類はありますか?例え ば、和食、洋食、中華など。 • ユーザー: 和食がいいですね。 • サービス: [データベース検索: 和食レシピ] では、「鮭の味噌焼 き」と「きのこの和風パスタ」はいかがでしょうか? • ユーザー: 鮭の味噌焼きに興味があります。どのように作るんです か? • サービス: [データベース検索: 鮭の味噌焼きレシピ] 鮭の切り身に 味噌ベースのタレを塗り、オーブンで焼くだけです。具体的なレシ ピをお送りしますね。 • ユーザー: ありがとうございます。それに合うサイドディッシュは ありますか? • サービス: [データベース検索: 和食サイドディッシュ] 「ほうれん 草の胡麻和え」や「だし巻き卵」はいかがでしょうか?どちらも和 食の主菜によく合います。 • ユーザー: ほうれん草の胡麻和えを作ってみます。レシピを教えて ください。 • サービス: [データベース検索: ほうれん草の胡麻和えレシピ] ほう れん草を茹でて、すりごまと醤油、砂糖で和えるだけです。詳しい 手順を送りますね。 会話を考慮しないAIへの質問例 • ユーザー: 「和食のレシピを教えてください。」 • AIは和食のレシピを提案しますが、これが初めての質 問であると解釈します。 • ユーザー: 「鮭の味噌焼きの作り方を教えてくださ い。」 • AIは「鮭の味噌焼き」のレシピを提供しますが、これ が新しい、独立した質問であると解釈します。 • ユーザー: 「和食に合うサイドディッシュは何です か?」 • AIは和食に合うサイドディッシュを提案しますが、こ れが新しい質問であると解釈します。 • ユーザー: 「ほうれん草の胡麻和えのレシピを教えて ください。」 • AIは「ほうれん草の胡麻和え」のレシピを提供します が、これも新しい、独立した質問であると解釈しま す。 LLMが会話を考慮できないと、独立した質問に毎回必要な情報を埋め込む必要がある
会話を考慮したRAG • 過去の会話とフォローアップクエスチョンから、新しい質問をLLMに生成させ関連文書を 検索する • フォローアップクエスチョン単体で抜け落ちてしまう情報をチャット履歴から抽出が可能
デモ • デモの内容 ◦ RetrievalQAの復習 ◦ Conversational Retrieval Chain ▪
チャット履歴とフォローアップクエスチョンで新しい質問を生成 ▪ 質問生成などで使われるプロンプトを変更 ▪ おまけ: langchainのソースコード探索方法 • ソースコード ◦ https://github.com/knishioka/machine-learning-workshop/blob/main/langchain/ConversationalRetri evalChain.ipynb ◦ GitHub: knishioka/machine-learning-workshop > langchain > ConversationalRetrievalChain.ipynb