◉ANTIGRAVITY LABEN
記事一覧/AIツール
⚙ AIツール/2026-03-30上級

Antigravity × カスタムAIチャットボット — RAG・Function Calling・Streaming UI の実装記録

RAG・Function Calling・Streaming UI を組み合わせたカスタムAIチャットボットの実装記録。日本語でリコールが伸びなかった原因(トークン見積もりの罠)と、埋め込みモデル選定・本番運用の判断まで動くコードで示します。

antigravity464ai-chatbotrag8function-calling5streaming-uivercel-ai-sdkcloudflare-workers9vector-search3production59

✦ プレミアム記事

取り組みの背景 — 日本語のFAQで、リコールが伸びなかった

自作の壁紙アプリのサポート窓口に小さなRAGチャットボットを載せたとき、最初の数週間の回答品質はお世辞にも良いとは言えませんでした。約1,200件のFAQを投入してあるのに、「解約したい」と聞かれて解約手順のチャンクが上位に出てこない。埋め込みモデルもベクトルDBも公式サンプルどおりに組んであり、コードは一行も落ちていません。

原因にたどり着くまで、ずいぶん遠回りをしました。結論から書くと、チャンク分割のコードに書いた Math.ceil(text.length / 4) という一行が、日本語では約3.9倍ずれていたのです。トークン数を512に抑えたつもりのチャンクは、実際には2,000トークンを超えていました。埋め込みモデルの入力上限は512トークンですから、投入した文章の四分の三は、エラーも警告も出さないまま捨てられていたことになります。

この記事は、その遠回りを含めたカスタムAIチャットボットの実装記録です。RAG・Function Calling・Streaming UI の三つを組み合わせた構成を、動くコードとして最後まで示します。

  • RAG(Retrieval-Augmented Generation): 独自のドキュメントやデータベースから関連情報を検索し、回答の精度を向上させる
  • Function Calling: 外部APIやデータベースと動的に連携し、リアルタイムの情報を取得・操作する
  • Streaming UI: ユーザーにトークン単位でリアルタイム応答を表示し、体感速度を劇的に改善する

対象読者はAIアプリケーション開発経験のあるエンジニアで、TypeScript・Next.js・ベクトルデータベースの基本知識を前提とします。RAGの基礎概念について先に学びたい方は「Antigravity × RAGパイプライン構築ガイド」を参照してください。

アーキテクチャ全体像 — 3層構成の設計思想

カスタムAIチャットボットのアーキテクチャは、大きく3つのレイヤーで構成します。

プレゼンテーション層(Streaming UI)

ユーザーとのインタラクションを担当するフロントエンドレイヤーです。Vercel AI SDK の useChat フックを用いて、Server-Sent Events(SSE)ベースのストリーミングを実現します。トークンが生成されるたびにリアルタイムでUIに反映されるため、ユーザーは待ち時間を感じにくくなります。

オーケストレーション層(Function Calling Router)

AIモデルとツール群を仲介するミドルウェアレイヤーです。ユーザーの意図を解析し、適切なツール(関数)を選択・実行します。天気の取得、データベースクエリ、外部API呼び出しなど、複数のツールを柔軟に組み合わせることで、AIの能力を大幅に拡張できます。

知識層(RAG Pipeline)

AIの回答精度を高めるための知識ベースレイヤーです。ドキュメントをチャンク分割し、ベクトル埋め込みに変換してベクトルデータベースに格納します。ユーザーの質問に対して意味的に類似したドキュメントを検索し、コンテキストとしてLLMに渡すことで、ハルシネーション(幻覚)を大幅に削減できます。

// アーキテクチャの概念的な構造
// Presentation Layer → Orchestration Layer → Knowledge Layer
 
interface ChatbotArchitecture {
  // Streaming UI Layer
  presentation: {
    framework: "Next.js App Router";
    streaming: "Vercel AI SDK useChat";
    transport: "Server-Sent Events (SSE)";
  };
  // Function Calling Router
  orchestration: {
    model: "Gemini 2.5 Pro" | "Claude 4 Sonnet";
    tools: ToolDefinition[];
    router: "AI-driven tool selection";
  };
  // RAG Pipeline
  knowledge: {
    embedding: "@cf/baai/bge-m3";  // 多言語対応・日本語を含む
    vectorDB: "Cloudflare Vectorize" | "Pinecone";
    chunking: "semantic-splitting";
  };
}
✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦日本語で投入ドキュメントの75.4%が黙って捨てられていた原因と、トークナイザで実測する修正版チャンカー
✦埋め込みモデル選定の実データ比較(入力上限512対60,000・単価16.7倍差)と、検索側とインデックス側を揃える理由
✦本番投入前に潰すべき7項目の実装チェックリスト(埋め込みコスト・レート制限・タイムアウト設計)
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⚙ AIツール2026-06-12
Gemma 4 × Antigravity で組む検索品質の評価ハーネス
RAG の回答が時々ズレる問題を数値に置き換える評価ハーネスの作り方。30問のゴールデンデータセット、recall@5・MRR・nDCG の実装、Gemma 4 による忠実性審査、pytest の回帰テストまで、ローカル環境の実測値と共に共有します。
⚙ AIツール2026-04-21
プロンプトは「資産」です — Antigravityで作る本番級プロンプト管理基盤:バージョニング・A/Bテスト・品質評価の実装パターン
プロンプトをコードとして扱い、バージョン管理・A/Bテスト・品質評価を自動化する本番基盤の実装ガイド。AntigravityのAIエージェントで安全にプロンプトを改善し続けるための設計パターンを、動作するコードとともに解説します。
⚙ AIツール2026-10-01
コマンドが読めなくても、エージェントの作業で見る場所は3か所で足ります
エージェントがターミナルに流す文字列が読めず、承認ボタンを押すのが怖い方へ。作業前の戻り口・実行前の動詞・終了後の差分という3か所だけを見る、非エンジニア向けの確認線の引き方です。