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
西岡 賢一郎 (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)
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
160
データサイエンスの現場から学ぶ 成功と失敗の実像と生成AI時代の展望
knishioka
0
84
ハーネスエンジニアリング入門
knishioka
0
280
OpenClawでPM業務を自動化
knishioka
2
520
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
640
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
880
Claude Codeを使った情報整理術
knishioka
20
13k
Claude Skillsで"仕事の型"を配布する
knishioka
0
390
Claude Agent SDKで始める実践的AIエージェント開発
knishioka
0
220
Other Decks in Technology
See All in Technology
Agentic ERPをどう設計するか ー 受発注エージェントを動かす、現場の知見と設計思想ー
recerqainc
1
580
TROCCOで始めるクラウドコストを民主化するためのFinOps
tk3fftk
3
540
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
580
大学生が本気でDatabricksを活用してDiscordサークルをデータ駆動させてみた
phantomjuju
1
330
実装は速くなった、レビューはどうする? ― 自身のレビューをAIで再現させるサーヴァントエンジニアリングのすゝめ / Implementation got faster. So what about reviews? — An invitation to Servant Engineering: Recreating your own code reviews with AI
nrslib
3
2.1k
ポスター発表&デモと総括 / Poster Presentations & Demonstrations and Summary
ks91
PRO
0
190
APIテストとは?
nagix
0
170
形式手法特論:公平性制約の位相的特徴づけ #kernelvm / Kernel VM Study Kansai 12th
ytaka23
1
670
「嘘をつくテスト」の失敗例から学ぶ 良いテストコード #frontend_phpcon_do
asumikam
0
140
速さだけじゃない! VoidZero ツールが移行先に選ばれる理由
mizdra
PRO
6
730
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
660
Cloud Run のアップデート 触ってみる&紹介
gre212
0
300
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
270
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
BBQ
matthewcrist
89
10k
The Invisible Side of Design
smashingmag
302
52k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
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