OpenAI、RAG、MongoDBベクトルエmbedでナレッジベースチャットボットを構築
中級
これはSupport, AI分野の自動化ワークフローで、15個のノードを含みます。主にGoogleDocs, ManualTrigger, Agent, ChatTrigger, LmChatOpenAiなどのノードを使用、AI技術を活用したスマート自動化を実現。 OpenAI、RAG、MongoDBベクター埋め込みを使ってナレッジベースチャットボットを構築
前提条件
- •OpenAI API Key
- •MongoDB接続文字列
使用ノード (15)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "074f90e2bb5206c5f405a8aac6551497c72005283a5405fb08207b1b3a78c2b8",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "5cb0a836-f9a1-4f92-9326-cd82a392d0da",
"name": "ナレッジベースエージェント",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
220,
0
],
"parameters": {
"text": "={{ $json.chatInput }}",
"options": {
"systemMessage": "You are the AI assistant for an internal support team at a technology company specializing in advanced software solutions. Your task is to assist internal users by consulting the official product documentation stored in the company’s knowledge base.\n\nAvailable references:\n\nproductDocs: Step-by-step guides, technical configurations, and official manuals extracted from the product’s documentation.\n\nBehavior rules for answering questions:\nAlways consult the official product documentation first using the productDocs tool.\n\nRespond clearly and directly, explaining how to do what is requested.\n\nDo not filter by category unless explicitly asked by the user.\n\nDetect the language of each incoming message individually and respond in that language. Do not use prior conversation language or history to decide the response language.\n\nNever provide links, even if requested. If a user asks for a link, reply:\n“I cannot provide links. If you need specific information, please let me know and I will help with the details.”\n\nUse a professional, direct, and human tone.\n\nKeep answers between 2 and 4 lines unless the user requests more detail.\n\nDo not invent information that is not in the knowledge base.\n\nIf you give numbered steps or lists, number them sequentially (1, 2, 3...) without skipping or repeating numbers, even if the source content uses different numbering."
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "56e6fb75-6a97-4466-9e7f-70710c2740d7",
"name": "OpenAI チャットモデル",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
60,
240
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "cJRah9hGPQ7eX4jd",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "e352c32e-7108-4a0d-b081-b2532d96d092",
"name": "埋め込み OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
680,
380
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "cJRah9hGPQ7eX4jd",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "74bbfb00-1a00-4131-a291-bce5b79628b4",
"name": "ワークフロー実行時",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-60,
-420
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f720a4b0-6239-4a0b-bb61-1e43f78f8e40",
"name": "シンプルメモリ",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
320,
220
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "94561d61-4a01-48b6-b114-dc4d47546ff3",
"name": "MongoDB ベクトル検索",
"type": "@n8n/n8n-nodes-langchain.vectorStoreMongoDBAtlas",
"position": [
560,
220
],
"parameters": {
"mode": "retrieve-as-tool",
"options": {},
"toolName": "productDocs",
"mongoCollection": {
"__rl": true,
"mode": "list",
"value": "n8n-template",
"cachedResultName": "n8n-template"
},
"toolDescription": "retreive documentation",
"vectorIndexName": "data_index"
},
"credentials": {
"mongoDb": {
"id": "7riubYENUDZsmjyK",
"name": "MongoDB account 2"
}
},
"typeVersion": 1.1
},
{
"id": "c473c33d-5681-4f3a-ac36-0d3012e7251f",
"name": "ドキュメントセクションローダー",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
740,
-260
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "doc_id",
"value": "={{ $json.documentId }}"
}
]
}
},
"jsonData": "={{ $json.content }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "321222cb-1daf-4be2-a6ca-1a03d24f670f",
"name": "ドキュメントチャンカー",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
860,
-100
],
"parameters": {
"options": {
"splitCode": "markdown"
},
"chunkSize": 3000,
"chunkOverlap": 200
},
"typeVersion": 1
},
{
"id": "716519f5-cec1-4bfe-afbe-614fc23e74b5",
"name": "MongoDB ベクトルストア挿入器",
"type": "@n8n/n8n-nodes-langchain.vectorStoreMongoDBAtlas",
"position": [
540,
-420
],
"parameters": {
"mode": "insert",
"options": {},
"mongoCollection": {
"__rl": true,
"mode": "list",
"value": "n8n-template",
"cachedResultName": "n8n-template"
},
"vectorIndexName": "data_index"
},
"credentials": {
"mongoDb": {
"id": "7riubYENUDZsmjyK",
"name": "MongoDB account 2"
}
},
"typeVersion": 1.1
},
{
"id": "a49c19fc-f5f5-4381-b6ba-1bfc12b96135",
"name": "OpenAI 埋め込み生成器",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
480,
-180
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "cJRah9hGPQ7eX4jd",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "6de724d5-2941-4e72-af8b-302ca2cf2ca0",
"name": "Google ドキュメントインポーター",
"type": "n8n-nodes-base.googleDocs",
"position": [
200,
-420
],
"parameters": {
"operation": "get",
"documentURL": "https://docs.google.com/document/d/1gvgp71e9edob8WLqFIYCdzC7kUq3pLO37VKb-a-vVW4/edit?tab=t.0"
},
"credentials": {
"googleDocsOAuth2Api": {
"id": "FNXMwqMf7vl1WUFj",
"name": "Google Docs account"
}
},
"typeVersion": 2
},
{
"id": "4f30bb21-72f0-4d13-b610-2ec218ad31b1",
"name": "付箋ノート",
"type": "n8n-nodes-base.stickyNote",
"position": [
-420,
-440
],
"parameters": {
"color": 5,
"content": "Run this workflow manually to import and index Google Docs product documentation into MongoDB with vector embeddings for fast search."
},
"typeVersion": 1
},
{
"id": "25fd33d5-041b-4f01-a46b-1bacabd88376",
"name": "チャットメッセージ受信時",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
40,
0
],
"webhookId": "427ead97-647d-49c7-82d7-e76b40664fd1",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "f1f3fadd-d5e6-45df-b810-1616531dffcb",
"name": "付箋ノート1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-420,
40
],
"parameters": {
"color": 4,
"content": "This workflow uses retrieval-augmented generation (RAG) to answer user questions by searching the MongoDB vector store and generating AI responses with context."
},
"typeVersion": 1
},
{
"id": "39eee95c-b332-4ae4-bde9-aaf0fe5e0546",
"name": "付箋ノート2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1060,
-380
],
"parameters": {
"height": 520,
"content": "Search Index Example \n\n{\n \"mappings\": {\n \"dynamic\": false,\n \"fields\": {\n \"_id\": {\n \"type\": \"string\"\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"embedding\": {\n \"type\": \"knnVector\",\n \"dimensions\": 1536,\n \"similarity\": \"cosine\"\n },\n \"source\": {\n \"type\": \"string\"\n },\n \"doc_id\": {\n \"type\": \"string\"\n }\n }\n }\n}\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"f720a4b0-6239-4a0b-bb61-1e43f78f8e40": {
"ai_memory": [
[
{
"node": "5cb0a836-f9a1-4f92-9326-cd82a392d0da",
"type": "ai_memory",
"index": 0
}
]
]
},
"321222cb-1daf-4be2-a6ca-1a03d24f670f": {
"ai_textSplitter": [
[
{
"node": "c473c33d-5681-4f3a-ac36-0d3012e7251f",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"e352c32e-7108-4a0d-b081-b2532d96d092": {
"ai_embedding": [
[
{
"node": "94561d61-4a01-48b6-b114-dc4d47546ff3",
"type": "ai_embedding",
"index": 0
}
]
]
},
"56e6fb75-6a97-4466-9e7f-70710c2740d7": {
"ai_languageModel": [
[
{
"node": "5cb0a836-f9a1-4f92-9326-cd82a392d0da",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"6de724d5-2941-4e72-af8b-302ca2cf2ca0": {
"main": [
[
{
"node": "716519f5-cec1-4bfe-afbe-614fc23e74b5",
"type": "main",
"index": 0
}
]
]
},
"5cb0a836-f9a1-4f92-9326-cd82a392d0da": {
"main": [
[]
]
},
"94561d61-4a01-48b6-b114-dc4d47546ff3": {
"ai_tool": [
[
{
"node": "5cb0a836-f9a1-4f92-9326-cd82a392d0da",
"type": "ai_tool",
"index": 0
}
]
]
},
"c473c33d-5681-4f3a-ac36-0d3012e7251f": {
"ai_document": [
[
{
"node": "716519f5-cec1-4bfe-afbe-614fc23e74b5",
"type": "ai_document",
"index": 0
}
]
]
},
"25fd33d5-041b-4f01-a46b-1bacabd88376": {
"main": [
[
{
"node": "5cb0a836-f9a1-4f92-9326-cd82a392d0da",
"type": "main",
"index": 0
}
]
]
},
"a49c19fc-f5f5-4381-b6ba-1bfc12b96135": {
"ai_embedding": [
[
{
"node": "716519f5-cec1-4bfe-afbe-614fc23e74b5",
"type": "ai_embedding",
"index": 0
}
]
]
},
"74bbfb00-1a00-4131-a291-bce5b79628b4": {
"main": [
[
{
"node": "6de724d5-2941-4e72-af8b-302ca2cf2ca0",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - サポート, 人工知能
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
スマートな知識アシスタント
Telegram 上で GPT-4o-mini、RAG、RLHF を使用して、スマート知識アシスタントを構築し、MongoDB を統合
Set
Code
Telegram
+
Set
Code
Telegram
26 ノードNovaNode
サポート
テキスト、音声、画像、PDF をサポートする RAG を備えた AI 駆動型 WhatsApp チャットボット
テキスト、音声、画像、PDF をサポートする AI 搭載の WhatsApp チャットボット (RAG)
Set
Code
Switch
+
Set
Code
Switch
35 ノードNovaNode
エンジニアリング
AIメール自動返信システム - メールボックスRAGインテリジェントエージェント
AIメール自動返信システム - メールボックスRAGインテリジェントエージェント
If
Set
Gmail
+
If
Set
Gmail
34 ノードLukaszB
サポート
基于AIのMISエージェント
基于AIの管理信息系统エージェント
If
Set
Code
+
If
Set
Code
129 ノードKumar Shivam
サポート
AI スマートアシスタント: Supabase ストレージと Google Drive ファイルとの対話
AIワンチャットボット:SupabaseストレージとGoogle Driveのファイルと対話
If
Set
Wait
+
If
Set
Wait
62 ノードMark Shcherbakov
エンジニアリング
BambooHR AI 駆動の会社方針と福利チャットボット
BambooHR AI を活用した会社のポリシーと福利厚生用チャットボット
Set
Filter
Bamboo Hr
+
Set
Filter
Bamboo Hr
50 ノードLudwig
人事