Slide 1

Slide 1 text

LLMを組み合わせた RAGの実装 株式会社スマートショッピング 木村 優斗 2024.01.18

Slide 2

Slide 2 text

自己紹介 木村 優斗 (X: @biosugar0) 株式会社スマートショッピング SRE 信頼性= 高頻度な価値提供 + システムの安定性 というポリシーでサービスの信頼性の維持、向上のために何でもやっ ています。 会社全体の生産性向上がサービスの信頼性を向上させるという理屈 で最近はLLM部を立ち上げて社内活用を模索しています。

Slide 3

Slide 3 text

スマートマットクラウド マットの上にモノを置くだけで、数をカウント。 IoT×クラウドで、在庫を24時間監視します。

Slide 4

Slide 4 text

スマートマットクラウド 4 マットで計測し、在庫数を常に把握。 在庫がしきい値を超えたら、自動で発注します。

Slide 5

Slide 5 text

今日話すこと 弊社の社内Slack Botに実装した ヘルプページを参照するRAGの事例紹介 ブログ版: Slack Botによるヘルプページの情報参照:LLMを組み合わせたRAGの実装

Slide 6

Slide 6 text

RAG(Retrieval-Augmented Generation)について 外部のデータベースや文書と連携して LLMに精度の高い回答を生成させるためのテクニック RAGを使うと何が嬉しいか? ● LLMが知らない知識に対応できる → 弊社のヘルプページの知識に対応させた

Slide 7

Slide 7 text

技術スタックと利用イメージ インフラ ● AWS Lambda ドキュメントのデータストア ● Momento Vector Index ドキュメントの保存コード ● Python LLM API ● OpenAIのGPT-4 ● AnthropicのClaude2.1(Amazon Bedrock経 由) RAG実装 ● TypeScript ● 参照したドキュメントへのリンク付きで回答してくれる ● ハルシネーション(幻覚)対策。人間が確認できるように

Slide 8

Slide 8 text

事前準備 ● LlamaIndex,LangChainを使ってヘルプサイトの内 容を取得し、Momento Vector Indexへの保存を 行う ● 様々なローダーがLlamaHubに用意されている ● 弊社はヘルプページにZendeskを使っているので ZendeskReaderが使えた これだけで弊社のヘルプページが全て保存される 


Slide 9

Slide 9 text

今回作ったRAGの構成 検索クエリをLLMに生成させる構成

Slide 10

Slide 10 text

今回作ったRAGの構成 GPT-4 Claude2.1 ● 検索実行の判断と検索クエリ生成用 ● 定義したJSON構造を返してくれるFunction Callingが優秀 ● 質のいいクエリを生成してくれる ● インプットの制限: 8K token ● gpt-4 turboは128Kだが安定しない(1/14現在) ● ドキュメントに沿った回答の生成用 ● インプットの制限: 200K token ● 大体のドキュメントが入ったプロンプトを使 える

Slide 11

Slide 11 text

今回作ったRAGの構成 Momento Vector Index ● サーバーレスなベクトルストア ● ベクトル化したヘルプサイト全体を事前に保存し、 外部知識をLLMに与えるために利用 ● 検索時にはベクトル化したクエリを用いてベクトル 間の距離メトリクスを計算して関連文書を取得 ● 検索にはコサイン類似度を利用。ベクトルの方向 を重視。文書の長さによる影響を比較的受けにく い

Slide 12

Slide 12 text

今回作ったRAGの構成 1. ユーザーの質問からGPT-4が検索するかどうかを 判断 2. 検索する場合検索クエリを生成 3. 生成された検索クエリでMomento Vector Index に保存されたドキュメントを検索 4. 取得したドキュメントをプロンプトに埋め込み Claude2.1で回答を生成

Slide 13

Slide 13 text

精度向上のために: クエリ拡張 ユーザーの質問が必ずしも検索クエリとして適切とは限らない スマートマットの最小計測単位は下記のとおりです。 1個あたり重量が最小計測単位より小さいと誤差の原因とな ります。 ・A3サイズ:100g ・A4サイズ:10g ・A5・A6サイズ:1g 検索対象の文書 A4 最小計測単位 スマートマットのA4サ イズの最小計測単位 はどのくらいか教え てください 0.877 0.924 コサイン類似度 (1が完全な類似性) クエリ1 クエリ2

Slide 14

Slide 14 text

精度向上のために: GPT-4 Function Callingプロンプト description:関数自体の説明。弊社のサービス以外の質問に検索が走らないように ● 弊社のサービスの概要とそのドキュメントの資料を取得するためのものであることを明 記 ● (ヘルプページが日本語なので)日本語の質問に最適化されていることを記載 parameters.query: 適切な検索クエリを生成するための定義 ● 200文字以下のSmartMat Cloudに関連する質問 ● 質問例を記載(A3マットで計測できる商品の最大重量は何gですか?) ● ユーザーが知りたいことを推察しながら明確で具体的なクエリに書き換えることを指示 ● 日本語を使うように再度強調

Slide 15

Slide 15 text

今後の展望 ● MVIのデータの定期更新 ● 検索対象のヘルプページ以外への拡大 ○ インターネット検索結果の参照 ○ Salesforce ○ ミーティング録画 ○ 社内ドキュメント ● RAG機能を分離して社内ChatGPTで使う