月数十万円の機会損失を「AIフロント係」で解決する
兄が高級車専門の整備工場を経営しているが、毎週数百件もの電話に出られず、月に数千ドル相当の受注機会を逃していた。エンジンルームに頭を突っ込んでいる最中に電話が鳴り、出られなければ客は他店へ電話する。ブレーキ交換なら450ドル、エンジン修理なら2,000ドルの案件が、電話一本で消えていく。
そこで筆者が自作したのが、AIボイスエージェント「Axle(アクスル)」だ。車の車軸(axle)にちなんだ名前で、単なる汎用チャットボットではなく、工場の正確な料金・営業時間・ポリシーを把握した専用の音声受付システムである。
Part 1:AIの「脳」をRAGパイプラインで構築する
最初の課題は、AIがハルシネーション(事実に基づかない回答)なく正確に答えられるかだ。素のLLMに「ブレーキはいくら?」と聞かせると、実際は450ドルなのに200ドルと答えかねない。これは顧客の期待を裏切り、クレームに直結する。
これを防ぐために採用したのが**RAG(Retrieval-Augmented Generation:検索拡張生成)**だ。モデルに推測させるのではなく、実際の情報をナレッジベースとして与え、そこからのみ回答させる仕組みである。
実装ステップ
① ウェブサイトをスクレイピングしてナレッジベース化
サービスページや料金表をMarkdownファイルとして収集。サービス種別・料金・納期・営業時間・支払い方法・キャンセルポリシー・保証・代車有無・対応車種など、21以上のドキュメントを整備した。
② MongoDB AtlasにベクトルDBとして格納
各ドキュメントをVoyage AI(voyage-3-large)で1024次元のベクトルに変換して格納。単なるキーワード一致ではなく「意味的な近さ」で検索できるため、「ブレーキ交換の値段は?」という問いかけが、文言が異なっていても正確にブレーキ料金ドキュメントを引き当てられる。
③ Claude(Sonnet)で回答生成
取得したドキュメントをコンテキストとしてAnthropic Claude(claude-sonnet-4-6)に渡し、「ナレッジベースにある情報のみで答え、知らなければ折り返し連絡を申し出る」という厳格なシステムプロンプトで制御する。
この段階でターミナルから質問を入力すると、「オイル交換はいくら?」→「conventional(鉱物油)は45ドル、synthetic(化学合成油)は75ドルです。フィルター交換・液体補充・タイヤ空気圧チェック込みで約30分です」という正確な回答が返るようになった。
Part 2:実際の電話番号と接続する
次に、このAIを実際の電話回線につなぐためVapiを採用した。Vapiは電話番号の取得・音声認識(Deepgram)・音声合成(ElevenLabs)・リアルタイム関数呼び出しをすべて担う音声AIプラットフォームだ。
筆者はFastAPIでWebhookサーバーを構築。顧客が質問するとVapiがサーバーの/webhookエンドポイントにリクエストを送り、サーバーがRAGパイプライン経由でClaudeに問い合わせて回答を返す。Vapiはその回答を音声合成して顧客に話しかける、というフローだ。
技術スタックのまとめ
役割 採用技術
ナレッジベース検索 MongoDB Atlas Vector Search
埋め込みモデル Voyage AI(voyage-3-large)
LLM Anthropic Claude(claude-sonnet-4-6)
音声インフラ Vapi(Deepgram + ElevenLabs)
バックエンド FastAPI(Python)
このようなRAG+音声AIの組み合わせは、中小規模の対人サービス業(飲食店・クリニック・不動産など)でも応用可能だ。電話対応の人手不足に悩む日本の事業者にとっても、参考になる実装アプローチといえる。