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を組み合わせたRAGの実装
Search
Yuto Kimura
January 18, 2024
Technology
11
2.1k
LLMを組み合わせたRAGの実装
2024/01/18 に開催された【StudyCo with Momento】LLMに独自知識で回答させる「RAG」の理解を深めようのLT資料です。
Yuto Kimura
January 18, 2024
Tweet
Share
More Decks by Yuto Kimura
See All by Yuto Kimura
kubernetesクラスターと同期するマイクロサービスのためのローカル開発環境
biosugar0
0
240
Other Decks in Technology
See All in Technology
コンピューティングリソース何を使えばいいの?
tomokusaba
1
140
手を動かしながら学ぶデータモデリング - 論理設計から物理設計まで / Data modeling
soudai
PRO
20
4.3k
Master Dataグループ紹介資料
sansan33
PRO
1
3.9k
AWS資格は取ったけどIAMロールを腹落ちできてなかったので、年内に整理してみた
hiro_eng_
0
200
Datadog On-Call と Cloud SIEM で作る SOC 基盤
kuriyosh
0
160
Pythonで構築する全国市町村ナレッジグラフ: GraphRAGを用いた意味的地域検索への応用
negi111111
8
3.4k
AI時代におけるドメイン駆動設計 入門 / Introduction to Domain-Driven Design in the AI Era
fendo181
0
670
お試しで oxlint を導入してみる #vuefes_aftertalk
bengo4com
2
1.4k
Quarkusで作るInteractive Stream Application
joker1007
0
110
マイクロリブート ~ACEマインドセットで実現するアジャイル~
sony
0
270
はじめての OSS コントリビューション 〜小さな PR が世界を変える〜
chiroito
3
190
CodexでもAgent Skillsを使いたい
gotalab555
9
4.5k
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Building an army of robots
kneath
306
46k
Making Projects Easy
brettharned
120
6.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Context Engineering - Making Every Token Count
addyosmani
9
380
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Transcript
LLMを組み合わせた RAGの実装 株式会社スマートショッピング 木村 優斗 2024.01.18
自己紹介 木村 優斗 (X: @biosugar0) 株式会社スマートショッピング SRE 信頼性= 高頻度な価値提供 +
システムの安定性 というポリシーでサービスの信頼性の維持、向上のために何でもやっ ています。 会社全体の生産性向上がサービスの信頼性を向上させるという理屈 で最近はLLM部を立ち上げて社内活用を模索しています。
スマートマットクラウド マットの上にモノを置くだけで、数をカウント。 IoT×クラウドで、在庫を24時間監視します。
スマートマットクラウド 4 マットで計測し、在庫数を常に把握。 在庫がしきい値を超えたら、自動で発注します。
今日話すこと 弊社の社内Slack Botに実装した ヘルプページを参照するRAGの事例紹介 ブログ版: Slack Botによるヘルプページの情報参照:LLMを組み合わせたRAGの実装
RAG(Retrieval-Augmented Generation)について 外部のデータベースや文書と連携して LLMに精度の高い回答を生成させるためのテクニック RAGを使うと何が嬉しいか? • LLMが知らない知識に対応できる → 弊社のヘルプページの知識に対応させた
技術スタックと利用イメージ インフラ • AWS Lambda ドキュメントのデータストア • Momento Vector Index
ドキュメントの保存コード • Python LLM API • OpenAIのGPT-4 • AnthropicのClaude2.1(Amazon Bedrock経 由) RAG実装 • TypeScript • 参照したドキュメントへのリンク付きで回答してくれる • ハルシネーション(幻覚)対策。人間が確認できるように
事前準備 • LlamaIndex,LangChainを使ってヘルプサイトの内 容を取得し、Momento Vector Indexへの保存を 行う • 様々なローダーがLlamaHubに用意されている •
弊社はヘルプページにZendeskを使っているので ZendeskReaderが使えた これだけで弊社のヘルプページが全て保存される
今回作ったRAGの構成 検索クエリをLLMに生成させる構成
今回作ったRAGの構成 GPT-4 Claude2.1 • 検索実行の判断と検索クエリ生成用 • 定義したJSON構造を返してくれるFunction Callingが優秀 • 質のいいクエリを生成してくれる
• インプットの制限: 8K token • gpt-4 turboは128Kだが安定しない(1/14現在) • ドキュメントに沿った回答の生成用 • インプットの制限: 200K token • 大体のドキュメントが入ったプロンプトを使 える
今回作ったRAGの構成 Momento Vector Index • サーバーレスなベクトルストア • ベクトル化したヘルプサイト全体を事前に保存し、 外部知識をLLMに与えるために利用 •
検索時にはベクトル化したクエリを用いてベクトル 間の距離メトリクスを計算して関連文書を取得 • 検索にはコサイン類似度を利用。ベクトルの方向 を重視。文書の長さによる影響を比較的受けにく い
今回作ったRAGの構成 1. ユーザーの質問からGPT-4が検索するかどうかを 判断 2. 検索する場合検索クエリを生成 3. 生成された検索クエリでMomento Vector Index
に保存されたドキュメントを検索 4. 取得したドキュメントをプロンプトに埋め込み Claude2.1で回答を生成
精度向上のために: クエリ拡張 ユーザーの質問が必ずしも検索クエリとして適切とは限らない スマートマットの最小計測単位は下記のとおりです。 1個あたり重量が最小計測単位より小さいと誤差の原因とな ります。 ・A3サイズ:100g ・A4サイズ:10g ・A5・A6サイズ:1g 検索対象の文書
A4 最小計測単位 スマートマットのA4サ イズの最小計測単位 はどのくらいか教え てください 0.877 0.924 コサイン類似度 (1が完全な類似性) クエリ1 クエリ2
精度向上のために: GPT-4 Function Callingプロンプト description:関数自体の説明。弊社のサービス以外の質問に検索が走らないように • 弊社のサービスの概要とそのドキュメントの資料を取得するためのものであることを明 記 • (ヘルプページが日本語なので)日本語の質問に最適化されていることを記載
parameters.query: 適切な検索クエリを生成するための定義 • 200文字以下のSmartMat Cloudに関連する質問 • 質問例を記載(A3マットで計測できる商品の最大重量は何gですか?) • ユーザーが知りたいことを推察しながら明確で具体的なクエリに書き換えることを指示 • 日本語を使うように再度強調
今後の展望 • MVIのデータの定期更新 • 検索対象のヘルプページ以外への拡大 ◦ インターネット検索結果の参照 ◦ Salesforce ◦
ミーティング録画 ◦ 社内ドキュメント • RAG機能を分離して社内ChatGPTで使う