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

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

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

antigravity449ai-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/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

AIツール2026-03-26
Antigravity で構築する RAG パイプライン — ベクトル検索 × LLM で社内ナレッジを即座に活用する
Antigravity でベクトル検索パイプラインを構築する上級チュートリアル。gemini-embedding-001 への移行で実際につまずいた次元数・正規化・タスクタイプの3点、ChromaDB への差分インジェスト、ハイブリッド検索、LLM-as-a-Judge による評価までを実装コードとともに解説します。
AIツール2026-06-17
Antigravity の LLM アプリは、ダッシュボードが緑のまま請求と品質がずれていく — 観測の計装メモ
ダッシュボードは緑なのに請求が見積もりの1.6倍になっていた LLM アプリの観測を立て直した計装メモです。評価モデル費用の分離、既定モデルの変更による品質の静かな劣化の検知、テナント単位のコスト台帳、計装を入れる順番までをまとめています。
AIツール2026-06-12
Gemma 4 × Antigravity で組む検索品質の評価ハーネス
RAG の回答が時々ズレる問題を数値に置き換える評価ハーネスの作り方。30問のゴールデンデータセット、recall@5・MRR・nDCG の実装、Gemma 4 による忠実性審査、pytest の回帰テストまで、ローカル環境の実測値と共に共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →