mcpField
P
pinecone-n8n

pinecone-n8n

github.com/pinecone-ioデータ・データベース16159 回インストール6 週間前に更新
リポジトリ

pinecone-n8n について

Pinecone n8n Workflow Skill は、Pinecone ノードを使う n8n ワークフローの作成、設定、デバッグを支援します。マネージド型の Pinecone Assistant と、細かく制御できる Pinecone Vector Store の使い分けや設定方法を説明します。

主な機能

  1. 01Assistant と Vector Store ノードの選択
  2. 02ファイル取り込みと検索フローの設定
  3. 03メタデータとフィルターの設定
  4. 04更新とマルチモーダルアップロードの利用
  5. 05正しい接続を含むワークフロー JSON の生成

活用シーン

  1. 01n8n でドキュメント Q&A ワークフローを作成
  2. 02Pinecone Assistant 内のファイルを更新
  3. 03カスタム埋め込みによる検索フローの構築
  4. 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
前提条件
ワークフローの構成

標準的なパターンは、次の 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)
主な設定ルール
  1. assistantData パラメーター:name と host の両方のフィールドを必ず含めてください。
    {"name": "your-assistant-name", "host": "https://your-assistant-host.pinecone.io"}
    
    Pinecone Console でアシスタントのホストを確認できます。アシスタントの詳細ページを開き、ホスト URL(形式:https://<region>-data.<subdomain>.pinecone.io)をコピーしてください。
  2. sourceTag:必ず additionalFields に含めてください。
    {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"}
    
  3. 接続タイプ:Assistant Tool は main ではなく、ai_tool 接続を介して AI Agent に接続します。
  4. externalFileId:これをファイル URL の式に設定して、Pinecone に引用用の参照として保存させてください。
  5. 認証情報:どちらのノードのバリアントにも pineconeApi 認証情報タイプを使用してください。
  6. アップロード時のファイルメタデータ:additionalFields.metadata.metadataValues を使って、{"key": "...", "value": "..."} オブジェクトの配列としてキーと値のメタデータを追加してください。externalFileId は自動的にメタデータに追加されるため、手動で含めないでください。例:
    "additionalFields": {
      "metadata": {"metadataValues": [{"key": "department", "value": "legal"}]}
    }
    
  7. listFiles でのメタデータフィルタリング:単純な等価フィルターには additionalFields.metadataFilter.metadataValues(同じ {key, value} 配列)を使用し、$or、$ne、$in などの演算子には additionalFields.advancedMetadataFilter(JSON 文字列)を使用してください。両方を同時に設定することはできません。単純なフィルターの例:
    "additionalFields": {
      "metadataFilter": {"metadataValues": [{"key": "department", "value": "legal"}]}
    }
    
  8. マルチモーダル 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
主な設定ルール
  1. 2つのノードインスタンス:取り込みにはinsertモードのvectorStorePineconeを1つ使用し、チャットにはretrieve-as-toolモードの別のノードを使用します
  2. 埋め込みモデルの一貫性:insertノードとretrieve-as-toolノードの両方で、同じ埋め込みモデルと次元数を必ず使用します。ai_embedding接続を介して、単一のEmbeddings OpenAIノードを共有します
  3. 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を設定します
  4. toolDescription:retrieve-as-toolノードに、明確で具体的な説明を記述します。AI Agentはこれを基に、いつクエリを実行するか判断します
  5. topK:デフォルト値として20を使用します。より幅広く検索する場合は値を増やし、トークン使用量を抑える場合は減らします
  6. 引用用のメタデータ:Default Data Loaderで、メタデータフィールドとしてexternal_file_urlを追加し、={{ $json.urls }}を設定します。これにより、AI Agentが出典を引用できます
  7. 認証情報:pineconeApi認証情報タイプを使用します
チャンク分割のガイドライン
  • 3000文字/オーバーラップ500文字:記事、レポート、ドキュメントなどの長い文書に適したデフォルト値です
  • 500~1000文字/オーバーラップ100~200文字:Q&A形式の検索や、短く情報密度の高いコンテンツに適しています
  • 参考:https://www.pinecone.io/learn/chunking-strategies/
インデックスのセットアップ手順

ワークフローを生成する際は、必ずユーザーに次の手順を案内します。

  1. https://app.pinecone.io/organizations/-/projects/-/indexes に移動し、インデックスを作成します
  2. ワークフロー内のpineconeIndexの値と一致する名前を設定します
  3. 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 に置き換えます

ベストプラクティスの確認リスト

既存のワークフローを確認する際は、以下をチェックしてください。

  1. Pinecone エンドポイントを呼び出す HTTP ノードがない — 該当するものはすべて適切な Pinecone ノードに置き換えます
  2. Vector Store:同じ Embeddings ノードを、挿入用とツールとしての取得用の両方のインスタンスに接続します
  3. Assistant:assistantData に name と host の両方が含まれ、additionalFields に sourceTag が設定されている
  4. toolDescription が具体的でわかりやすい(「ベクトルストア」のような汎用的な説明ではない)
  5. Vector Store のメタデータ:ソース引用用に、Default Data Loader のメタデータに external_file_url が保存されている
  6. Assistant のファイルメタデータ:後でフィルタリングが必要になる場合に備えて、アップロードするファイルに意味のあるキーと値のメタデータを設定している
  7. メタデータフィルター:ファイルの一部に絞り込む場合、listFiles と getContextSnippets でメタデータフィルターを使用している(両方のフィルターフィールドを同時に使用しない)
  8. マルチモーダルアップロード:PDF に画像やグラフが含まれる場合、uploadFile で multimodalFile: true を設定している — 視覚的なコンテンツのインデックス化に必要ですが、デフォルトではありません
  9. マルチモーダル検索:ワークフローでテキストとともに画像チャンクが必要な場合、getContextSnippets で includeMultimodalContext: true と includeBinaryContent: true を設定している
  10. チャンクサイズがコンテンツの種類に適している(上記のチャンク分割ガイダンスを参照)
  11. インデックスが、正しい次元数でワークフローの実行前に作成されている

コメント