pinecone-n8n について
Pinecone n8n Workflow Skill は、Pinecone ノードを使う n8n ワークフローの作成、設定、デバッグを支援します。マネージド型の Pinecone Assistant と、細かく制御できる Pinecone Vector Store の使い分けや設定方法を説明します。
主な機能
- 01Assistant と Vector Store ノードの選択
- 02ファイル取り込みと検索フローの設定
- 03メタデータとフィルターの設定
- 04更新とマルチモーダルアップロードの利用
- 05正しい接続を含むワークフロー JSON の生成
活用シーン
- 01n8n でドキュメント Q&A ワークフローを作成
- 02Pinecone Assistant 内のファイルを更新
- 03カスタム埋め込みによる検索フローの構築
- 04Pinecone ノードを使うワークフローのデバッグやレビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pinecone-io/ skills --skill pinecone-n8nインストール後、Claude Code で/pinecone-n8nを入力して読み込まれたか確認します。
詳細
Pinecone n8n ワークフロースキル
<<invoke_this_skill>>
このスキルでは、ベストプラクティスに従って Pinecone ノードを使った n8n ワークフローを構築できます。次の 2 つの Pinecone ノードについて説明します。
- Pinecone Assistant (
@pinecone-database/n8n-nodes-pinecone-assistant) — ほとんどのユースケースで推奨 - Pinecone Vector Store (
@n8n/n8n-nodes-langchain.vectorStorePinecone) — 高度な制御向け
基本ルール: 常にノードに組み込まれたリソースと操作を使用してください。HTTP ノードを使って Pinecone REST API を直接呼び出す方法は、絶対に提案しないでください。
ステップ 1:ユーザーのシナリオを把握する
ユーザーが何をしようとしているのかを尋ねます。
- 新しいワークフローを一から構築する
- 特定の Pinecone ノードを設定する、または理解する
- 動作しないワークフローをデバッグする
- ベストプラクティスに照らして既存のワークフローを確認する
ステップ 2:ノードを選択する(新しいワークフローと設定に関する質問の場合)
まず、必ず推奨の選択肢として Pinecone Assistant ノードを提示してください。どちらのノードがより適しているかを独自に判断して、この手順を省略してはいけません。Google Drive や Webhook などの特定のトリガーや、テキスト、Markdown、PDF などのファイル形式がユースケースに含まれていても、それらの詳細によって使用するノードが決まるわけではありません。
次の場合に限り、この手順を省略できます。
- ユーザーが特定のノードを明示的に指定している場合(例:「Vector Store ノードを使いたい」「pineconeAssistant の設定を手伝って」)
- ユーザーが、すでに特定の Pinecone ノードを含む既存のワークフローをデバッグまたは設定している場合
ユーザーがノードを指定していない場合は、必ず Assistant ノードを最初に尋ねるか、推奨してください。 ユーザーが「デフォルトを使う」と言った場合や、質問できない場合は、Pinecone Assistant ノードをデフォルトとして選び、Assistant の手順を進めてください。
ユーザーに使用するノードを尋ね、次の 2 つの選択肢を提示します。
Pinecone Assistant(推奨)
- 完全マネージドの RAG — Pinecone がチャンク分割、埋め込み、インデックス作成を自動的に処理します
- ファイル名と URL を含む引用機能を内蔵
- 設定がより簡単:n8n で埋め込みモデルやテキストスプリッターを用意する必要がありません
- 最適な用途:ドキュメントの Q&A、ファイルとのチャット、ナレッジベース検索
Pinecone Vector Store
- 埋め込みモデル、チャンク分割の方式、メタデータを完全に制御できます
- あらゆる埋め込みモデル(OpenAI、Cohere、HuggingFace など)で動作します
- 次の場合に必要です:カスタム埋め込みが必要な場合、既存の Pinecone インデックスがある場合、メタデータフィルタリングが必要な場合、またはチャンク分割を細かく制御する必要がある場合
Pinecone Assistant ノード — ベストプラクティスとワークフローの生成
ノードのパッケージ名
- ファイル操作(アップロード、一覧表示、削除):
@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant - AI エージェントツールとしてのチャット/検索:
@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistantTool
前提条件
- ワークフローを実行する前に、https://app.pinecone.io/organizations/-/projects/-/assistant の Pinecone Console で Pinecone Assistant を作成してください
- n8n で API キーを使って Pinecone 認証情報を設定してください
ワークフローの構成
標準的なパターンは、次の 2 フェーズのワークフローです。
フェーズ 1 — 取り込み(一度だけ、またはスケジュールに従って実行):
Manual Trigger → Set file URLs → Split Out → HTTP Request (download) → Pinecone Assistant (uploadFile)
フェーズ 2 — チャット:
Chat Trigger → AI Agent ← Pinecone Assistant Tool (connected as ai_tool)
← OpenAI Chat Model (connected as ai_languageModel)
主な設定ルール
- assistantData パラメーター:
nameとhostの両方のフィールドを必ず含めてください。
Pinecone Console でアシスタントのホストを確認できます。アシスタントの詳細ページを開き、ホスト URL(形式:{"name": "your-assistant-name", "host": "https://your-assistant-host.pinecone.io"}https://<region>-data.<subdomain>.pinecone.io)をコピーしてください。 - sourceTag:必ず
additionalFieldsに含めてください。{"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"} - 接続タイプ:Assistant Tool は
mainではなく、ai_tool接続を介して AI Agent に接続します。 - externalFileId:これをファイル URL の式に設定して、Pinecone に引用用の参照として保存させてください。
- 認証情報:どちらのノードのバリアントにも
pineconeApi認証情報タイプを使用してください。 - アップロード時のファイルメタデータ:
additionalFields.metadata.metadataValuesを使って、{"key": "...", "value": "..."}オブジェクトの配列としてキーと値のメタデータを追加してください。externalFileIdは自動的にメタデータに追加されるため、手動で含めないでください。例:"additionalFields": { "metadata": {"metadataValues": [{"key": "department", "value": "legal"}]} } - listFiles でのメタデータフィルタリング:単純な等価フィルターには
additionalFields.metadataFilter.metadataValues(同じ{key, value}配列)を使用し、$or、$ne、$inなどの演算子にはadditionalFields.advancedMetadataFilter(JSON 文字列)を使用してください。両方を同時に設定することはできません。単純なフィルターの例:"additionalFields": { "metadataFilter": {"metadataValues": [{"key": "department", "value": "legal"}]} } - マルチモーダル PDF のアップロード:PDF に画像やグラフが含まれており、視覚検索用にインデックス化する必要がある場合は、
uploadFileノードでadditionalFields.multimodalFile: trueを設定してください。画像を後で取得できるようにするには、この設定が必要です。デフォルトでは有効になっていません。
Assistant パス用のワークフロー JSON の生成
ユーザーが実際に説明している内容(トリガー、モデル、データソース、構造)に合わせてワークフローを構築してください。構造上重要な点で説明されていないことがあれば、質問してください。ユーザーが値を指定していない場合に限り、以下のデフォルト値を使用してください。
- Assistant の名前:
n8n-assistant(複数の場合はn8n-assistant-1、n8n-assistant-2などを使用します。Pinecone Console に存在する Assistant と一致する必要があります) - ファイル URL:Pinecone のサンプルリリースノート PDF
- LLM モデル:
gpt-5-mini - システムメッセージ:引用を付けて Assistant から情報を取得するための汎用プロンプト
以下の JSON は、各ノードの正しいパラメーター値、必須フィールド、接続タイプを示す参照設定です。ノードの設定方法を確認するガイドとして使用し、内容をそのままコピーするテンプレートとしては使用しないでください。置換するプレースホルダー:
[ASSISTANT_NAME]— Assistant の名前[ASSISTANT_HOST]— Pinecone Console の Assistant ホスト URL(例:https://your-assistant-host.pinecone.io)[USER_FILE_URLS_ARRAY]— ファイル URL 文字列の JSON 配列。例:["https://example.com/doc.pdf"][USER_MODEL]— LLM モデル名。例:gpt-5-mini[USER_TOPIC]— システムメッセージに含める、Assistant が把握している内容の簡単な説明
{
"nodes": [
{
"parameters": {
"options": {
"systemMessage": "You are a helpful assistant. Use the Pinecone Assistant Tool to retrieve data about [USER_TOPIC]. Include the file name and file url in citations wherever referenced in output."
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.2,
"position": [2208, 784],
"id": "e4c65881-120c-4a7c-854b-138611c8dfa3",
"name": "AI Agent"
},
{
"parameters": {
"model": {"__rl": true, "mode": "list", "value": "[USER_MODEL]"},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [2144, 1008],
"id": "b3ea858d-b62d-4022-8241-8872e403839a",
"name": "OpenAI Chat Model"
},
{
"parameters": {
"content": "## 1. Upload files to Pinecone Assistant",
"height": 384,
"width": 1104,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"position": [1616, 288],
"typeVersion": 1,
"id": "9cfcdb71-2986-47a3-8f03-250fcab1048d",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## 2. Chat with your docs",
"height": 512,
"width": 1104,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"position": [1616, 688],
"typeVersion": 1,
"id": "d7f2f4b8-2e45-4902-8949-202b8b2c699b",
"name": "Sticky Note2"
},
{
"parameters": {"options": {}},
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.3,
"position": [1840, 784],
"id": "4d2a6aa1-ca4d-4165-a635-7ef53084636b",
"name": "Chat input",
"webhookId": "4672d1f8-d2bb-4059-8761-7aa5792814c0"
},
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [1760, 432],
"id": "3e9529b4-d0ae-4ea8-9d27-c96e7cbd6ad9",
"name": "When clicking 'Execute workflow'"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "d0e724df-685f-4661-b2ec-3cdd3c2ba0f1",
"name": "urls",
"value": "[USER_FILE_URLS_ARRAY]",
"type": "array"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [1920, 432],
"id": "6b409421-2270-497e-a7fd-b382d192314c",
"name": "Set file urls"
},
{
"parameters": {"fieldToSplitOut": "urls", "options": {}},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [2080, 432],
"id": "e73f6f2c-4d20-48cb-b132-551ff9c3dd61",
"name": "Split to list"
},
{
"parameters": {
"url": "={{ $json.urls }}",
"options": {"response": {"response": {"responseFormat": "file"}}}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [2240, 432],
"id": "a58f8e1c-943b-4a24-8746-477ed9912ad4",
"name": "Download file"
},
{
"parameters": {
"resource": "file",
"operation": "uploadFile",
"assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
"externalFileId": "={{ $('Split to list').item.json.urls }}",
"additionalFields": {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"}
},
"type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant",
"typeVersion": 1.2,
"position": [2416, 432],
"id": "196122df-d2b2-43e4-9f8d-710aedb595a6",
"name": "Upload file to Assistant"
},
{
"parameters": {
"assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
"additionalFields": {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"}
},
"type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistantTool",
"typeVersion": 1.2,
"position": [2368, 992],
"id": "c3ba53e9-511d-47e7-b7fb-38bb093d279f",
"name": "Get context from Assistant"
}
],
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [[{"node": "AI Agent", "type": "ai_languageModel", "index": 0}]]
},
"Chat input": {
"main": [[{"node": "AI Agent", "type": "main", "index": 0}]]
},
"When clicking 'Execute workflow'": {
"main": [[{"node": "Set file urls", "type": "main", "index": 0}]]
},
"Set file urls": {
"main": [[{"node": "Split to list", "type": "main", "index": 0}]]
},
"Split to list": {
"main": [[{"node": "Download file", "type": "main", "index": 0}]]
},
"Download file": {
"main": [[{"node": "Upload file to Assistant", "type": "main", "index": 0}]]
},
"Get context from Assistant": {
"ai_tool": [[{"node": "AI Agent", "type": "ai_tool", "index": 0}]]
}
},
"pinData": {},
"meta": {"templateCredsSetupCompleted": false}
}
その他の Pinecone Assistant 操作
ファイルのアップロードと更新 — 適切な操作の選択
| シナリオ | 使用する操作 |
|---|---|
| ファイルが新規であることが保証されている(これまでに取り込まれたことがない) | uploadFile |
| ファイルが Assistant にすでに存在する可能性がある(再取り込み、スケジュールされた更新) | updateFile |
updateFile はべき等です。一致する externalFileId を持つすべてのファイルを検索して削除し、新しいバージョンをアップロードします。その ID のファイルが存在しない場合は、uploadFile とまったく同じように動作します。同じソースファイルに対してワークフローが複数回実行される可能性がある場合は、常に updateFile を使用してください。
updateFile のパラメーターは uploadFile と同じです。assistantData、externalFileId、inputDataFieldName、および metadata、multimodalFile、sourceTag を含むすべての additionalFields が対象です。
{
"parameters": {
"resource": "file",
"operation": "updateFile",
"assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
"externalFileId": "={{ $('Split to list').item.json.urls }}",
"additionalFields": {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"}
},
"type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant",
"typeVersion": 1.2
}
ファイルの一覧表示
resource: "file", operation: "listFiles" を使用すると、メタデータで絞り込んでファイルを取得できます。
{
"parameters": {
"resource": "file",
"operation": "listFiles",
"assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
"additionalFields": {
"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill",
"metadataFilter": {
"metadataValues": [{"key": "department", "value": "legal"}]
}
}
},
"type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant",
"typeVersion": 1.2
}
複雑なフィルターには、metadataFilter ではなく advancedMetadataFilter(JSON 文字列)を使用してください。両方を同時に使用しないでください。
"additionalFields": {
"advancedMetadataFilter": "{\"department\": {\"$in\": [\"legal\", \"finance\"]}}"
}
コンテキストスニペットを取得する
resource: "contextSnippet", operation: "getContextSnippets"を使用すると、関連するテキストや画像のチャンクを直接取得できます。チャットへの返信ではなく、ワークフローデータとして取得した生のコンテキストが必要な場合に便利です。
{
"parameters": {
"resource": "contextSnippet",
"operation": "getContextSnippets",
"assistantData": "{\"name\":\"[ASSISTANT_NAME]\",\"host\":\"https://[ASSISTANT_HOST]\"}",
"query": "={{ $json.chatInput }}",
"additionalFields": {
"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill",
"includeMultimodalContext": true,
"includeBinaryContent": true,
"topK": 16,
"snippetSize": 2048
}
},
"type": "@pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant",
"typeVersion": 1.2
}
同じmetadataFilter/advancedMetadataFilterオプションをgetContextSnippetsでも使用すると、特定のメタデータに一致するファイルに取得対象を絞り込めます。includeBinaryContentフラグが適用されるのは、includeMultimodalContextがtrueの場合のみです。
Pinecone Vector Storeノード — ベストプラクティスとワークフローの生成
ノードパッケージ名
@n8n/n8n-nodes-langchain.vectorStorePinecone
前提条件
- ワークフローを実行する前に、https://app.pinecone.io/organizations/-/projects/-/indexes のPinecone Consoleで、正しい名前と次元数のPineconeインデックスを作成します
- APIキーを使用して、n8nでPinecone認証情報を設定します
- n8nでOpenAI認証情報を設定します
ワークフローのアーキテクチャ
2つのvectorStorePineconeノードインスタンスを使用する2フェーズのワークフローです。
フェーズ1 — 取り込み(1回実行するか、スケジュールに従って実行):
Manual Trigger → Set file URLs → Split Out → HTTP Request (download)
→ Pinecone Vector Store (insert mode)
↑ Default Data Loader ← Recursive Character Text Splitter
↑ Embeddings OpenAI
フェーズ2 — チャット:
Chat Trigger → AI Agent ← Pinecone Vector Store (retrieve-as-tool mode)
↑ Embeddings OpenAI (same model as insert)
← OpenAI Chat Model
主な設定ルール
- 2つのノードインスタンス:取り込みには
insertモードのvectorStorePineconeを1つ使用し、チャットにはretrieve-as-toolモードの別のノードを使用します - 埋め込みモデルの一貫性:
insertノードとretrieve-as-toolノードの両方で、同じ埋め込みモデルと次元数を必ず使用します。ai_embedding接続を介して、単一のEmbeddings OpenAIノードを共有します insertノードに必要な付随ノード:@n8n/n8n-nodes-langchain.embeddingsOpenAi— インデックスに合わせて次元数を設定します(text-embedding-3-smallの場合は1536)@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter— データローダーに接続します@n8n/n8n-nodes-langchain.documentDefaultDataLoader—dataType: binaryおよびtextSplittingMode: customを設定します
toolDescription:retrieve-as-toolノードに、明確で具体的な説明を記述します。AI Agentはこれを基に、いつクエリを実行するか判断しますtopK:デフォルト値として20を使用します。より幅広く検索する場合は値を増やし、トークン使用量を抑える場合は減らします- 引用用のメタデータ:Default Data Loaderで、メタデータフィールドとして
external_file_urlを追加し、={{ $json.urls }}を設定します。これにより、AI Agentが出典を引用できます - 認証情報:
pineconeApi認証情報タイプを使用します
チャンク分割のガイドライン
- 3000文字/オーバーラップ500文字:記事、レポート、ドキュメントなどの長い文書に適したデフォルト値です
- 500~1000文字/オーバーラップ100~200文字:Q&A形式の検索や、短く情報密度の高いコンテンツに適しています
- 参考:https://www.pinecone.io/learn/chunking-strategies/
インデックスのセットアップ手順
ワークフローを生成する際は、必ずユーザーに次の手順を案内します。
- https://app.pinecone.io/organizations/-/projects/-/indexes に移動し、インデックスを作成します
- ワークフロー内の
pineconeIndexの値と一致する名前を設定します - n8nのEmbeddingsノードに一致する埋め込みモデルを選択します(text-embedding-3-small → 1536次元)
Vector Store パス用のワークフロー JSON の生成
ユーザーが実際に説明した内容(トリガー、埋め込みモデル、チャンク分割戦略、データソース、構造)に合わせてワークフローを作成してください。構造上重要で、まだ説明されていない内容については質問してください。ユーザーが値を指定していない場合に限り、以下のデフォルト値を使用してください。
- インデックス名:
n8n-index(複数の場合はn8n-index-1、n8n-index-2などを使用します。既存の Pinecone インデックスと一致している必要があります) - ファイル URL:Pinecone のリリースノート PDF のサンプル
- LLM モデル:
gpt-5-mini - 埋め込みモデル:
text-embedding-3-small(1536 次元) - チャンクサイズ:3000 文字/オーバーラップ 500 文字
- システムメッセージ/ツールの説明:引用付きでインデックスから情報を取得する汎用プロンプト
以下の JSON は、各ノードの正しいパラメーター値、必須フィールド、接続タイプを示す参照用の設定です。ノードの設定方法を確認するためのガイドとして使用し、そのままコピーするテンプレートとしては使用しないでください。置き換えるプレースホルダー:
[INDEX_NAME]— インデックス名[USER_FILE_URLS_ARRAY]— ファイル URL 文字列の JSON 配列。例:["https://example.com/doc.pdf"][USER_MODEL]— LLM モデル名。例:gpt-5-mini[USER_TOPIC]— AI Agent のシステムメッセージ用のデータの簡単な説明[USER_TOOL_DESCRIPTION]— ツールノード用のベクトルストアに含まれるデータの説明
{
"nodes": [
{
"parameters": {
"mode": "insert",
"pineconeIndex": {
"__rl": true,
"value": "[INDEX_NAME]",
"mode": "list",
"cachedResultName": "[INDEX_NAME]"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"typeVersion": 1.3,
"position": [224, 0],
"id": "163c0a37-427c-4da7-a194-203ac216c88e",
"name": "Pinecone Vector Store"
},
{
"parameters": {
"options": {"dimensions": 1536}
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [336, 608],
"id": "a034bcb9-d813-4fd0-a68a-426c1f2b2aba",
"name": "Embeddings OpenAI"
},
{
"parameters": {"options": {}},
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.3,
"position": [-512, 896],
"id": "56182cf7-2bda-4513-a2f9-18fb70c718ec",
"name": "When chat message received",
"webhookId": "30328376-a9e3-4f11-b1eb-2bbaadbea688"
},
{
"parameters": {
"options": {
"systemMessage": "You are a helpful assistant. Only use the Pinecone Vector Store Tool to retrieve data about [USER_TOPIC]. Include the file name and file url in citations wherever referenced in output."
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.2,
"position": [-336, 896],
"id": "36bb8361-edfd-47ff-aaf1-48f3c31fb1f7",
"name": "AI Agent"
},
{
"parameters": {
"model": {
"__rl": true,
"value": "[USER_MODEL]",
"mode": "list",
"cachedResultName": "[USER_MODEL]"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [-336, 1200],
"id": "22d00f25-44eb-40c1-8dae-b757e4b66690",
"name": "OpenAI Chat Model"
},
{
"parameters": {
"mode": "retrieve-as-tool",
"toolDescription": "[USER_TOOL_DESCRIPTION]",
"pineconeIndex": {
"__rl": true,
"value": "[INDEX_NAME]",
"mode": "list",
"cachedResultName": "[INDEX_NAME]"
},
"topK": 20,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"typeVersion": 1.3,
"position": [-16, 1104],
"id": "15c599b7-93bb-44b7-b95c-190200de2a20",
"name": "Pinecone Vector Store Tool"
},
{
"parameters": {
"content": "## 1. Process new files, embed, and upsert to Pinecone index",
"height": 576,
"width": 1744,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"position": [-608, -80],
"typeVersion": 1,
"id": "18f22d77-fb10-4fa7-b942-2fafd7ca30c3",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## 2. Chat with your docs",
"height": 640,
"width": 1744,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"position": [-608, 784],
"typeVersion": 1,
"id": "7b7be380-821c-4012-8f1a-1606527d2544",
"name": "Sticky Note1"
},
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [-512, 0],
"id": "a0a3b917-765b-445e-9866-d3fc651ef6a8",
"name": "When clicking 'Execute workflow'"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "d0e724df-685f-4661-b2ec-3cdd3c2ba0f1",
"name": "urls",
"value": "[USER_FILE_URLS_ARRAY]",
"type": "array"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [-352, 0],
"id": "651439de-5525-4d0a-b055-1d722e81c0aa",
"name": "Set file urls"
},
{
"parameters": {"fieldToSplitOut": "urls", "options": {}},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [-192, 0],
"id": "8878265e-9e6f-4d9a-b533-53100205eb38",
"name": "Split to list"
},
{
"parameters": {
"chunkSize": 3000,
"chunkOverlap": 500,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"typeVersion": 1,
"position": [416, 352],
"id": "347ba65b-9fad-4b92-a90f-6690df8e2a7e",
"name": "Recursive Character Text Splitter"
},
{
"parameters": {
"url": "={{ $json.urls }}",
"options": {"response": {"response": {"responseFormat": "file"}}}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [-32, 0],
"id": "edf963af-18ee-4605-9b1e-49118c56b52d",
"name": "Download file"
},
{
"parameters": {
"dataType": "binary",
"textSplittingMode": "custom",
"options": {
"metadata": {
"metadataValues": [
{"name": "external_file_url", "value": "={{ $json.urls }}"}
]
}
}
},
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1.1,
"position": [336, 192],
"id": "e9b99301-3af1-4d19-ab78-3fd0e8946fd1",
"name": "Default data loader"
}
],
"connections": {
"Embeddings OpenAI": {
"ai_embedding": [[
{"node": "Pinecone Vector Store", "type": "ai_embedding", "index": 0},
{"node": "Pinecone Vector Store Tool", "type": "ai_embedding", "index": 0}
]]
},
"When chat message received": {
"main": [[{"node": "AI Agent", "type": "main", "index": 0}]]
},
"OpenAI Chat Model": {
"ai_languageModel": [[{"node": "AI Agent", "type": "ai_languageModel", "index": 0}]]
},
"Pinecone Vector Store Tool": {
"ai_tool": [[{"node": "AI Agent", "type": "ai_tool", "index": 0}]]
},
"When clicking 'Execute workflow'": {
"main": [[{"node": "Set file urls", "type": "main", "index": 0}]]
},
"Set file urls": {
"main": [[{"node": "Split to list", "type": "main", "index": 0}]]
},
"Split to list": {
"main": [[{"node": "Download file", "type": "main", "index": 0}]]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [[{"node": "Default data loader", "type": "ai_textSplitter", "index": 0}]]
},
"Download file": {
"main": [[{"node": "Pinecone Vector Store", "type": "main", "index": 0}]]
},
"Default data loader": {
"ai_document": [[{"node": "Pinecone Vector Store", "type": "ai_document", "index": 0}]]
}
},
"pinData": {},
"meta": {"templateCredsSetupCompleted": false}
}
デバッグガイダンス
ユーザーからワークフローが動作しないと報告された場合は、どのノードで失敗しているか、どのようなエラーが表示されるかを尋ねてから、以下のよくある問題を参照してください。
| エラー/症状 | 原因 | 修正方法 |
|---|---|---|
| "Assistant not found" | assistantData.name が既存のアシスタントと一致しない | まず Pinecone Console でアシスタントを作成し、名前を完全に一致させます |
| "Invalid credentials" | Pinecone API キーが設定されていないか、ノードで誤った認証情報が指定されている | 各 Pinecone ノードで pineconeApi 認証情報を再選択します |
| "Dimension mismatch" | 埋め込みモデルの次元数がインデックスと一致しない | インデックスと Embeddings ノードで同じ次元数を使用する必要があります(例:text-embedding-3-small の場合は 1536) |
| エージェントがツールを呼び出さない | toolDescription が曖昧 | ストア内のデータと、回答可能な質問を具体的に説明します |
| 結果が返されない | データ取り込みが実行されていない、または topK が小さすぎる | まず Phase 1 を実行し、topK を 20 以上に増やしてみます |
| HTTP ノードが Pinecone API を呼び出している | パターンが誤っている | @pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant または @n8n/n8n-nodes-langchain.vectorStorePinecone に置き換えます |
ベストプラクティスの確認リスト
既存のワークフローを確認する際は、以下をチェックしてください。
- Pinecone エンドポイントを呼び出す HTTP ノードがない — 該当するものはすべて適切な Pinecone ノードに置き換えます
- Vector Store:同じ Embeddings ノードを、挿入用とツールとしての取得用の両方のインスタンスに接続します
- Assistant:
assistantDataにnameとhostの両方が含まれ、additionalFieldsにsourceTagが設定されている - toolDescription が具体的でわかりやすい(「ベクトルストア」のような汎用的な説明ではない)
- Vector Store のメタデータ:ソース引用用に、Default Data Loader のメタデータに
external_file_urlが保存されている - Assistant のファイルメタデータ:後でフィルタリングが必要になる場合に備えて、アップロードするファイルに意味のあるキーと値のメタデータを設定している
- メタデータフィルター:ファイルの一部に絞り込む場合、
listFilesとgetContextSnippetsでメタデータフィルターを使用している(両方のフィルターフィールドを同時に使用しない) - マルチモーダルアップロード:PDF に画像やグラフが含まれる場合、
uploadFileでmultimodalFile: trueを設定している — 視覚的なコンテンツのインデックス化に必要ですが、デフォルトではありません - マルチモーダル検索:ワークフローでテキストとともに画像チャンクが必要な場合、
getContextSnippetsでincludeMultimodalContext: trueとincludeBinaryContent: trueを設定している - チャンクサイズがコンテンツの種類に適している(上記のチャンク分割ガイダンスを参照)
- インデックスが、正しい次元数でワークフローの実行前に作成されている