目次
n8n RAG チュートリアル:ドキュメントに基づいて回答する AI ナレッジベースを構築
AI モデルは、あなたの会社の規則、製品マニュアル、FAQ を知りません。RAG では、まずドキュメントを「ベクトルデータベース」に保存します。ユーザーが質問すると、関連性の高い段落を検索し、その内容に基づいてモデルに回答させます。
n8n では、RAG は通常 2 つのワークフローに分かれます。
① ドキュメントの取り込み:[ドキュメントを取得] ─▶ [Vector Store:挿入] ← [Embeddings] + [Document Loader + Text Splitter]
② 質問応答: [Chat Trigger] ─▶ [AI Agent] ← [Chat Model] + [Memory] + [Vector Store ツール ← Embeddings]
仕組みについては、Ollama のテキスト埋め込みと RAG を参照してください。
ベクトルデータベースを選ぶ
| ノード | 特徴 | 適した用途 |
|---|---|---|
| Simple Vector Store | n8n のメモリに保存され、インストール不要 | 学習、テスト(再起動するとデータは消えます) |
| Qdrant Vector Store | 専用のベクトルデータベースで、Docker でセルフホスト可能 | 本番利用 |
| Postgres PGVector Store | PostgreSQL + pgvector 拡張機能 | すでに PostgreSQL を利用している場合 |
| Pinecone、Supabase など | クラウドサービス | 自分で管理したくない場合 |
ここではまず Simple Vector Store を使って説明し、最後に Qdrant への切り替え方法を紹介します。
ワークフロー ①:ドキュメントの取り込み
1. トリガーとドキュメントの取得
- テストでは、Form Trigger にファイルアップロード欄を追加して、PDF を直接アップロードできます。
- 本番利用では、フォルダーに新しいファイルが追加されたときに起動する Google Drive Trigger と、ファイルをダウンロードする Google Drive ノードを使えます。
2. Vector Store ノードを追加する
Simple Vector Store を追加し、操作モードに Insert Documents を選択します。Memory Key に company_docs などの名前を入力します(質問応答でも同じ名前を使います)。
3. Embeddings を接続する
Embeddings の入力に埋め込みモデルを選択します。
- Embeddings OpenAI
- Embeddings Ollama(ローカルで無料。日本語と中国語には
bge-m3がおすすめです)
取り込みと検索には、必ず同じ埋め込みモデルを使用してください。異なるモデルではベクトルを照合できません。
4. Document Loader と Text Splitter を接続する
- Default Data Loader:Type of Data で Binary(ファイル)または JSON(テキストデータ)を選択します。
- Data Loader の下に Recursive Character Text Splitter を接続します。
- Chunk Size:各チャンクの文字数です。日本語のドキュメントでは、まず 500~800 を試してください。
- Chunk Overlap:隣接するチャンク間で重ねる文字数です。例:100
一度実行すると、ドキュメントが分割され、ベクトルに変換されて保存されます。
ワークフロー ②:質問応答
- When chat message received → AI Agent の順に接続します。
- AI Agent に Chat Model と Memory を接続します(AI Agent 入門 と同様です)。
- Tool の入力に Simple Vector Store を追加し、操作モードに Retrieve Documents (As Tool for AI Agent) を選択します。
- Memory Key:
company_docs - Description:
社内規則と製品ドキュメントを検索します。会社のポリシーや製品仕様に関する質問には、回答する前に必ず使用してください。 - Limit:取得するチャンク数です。例:4
- Memory Key:
- この Vector Store にも同じ Embeddings モデルを接続します。
- AI Agent のシステムプロンプトを設定します。
あなたは社内ナレッジベースのアシスタントです。日本語で回答してください。
回答する前に、必ずナレッジベースツールで検索してください。
検索結果の内容だけに基づいて回答してください。関連情報が見つからない場合は、「ナレッジベースに関連情報がありません」とそのまま伝え、推測で補わないでください。
Open chat をクリックしてテストし、ドキュメントの内容について質問します。
Simple Vector Store のデータはメモリに保存されます。2 つのワークフローは同じ n8n インスタンスで実行する必要があり、n8n の再起動後はドキュメントを再度取り込む必要があります。
Qdrant に切り替える(本番利用)
Docker Compose に Qdrant を追加します。
qdrant:
image: qdrant/qdrant
volumes:
- qdrant_data:/qdrant/storage
restart: unless-stopped
(volumes: セクションに qdrant_data: を追加してください。)
2 つのワークフローで Simple Vector Store を Qdrant Vector Store に置き換え、認証情報の URL に http://qdrant:6333 を入力します。両方で同じ Collection 名を指定してください。データは永続的に保存されます。
回答の品質を高める
- ドキュメントの品質が最も重要です:スキャン PDF は先にテキストに変換する必要があります。表や画像内の情報は正しく読み取れないことがあります。
- チャンクのサイズを調整します:回答に文脈が足りない場合は Chunk Size を大きくし、無関係な内容が混ざる場合は小さくします。
- メタデータを追加します:Data Loader にドキュメント名やカテゴリなどの metadata を追加すると、回答で出典を示したり、カテゴリで絞り込んだりできます。
- ドキュメントを更新します:同じドキュメントを更新したときは、古いベクトルを削除してから再度取り込みます。そうしないと新旧の内容が同時に検索されます。
- 適切な埋め込みモデルを選びます:日本語のコンテンツには多言語埋め込みモデルがおすすめです。
ドキュメント以外にも使う
同じ方法を次の用途にも使えます。
- カスタマーサポートの過去の Q&A → よくある質問への自動回答
- 製品カタログ → 製品推薦アシスタント
- 会議メモ → 「前回の会議では何が決まりましたか?」
更新日 2026年10月12日