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
2k
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
200
Other Decks in Technology
See All in Technology
エンジニアが一生困らない ドキュメント作成の基本
naohiro_nakata
2
160
인디 앱 개발자와 Flutter
tinyjin
0
150
ドメイン名の終活について - JPAAWG 7th -
mikit
32
19k
マイベストのデータ基盤の現在と未来 / mybest-data-infra-asis-tobe
mybestinc
2
2k
いざ、BSC討伐の旅
nikinusu
2
730
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
370
2024年グライダー曲技世界選手権参加報告/2024 WGAC report
jscseminar
0
290
元旅行会社の情シス部員が教えるおすすめなre:Inventへの行き方 / What is the most efficient way to re:Invent
naospon
2
300
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
140
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
120
Lambdaと地方とコミュニティ
miu_crescent
2
320
ジョブマッチングサービスにおける相互推薦システムの応用事例と課題
hakubishin3
3
650
Featured
See All Featured
Speed Design
sergeychernyshev
24
610
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9k
Building Applications with DynamoDB
mza
90
6.1k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.8k
It's Worth the Effort
3n
183
27k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Code Review Best Practice
trishagee
64
17k
Gamification - CAS2011
davidbonilla
80
5k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
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で使う