Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】I Built a Customer Support AI System to Help a Friend Find Answers Faster

2026年10月05日に「Dev.to」が公開したITニュース「I Built a Customer Support AI System to Help a Friend Find Answers Faster」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

顧客サポートにおいて、必要な情報を迅速に探すAIシステムが開発された。FAQやポリシー文書などを登録すると、質問の意味を理解し、関連情報を素早く見つけ出す。ChromaDBとセマンティック検索を使い、元の文書とページまで特定し、業務効率を向上させる。

ITニュース解説

このニュース記事では、顧客サポートの現場で役立つAIシステムを自作した事例が紹介されている。顧客サポートでは、FAQや各種ポリシー、手順書など、多くの情報が文書として存在しているにもかかわらず、質問に対する適切な答えを素早く見つけるのが難しいという課題が常にある。サポートチームは通常、複数のファイルに散らばった情報を手動で探し回る必要があり、これには時間がかかってしまう。このシステムは、そうした既存の文書から必要な情報を瞬時に見つけ出す手助けをすることを目指して作られた。

具体的には、このシステムは顧客サポートに関する様々な文書(PDF、テキスト、Markdownなど)を取り込み、それらを「意味」で検索できる知識ベースに変換する。従来のキーワード検索では、言葉が少し違うだけでヒットしなかったり、関連性の低い情報がたくさん表示されたりすることがあったが、このシステムでは質問の意味を理解して、最も関連性の高い情報を探し出すことができる。これにより、サポート担当者は手作業で膨大な文書を探し回る手間を省き、迅速かつ正確な回答を顧客に提供できるようになる。

システムの最初のステップは、サポート文書を取り込むことだ。APIを通じてPDFやテキストファイルがアップロードされると、まずPyMuPDFなどのツールを使って文書から文字情報が抽出される。次に、抽出されたテキストはそのままでは長すぎるため、「チャンク」と呼ばれる小さな塊に分割される。この際、情報が途切れないように、チャンク同士が少しずつ重なり合うように分割する「オーバーラップ」という工夫が施される。これにより、文脈が失われることなく、後続の処理で扱いやすくなる。各チャンクには、どの文書の何ページ目かといったメタデータ(付加情報)が保持される。

分割されたテキストチャンクは、次に「埋め込み」と呼ばれる特別な数値の並び、つまりベクトルデータに変換される。これは、人間が言葉の意味を理解するように、コンピューターがテキストの意味を理解できるようにするための重要な技術だ。Sentence Transformersという技術が使われ、テキストの文脈や内容が数値として表現される。例えば、「返金」と「払い戻し」は異なる言葉だが、意味が似ているため、埋め込みにすると非常に近いベクトルとして扱われる。この埋め込みによって、キーワードの一致だけでなく、意味の類似性に基づいて情報を探せるようになる。

生成された大量の埋め込みデータは、ChromaDBという特殊なデータベースに保存される。ChromaDBは、このようなベクトルデータを効率的に保存し、高速に検索するために特化している。従来のデータベースが文字や数字を整理して保存するのに対し、ベクトルデータベースは意味のまとまりであるベクトルを保存し、互いの「距離」に基づいて類似性を判断するのに使われる。

ユーザーがシステムに質問を入力すると、その質問も同様に埋め込みに変換される。そして、この質問の埋め込みベクトルと、ChromaDBに保存されている全ての文書チャンクの埋め込みベクトルとの「距離」が計算される。距離が近いほど意味が似ていると判断され、最も関連性の高い複数のチャンクが検索結果として取得される。この仕組みを「セマンティック類似性検索」と呼ぶ。このシステムでは、取得されたチャンクのテキスト、類似度スコア、そして元の文書情報やページ番号といったメタデータが返される。これにより、ユーザーは質問の意図に最も合致する情報を素早く手に入れられるのだ。

システムのバックエンド(裏側の処理を行う部分)はFastAPIというフレームワークを使って構築されている。FastAPIは、外部からシステムにアクセスするための「API」(アプリケーション・プログラミング・インターフェース)を提供する。具体的には、文書をアップロードしたり、検索を実行したりするための窓口となる。また、システムを実際に試すための簡単なデモンストレーション画面はStreamlitというツールで作られている。Streamlitを使うことで、専門的なプログラミング知識がなくても、視覚的にシステムと対話できるインターフェースを構築できる。

このシステムで特に重視された設計思想の一つに、「ソースの追跡可能性」がある。顧客サポートにおいて、提供される情報がどこから来たものなのか、どの文書の何ページに書かれているのかを明確にすることは非常に重要だ。単に答えのテキストを返すだけでなく、その情報が元のどのドキュメントの何ページ、何番目のチャンクから取得されたのかというメタデータも一緒に提示される。これにより、サポート担当者は検索結果の信頼性を容易に確認し、必要であれば元の文書を参照してさらに深く確認できるため、誤った情報を伝えるリスクが減る。

このプロジェクトでは、Sentence Transformers、ChromaDB、FastAPI、Streamlitといった様々なオープンソース技術が活用されている。オープンソースを使うことの大きな利点は、システムの各部分を開発者が自由に管理・変更できる「柔軟性」だ。特定の企業が提供する閉じたAIサービスに依存することなく、必要に応じて埋め込みモデルやベクトルデータベースを切り替えることも可能になる。また、内部の仕組みが公開されているため「透明性」が高く、どのようにデータが処理され、検索されているのかを理解しやすい。顧客情報など機密性の高いデータを扱う場合、「プライバシー」の観点からも、自社でコントロールできるオープンソースのコンポーネントを使うことは大きなメリットとなる。

このプロジェクトを通じて、開発者が最も大きな学びとして挙げているのは、AIアプリケーションにおいて「検索品質」がいかに重要かということだ。AIシステムというと、質問に答える大規模な言語モデル(LLM)ばかりに目が行きがちだが、実際に役立つシステムを作るには、その前段階で、いかに質の良い情報をAIに提供するかが鍵となる。文書が適切に抽出されず、適切にチャンクに分割されず、意味のある埋め込みが作られなければ、どんなに優れた言語モデルを使っても信頼性の高い回答は得られない。このシステムは、いわゆる「RAG(Retrieval-Augmented Generation)」というAIアーキテクチャの「Retrieval(検索)」部分の基礎を深く理解するのに役立ったという。良質な文書処理、チャンキング、埋め込み、効率的なベクトル検索が組み合わさって初めて、AIシステムは本当に役立つ情報を提供できるのだ。

このプロジェクトは、友人への手助けから始まり、最終的には、文書処理、埋め込み、ベクトルデータベース、セマンティック検索、API、そしてAIアプリケーションの全体的なアーキテクチャといった、多岐にわたる技術要素を実践的に探求する機会となった。最も重要な教訓は、有用なAIシステムを構築するためには、単に大規模なモデルを使うことだけでなく、人が求める情報と、その情報が実際に存在する場所との間に、より良い「経路」を築くことにある、という点だ。このシステムは、まさにその経路を構築し、必要な情報へのアクセスを飛躍的に高速化することを目指している。

関連コンテンツ

関連IT用語

関連ITニュース