【ざっくり解説】自社データを使って回答するAIチャットボットはどうやって動いているのか

ChatFAQを使うと、自身が登録したデータに基づいて問い合わせに回答するAIチャットボットを簡単に作成できます。

この記事では、自社データを使って回答を行うAIチャットボットが、どうやって動いているのかについて、エンジニア以外の人でも理解しやすいようにざっくりと解説します。

まずは失敗例を確認

AIチャットボットに自社データに基づいた回答をさせるにあたり、まずは正しく動作しない2つの手法とその理由を見てみましょう。

失敗例 1. ChatGPTにそのまま質問する

最もシンプルなAIチャットボットの作り方は、ユーザーから受け取った質問を、OpenAIのAPIを利用してChatGPT(GPT-3.5-turbo や GPT-4)にそのまま送信し、回答を受け取るというものです。

この方法では、自社データに基づいた回答は行われません。データを提供していないのですから当たり前ですね。

例えば、ユーザーがあなたが販売する製品やサービスの初期費用について質問しても、通常のChatGPTと同じように「回答できません」や、インターネット上の情報から学習したデータなどを使用して、それっぽい内容を適当にでっちあげて回答してしまいます。(いわゆるハルシネーション問題)

これでは自社製品やサービスに関する問い合わせに回答するAIチャットボットとしては利用できません。

失敗例 2. 自社データつきで質問する

次に考えられるのは、ユーザーから受け取った質問をそのままOpenAIのAPIに送るのではなく、自社データとセットにして送信し、回答を受け取る手法です。

一見うまくいきそうですし、質問に対する答えが前提情報に含まれている場合には、実際に正しい回答を得ることができます。ただし、この方法には以下のような問題があります。

メッセージに含めることができる自社データの量に限界がある

質問への回答に使用するLLM(GPT-3.5-turboやGPT-4などの大規模言語モデル)には、一度のやりとりで送受信できるトークン数(データ量)に上限が設定されています。

モデル名最大トークン数
gpt-3.5-turbo4,096(約3,100字)
gpt-3.5-turbo-16k16,384(約12,500字)
gpt-48,192(約6,200字)
gpt-4-32k32,768(約25,000字)
※ 文字数は概算です。質問や回答に含まれる文字の種類により変動します。

最大でも一度に25,000字程度のメッセージしかやりとりできないため、自社サイトや資料の内容をすべてメッセージに含めることはできません。

また、これらは送信メッセージだけでなく、OpenAIから受信するメッセージの文字数もカウントされます。そのため、実際に送信できるメッセージの文字数はもっと少なくなります。

高コスト

OpenAIのAPIでは、利用したトークン数に応じて料金が変動する従量課金システムが採用されています。

そのため、送信するすべてのメッセージに、上限ぎりぎりまでデータを詰め込むとコストがかさみます。


使用できる自社データの量に限界がありコストも高いため、この手法も自社製品やサービスに関する問い合わせに回答するAIチャットボットには使えません。

RAG(Retrieval Augmented Generation)= 現時点での最適解

現時点(2023年10月下旬)において、独自データを用いて回答を行うAIチャットボットに最も多く採用されているのが RAG(Retrieval Augmented Generation)という仕組みです。

RAG(Retrieval Augmented Generation)は、

ユーザーの質問に対して、学習済みデータから関連度の高いものを抽出(Retrieval)し、そのデータに基づき回答を生成(Generation)する仕組み

です。

Augmented は「拡張」という意味ですので、
RAG = 抽出されたデータの使用により機能拡張された回答生成手法
と理解するとよいかと思います。

RAGの仕組み

RAGでは学習データは細かく分割され、「チャンク」として外部のデータベースに格納されています。チャットボットがユーザーから質問を受け取ると、質問内容に意味的に近いチャンクを検索ベクトル検索)し、複数個抽出します。

意味で検索? ベクトル検索って?

RAGでは、質問に含まれるキーワードではなく、質問の「意味」を使って検索を行います。質問とデータベース内の文章のかたまり(チャンク)を比較し、意味的に近い(質問と関連性が高い)チャンクを抽出します。

詳細な説明は割愛しますが、学習データをベクトルDBという特殊なデータベースに格納することにより、表記揺れや質問文には含まれないが意味は近い単語にも対応した検索を実現しています。

RAGにおける「質問+関連データ」生成の流れ

抽出されたチャンクを繋ぎ合わせ、「関連データ」として質問と一緒にOpenAIのAPIに送信することにより、独自データに基づく回答を実現しています。

RAGのメリット

自社データに基づき回答するAIチャットボットの構築において、RAGには以下のようなメリットがあります。

メリット (1) : 大量の学習データに基づき回答できる

RAGでは学習データを外部のデータベースで管理します。データの学習についてはOpenAIのトークン制限とは無関係のため、大量のデータを学習させることができます。

メリット (2) : 低コスト

質問と関連した箇所(チャンク)だけをOpenAIのAPIに送信するため、使用トークン数 = コストを抑えることができます。また、LLMモデルのファインチューニングといった他の手法よりも一般的に低コストです。

メリット (3) : データの即時更新

外部データベースに対してデータの追加や更新を行うと、すぐに回答に反映されます。

上記の通り、RAGは独自データを用いて問い合わせに回答する仕組みとして非常に優れています。

国内外のAIチャットボット作成サービスのほとんどがRAGを使って作られていると考えてよいでしょう。

技術的背景を理解して、自社に最適なチャットボットサービスを選ぼう

エンジニアでなくても、RAG(Retrieval Augmented Generation)のようなAIチャットボットの仕組みを理解しておくことは非常に有用です。

AIチャットボットに関する基本的な知識があれば、自社のニーズや要件に最も適したチャットボット作成サービスを選ぶことができます。

具体的には、チャットボットに対して

  • 大量の自社データを学習させたい
  • データを更新したらすぐに回答内容に反映してほしい
  • 表記揺れに対応し、柔軟に回答してほしい

というニーズがある場合、シナリオ型チャットボットよりも、RAGを採用したAIチャットボットが適しているでしょう。

ChatFAQは、RAGをベースに

などに対応したAIチャットボット作成サービスです。

無期限・無料でお使いいただけるプランもありますので、AIチャットボットの導入のお考えの方は、ChatFAQをぜひご検討ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次