Upgrade to Pro — share decks privately, control downloads, hide ads and more …

製品の問い合わせ負荷をLLMで解消したい​ 〜RAGで作る「自社を知っている」チャットボット〜​

Avatar for OPTiM OPTiM
August 05, 2026

製品の問い合わせ負荷をLLMで解消したい​ 〜RAGで作る「自社を知っている」チャットボット〜​

2026/07/21 開催「「生成AIとともに叶えた・叶えたい願い Vol.2」LT会 〜七夕エディション〜」でのオプティム 小笠原の発表資料です。

https://optim.connpass.com/event/397915/

Avatar for OPTiM

OPTiM

August 05, 2026

More Decks by OPTiM

Other Decks in Technology

Transcript

  1. 自己紹介 基本情報 • 所属:株式会社オプティム技術統括本部DXビジネス開発部 • 名前:小笠原 • 役職: エンジニア 主な取り組み

    • 2024/04 ~2026/03: R&D ユニット • LLM を使用した製品開発 / 精度検証を担当 • 2026/04 ~: • OPTiM Support & Growth Portal の製品開発 • RAG を使用した AI チャットボット など LLM を使用した機能の開発 / 保守を担当 © 2019-2026 OPTiM Corp. All rights reserved. 2
  2. 叶えたい願い:製品の問い合わせ対応、地味につらい 製品を提供していると、日々届く問い合わせ • 「この機能の使い方がわからない」 • 「仕様はどうなっているのか?」 • 「エラーが出たがどうすればいいか」 回答する側の負荷 •

    答えは大体 ドキュメントやFAQに書いてある(けど読まれない・見つからない) • 同じ質問に何度も答える/回答できる人にばかり負荷が集中する • 開発の手が止まる ドキュメントは揃っている。「探して読んで答える」の部分を LLM に任せたい・・・ そんな願いを叶える RAG を手元で簡単に作ったので共有します! © 2019-2026 OPTiM Corp. All rights reserved. 3
  3. 素の LLM は自社製品を知らない LLM が答えられるのは「学習した内容」だけ • 自社製品のマニュアル・FAQ・仕様書は 学習され ていない •

    社内ドキュメントも当然知らない ユーザー: CloudCam X の録画データって何日間保存され ますか? 知らないことを聞かれると… • 「わかりません」ならまだ良い • それっぽい嘘(ハルシネーション)を答えることも • サポート用途では致命的 素のLLM:CloudCam X についての情報は持っていません。 一般的なクラウドカメラでは30日間保存されることが多い です… ユーザー:(30日…?うちベーシックプランだから7日なん だけど…) ※ CloudCam X はこの後のデモで使う架空のカメラ製品 © 2019-2026 OPTiM Corp. All rights reserved. 4
  4. そこで RAG(Retrieval-Augmented Generation) 発想はシンプル:「検索」で見つけた情報を LLM に渡してから答えさせる • LLM を再学習するのではなく、質問のたびに必要な情報を「その場で持たせる」 【事前準備】

    製品ドキュメント チャンク分割 Embedding インデックス FAQ/製品マニュアル 検索しやすい単位に 文章→ベクトル ベクトルDBなど 【質問時・毎回】 質問 ベクトル検索 プロンプト構築 意味が近いチャンクを取得 質問+参考情報 © 2019-2026 OPTiM Corp. All rights reserved. LLM 回答 5
  5. 仕組み①:Embedding 〜文章を「意味の座標」にする〜 文章を入れると、数値ベクトルが出てくる • • 代表的なEmbeddingモデル 例:1536 個の数値の並び(1536次元) 意味が近い文章ほど、近いベクトルになるよう学 習済み

    キーワード一致との違い • • 「録画は何日残る?」と「保存期間」— 単語は 違っても 意味が近ければヒットする 言い回しがバラバラな問い合わせと相性が良い 「録画は何日残る?」 ≈ 「保存期間は7日間…」 「録画は何日残る?」 ≠ 「対応ブラウザ一覧」 • • • • OpenAI text-embedding-3:API型。高精度で 多言語対応(最大3072次元) Gemini Embedding:GoogleのAPI型。出力次 元数を柔軟に調整可能 Ruri v3:日本語特化。軽量(310M)で高精度、 ローカル動作 BGE-M3:多言語。意味検索と語句検索を1モデル で両立 ← 近い ← 遠い © 2019-2026 OPTiM Corp. All rights reserved. 6
  6. 仕組み②:チャンキング 〜長い文章を検索単位に切り分ける〜 なぜチャンクに分けるのか • • 代表的な分割手法 長い文書をまるごとベクトル化すると意味がぼや けて検索精度が落ちる 質問に関係する部分だけを取り出せるよう、小さ な単位に分けておく

    • • チャンクサイズの考え方 • • • • 小さすぎ → 文脈が切れて意味が不足する 大きすぎ → 無関係な内容が混ざり検索がぼやける 256〜1024トークン の範囲で調整することが多い • よく使う工夫 • 長文ドキュメント(1000文字) ▼ • チャンクに分割 [①(100文字ずつ)][②]…[㉚] 固定長:文字数・トークン数で機械的に区切る (最もシンプル) 構造ベース:見出し・段落など文書構造に沿って 区切る セマンティック チャンキング:文の意味の切れ目 で区切り、検索精度を高める 階層型 チャンキング:文書→章→段落と親子で保 持し、粗く探して詳細を取る オーバーラップ:チャンク間を数十トークン重ね、 文脈の断絶を防ぐ メタデータ付与:出典・見出しを一緒に保存し、 回答の根拠に使う ▼ 各チャンクを Embedding(ベクトル化) ▼ ベクトルDBに保存 © 2019-2026 OPTiM Corp. All rights reserved. 7
  7. 仕組み③:ベクトル検索 〜質問に近いチャンクを取ってくる〜 質問に近いチャンクを取得 • • • • 質問を同じモデルでベクトル化 全チャンクと類似度を比較し、類似度スコアが高い上位 k

    件を取得 類似度を比較することで単語が一致していなくても、意味が似ていればヒットしている 上位 k 件をLLMに与える 質問 カメラがネットに繋がらなくなったら録画はどうなる? ベクトル(1,10) Top-K=2 chunk LLMに与える カメラがオフラインの場合は・・・ カメラのネットワーク要件は・・・ ベクトル(1,11) ベクトル(3,11) 録画データのダウンロードは・・・ 料金プランは・・・ ベクトル(13,2) ベクトル(6,3) © 2019-2026 OPTiM Corp. All rights reserved. カメラがオフラインの場合は・・・ カメラのネットワーク要件は・・・ 8
  8. 仕組み④:プロンプト構築 〜検索結果を LLM に渡す〜 検索したチャンクを「参考情報」として埋め込む システムプロンプトでふるまいを縛る • 参考情報だけを根拠に答えさせる • 見つからなければ

    「わかりません」と言わせる → ハルシネーション対策はここで効く # システムプロンプト あなたは「CloudCam X」のサポート担当です。 - 参考情報に含まれる内容だけを根拠に回答 - 見つからない場合は推測せず 「わかりません。窓口へ〜」と答える # ユーザープロンプト # 参考情報 [faq.md] ## 録画データはどのくらいの期間… [spec.md] ## 料金プラン … # 質問 録画データは何日間保存されますか? LLM は「知識を思い出す係」ではなく「渡された資料を読んで答える係」にする © 2019-2026 OPTiM Corp. All rights reserved. 9
  9. 作ってみた:最小構成の RAG データ:FAQ、マニュアル、製品仕様がMarkdown形式で書かれたドキュメントを3ファイル ※ 約 150 行でできました ① チャンキング(準備) •

    Markdown を見出し(#/##)単位 で分割 • 3 ファイル → 計 14 チャンク(1 チャンク ≒ 200〜400 字) • 見出しテキストも各チャンクに付与 ② 検索(Top-K = 3) • 質問文を Embedding 化 • 全 14 チャンクとコサイン類似度を計 算 • 上位 3 件だけをプロンプトに添付し て回答 © 2019-2026 OPTiM Corp. All rights reserved. 使ったもの • Embedding:text-embedding-3small (OpenAI) • 生成:gpt-5.4-nano (OpenAI) • 検索:numpy のみ(外部DB不使用) 10
  10. デモ:3 つの質問で確かめる 質問 ドキュメントの正解データ 返ってきた回答 ① 録画データは何日間保存されますか? (そのままの質問) faq.md「保存期間」 ベーシック7日/スタンダード30日/エン

    タープライズ180日 7/30/180 日をプラン別に正確に回答 ② ネットに繋がらないと録画は? (言い換え・語句が違う) faq.md「オフライン録画」 該当箇所を意味で特定 語句が違っても意味でヒットし正しく回答 ③ タイムラプスは? (ドキュメントに載っていない) 該当データなし 根拠がないため「わかりません」と回答 © 2019-2026 OPTiM Corp. All rights reserved. 11
  11. 本番でやるなら:今日は省いたところ 検索の質を上げる スケールと運用 信頼性 • Embedding モデルの選定(Ruri / 商用API を日本語性能で比較)

    • ハイブリッド検索(ベクトル + BM25) • リランキング • チャンク分割の設計(サイズ・重 なり・表/画像) • 文書が増えたらベクトルDBの使用 • ドキュメント更新へのインデック ス追従 • 回答に出典(どのドキュメント か)を付ける • 評価の仕組み(データセットの作 成 / 検索・生成の精度を測る)→ 継続的に改善 © 2019-2026 OPTiM Corp. All rights reserved. 12
  12. まとめ 素の LLM は自社製品を知らない — 学習していないから • 知らないまま聞くと、答えられないか、それっぽい嘘が返ってくる RAG=「検索して渡してから答えさせる」だけ •

    • Embedding・チャンキング・ベクトル検索・プロンプト構築の 4 要素 最小構成なら約 150 行、フレームワークなしで書ける 叶えたい願い • • 「探して読んで答える」を任せて、問い合わせ対応の負荷を減らしたい まず社内ドキュメントの Q&A から小さく始めるのがおすすめ ドキュメントがあるなら、「自社を知っている」チャットボットは今日から作れる © 2019-2026 OPTiM Corp. All rights reserved. 13