pinecone-n8n

Par pinecone-io · skills

Créez des workflows n8n à l'aide du nœud Pinecone Assistant ou du nœud Pinecone Vector Store. À utiliser pour construire des pipelines RAG, des workflows de chat avec des documents, configurer des nœuds Pinecone dans n8n, dépanner des nœuds Pinecone n8n, ou pour toute question sur les bonnes pratiques Pinecone dans n8n.

npx skills add https://github.com/pinecone-io/skills --skill pinecone-n8n

Compétence Workflow n8n Pinecone

Cette compétence vous aide à créer des workflows n8n avec des nœuds Pinecone en respectant les meilleures pratiques. Elle couvre deux nœuds Pinecone :

  • Pinecone Assistant (@pinecone-database/n8n-nodes-pinecone-assistant) — recommandé pour la plupart des cas d'usage
  • Pinecone Vector Store (@n8n/n8n-nodes-langchain.vectorStorePinecone) — pour un contrôle avancé

Règle fondamentale : Utilisez toujours les ressources et opérations intégrées du nœud. Ne suggérez jamais d'utiliser le nœud HTTP pour appeler directement l'API REST Pinecone.


Étape 1 : Comprendre le scénario de l'utilisateur

Demandez à l'utilisateur ce qu'il essaie de faire :

  • Créer un workflow à partir de zéro
  • Configurer ou comprendre un nœud Pinecone spécifique
  • Déboguer un workflow qui ne fonctionne pas
  • Examiner un workflow existant pour respecter les meilleures pratiques

Étape 2 : Sélection du nœud (pour les nouveaux workflows et questions de configuration)

Présentez toujours le nœud Pinecone Assistant comme le choix recommandé en premier. Ne sautez PAS cette étape en fonction de votre propre déduction sur le nœud qui convient le mieux — même si le cas d'usage mentionne des déclencheurs spécifiques (Google Drive, webhooks, etc.) ou des types de fichiers (texte, markdown, PDF), ces détails ne déterminent pas quel nœud utiliser.

Sautez cette étape uniquement si :

  • L'utilisateur nomme explicitement un nœud spécifique (par ex. « Je veux utiliser le nœud Vector Store », « aide-moi à configurer pineconeAssistant »)
  • L'utilisateur débogue ou configure un workflow existant qui contient déjà un nœud Pinecone spécifique

Si l'utilisateur n'a pas nommé de nœud, posez toujours la question ou recommandez d'abord le nœud Assistant. Si l'utilisateur a dit « utilise les valeurs par défaut » ou que vous ne pouvez pas poser la question, utilisez par défaut le nœud Pinecone Assistant et procédez avec le chemin Assistant.

Demandez à l'utilisateur quel nœud il souhaite utiliser, en présentant ces deux options :

Pinecone Assistant (Recommandé)

  • RAG entièrement géré — Pinecone gère automatiquement le chunking, l'embedding et l'indexation
  • Citations intégrées avec noms de fichiers et URLs
  • Configuration plus simple : aucun modèle d'embedding ou text splitter nécessaire dans n8n
  • Idéal pour : Q&A sur documents, chat avec fichiers, recherche de base de connaissances

Pinecone Vector Store

  • Contrôle total sur le modèle d'embedding, la stratégie de chunking et les métadonnées
  • Fonctionne avec n'importe quel modèle d'embedding (OpenAI, Cohere, HuggingFace, etc.)
  • Requis quand : vous avez besoin d'embeddings personnalisés, d'un index Pinecone existant, de filtrage par métadonnées, ou d'un contrôle précis sur le chunking

Nœud Pinecone Assistant — Meilleures pratiques et génération de workflow

Noms de paquets de nœuds

  • Opérations fichier (upload, list, delete) : @pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant
  • Chat/retrieval comme outil d'agent IA : @pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistantTool

Conditions préalables

Architecture du workflow

Le modèle standard est un workflow en deux phases :

Phase 1 — Ingestion (exécution unique ou programmée) :

Manual Trigger → Set file URLs → Split Out → HTTP Request (download) → Pinecone Assistant (uploadFile)

Phase 2 — Chat :

Chat Trigger → AI Agent ← Pinecone Assistant Tool (connected as ai_tool)
                        ← OpenAI Chat Model (connected as ai_languageModel)

Règles de configuration clé

  1. Paramètre assistantData : Incluez toujours les champs name ET host :
    {"name": "your-assistant-name", "host": "https://your-assistant-host.pinecone.io"}

    Trouvez l'hôte de votre assistant dans la console Pinecone : ouvrez la page de détail de l'assistant et copiez l'URL hôte (format : https://<region>-data.<subdomain>.pinecone.io).

  2. sourceTag : Incluez toujours dans additionalFields :
    {"sourceTag": "n8n:n8n_nodes_pinecone_assistant:pinecone_n8n_skill"}
  3. Type de connexion : L'Assistant Tool se connecte à l'AI Agent via la connexion ai_tool — PAS main
  4. externalFileId : Définissez cette valeur sur l'expression URL du fichier afin que Pinecone la stocke comme référence pour les citations
  5. Identifiant : Utilisez le type d'identifiant pineconeApi pour les deux variantes de nœud
  6. Métadonnées de fichier à l'upload : Ajoutez des métadonnées clé-valeur via additionalFields.metadata.metadataValues — un tableau d'objets {"key": "...", "value": "..."}. L'externalFileId est automatiquement ajouté aux métadonnées ; ne l'incluez pas manuellement. Exemple :
    "additionalFields": {
      "metadata": {"metadataValues": [{"key": "department", "value": "legal"}]}
    }
  7. Filtrage de métadonnées sur listFiles : Utilisez additionalFields.metadataFilter.metadataValues (même tableau {key, value}) pour les filtres d'égalité simples, ou additionalFields.advancedMetadataFilter (une chaîne JSON) pour les opérateurs comme $or, $ne, $in. Ne définissez pas les deux à la fois. Exemple filtre simple :
    "additionalFields": {
      "metadataFilter": {"metadataValues": [{"key": "department", "value": "legal"}]}
    }
  8. Upload PDF multimodal : Définissez additionalFields.multimodalFile: true sur le nœud uploadFile lorsque le PDF contient des images ou des diagrammes qui doivent être indexés pour la récupération visuelle. Ceci est obligatoire pour que les images soient récupérables plus tard — ce n'est pas la valeur par défaut.

Génération du JSON de workflow pour le chemin Assistant

Construisez le workflow pour correspondre à ce que l'utilisateur décrit réellement — ses déclencheurs, modèles, sources de données et structure. Posez des questions sur tout ce qui est structurellement important et qu'il n'a pas mentionné. Recourez aux valeurs par défaut ci-dessous uniquement lorsque l'utilisateur n'a pas spécifié de valeur :

  • Nom de l'assistant : n8n-assistant (utilisez n8n-assistant-1, n8n-assistant-2, etc. pour plusieurs ; doit correspondre à un assistant existant dans la console Pinecone)
  • URLs de fichiers : exemples de PDFs des notes de version Pinecone
  • Modèle LLM : gpt-5-mini
  • Message système : prompt générique sur la récupération depuis l'assistant avec citations

Le JSON ci-dessous est une configuration de référence montrant les valeurs de paramètres correctes, les champs obligatoires et les types de connexion pour chaque nœud. Utilisez-le comme guide pour configurer les nœuds — pas comme un modèle à copier tel quel. Placeholders à remplacer :

  • [ASSISTANT_NAME] — nom de l'assistant
  • [ASSISTANT_HOST] — URL hôte de l'assistant depuis la console Pinecone (ex. https://your-assistant-host.pinecone.io)
  • [USER_FILE_URLS_ARRAY] — tableau JSON de chaînes URL de fichiers, ex. ["https://example.com/doc.pdf"]
  • [USER_MODEL] — nom du modèle LLM, ex. gpt-5-mini
  • [USER_TOPIC] — description courte de ce que l'assistant connaît, pour le message système
{
  "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}
}

Autres opérations Pinecone Assistant

Upload File vs Update File — choisir la bonne opération

Scénario Opération à utiliser
Le fichier est garanti nouveau (jamais ingéré auparavant) uploadFile
Le fichier peut déjà exister dans l'assistant (réingestion, actualisation programmée) updateFile

updateFile est idempotent : il trouve tous les fichiers correspondant à externalFileId, les supprime, puis charge la nouvelle version. Si aucun fichier avec cet ID n'existe, il fonctionne exactement comme uploadFile. Utilisez updateFile chaque fois qu'un workflow peut s'exécuter plus d'une fois sur les mêmes fichiers source.

Les paramètres de updateFile sont identiques à uploadFile : assistantData, externalFileId, inputDataFieldName et tous les additionalFields incluant metadata, multimodalFile et sourceTag.

{
  "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
}

List Files

Utilisez resource: "file", operation: "listFiles" pour récupérer les fichiers, optionnellement filtrés par métadonnées.

{
  "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
}

Pour les filtres complexes, utilisez advancedMetadataFilter (une chaîne JSON) au lieu de metadataFilter — jamais les deux :

"additionalFields": {
  "advancedMetadataFilter": "{\"department\": {\"$in\": [\"legal\", \"finance\"]}}"
}

Get Context Snippets

Utilisez resource: "contextSnippet", operation: "getContextSnippets" pour récupérer directement des morceaux de texte ou d'image pertinents — utile quand vous avez besoin du contexte récupéré brut sous forme de données de workflow plutôt que d'une réponse de chat.

{
  "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
}

Les mêmes options metadataFilter / advancedMetadataFilter fonctionnent sur getContextSnippets pour limiter la récupération aux fichiers correspondant à des métadonnées spécifiques. Le drapeau includeBinaryContent s'applique uniquement lorsque includeMultimodalContext est true.


Nœud Pinecone Vector Store — Meilleures pratiques et génération de workflow

Nom du paquet de nœud

@n8n/n8n-nodes-langchain.vectorStorePinecone

Conditions préalables

  • Créez un index Pinecone dans la console Pinecone à https://app.pinecone.io/organizations/-/projects/-/indexes avec le bon nom et les bonnes dimensions avant d'exécuter le workflow
  • Configurez un identifiant Pinecone dans n8n avec votre clé API
  • Configurez un identifiant OpenAI dans n8n

Architecture du workflow

Workflow en deux phases avec deux instances de nœud vectorStorePinecone séparées :

Phase 1 — Ingestion (exécution unique ou programmée) :

Manual Trigger → Set file URLs → Split Out → HTTP Request (download)
  → Pinecone Vector Store (insert mode)
       ↑ Default Data Loader ← Recursive Character Text Splitter
       ↑ Embeddings OpenAI

Phase 2 — Chat :

Chat Trigger → AI Agent ← Pinecone Vector Store (retrieve-as-tool mode)
                               ↑ Embeddings OpenAI (same model as insert)
                        ← OpenAI Chat Model

Règles de configuration clé

  1. Deux instances de nœud : Utilisez un vectorStorePinecone en mode insert pour l'ingestion et un séparé en mode retrieve-as-tool pour le chat
  2. Cohérence du modèle d'embedding : Le MÊME modèle d'embedding et les MÊMES dimensions DOIVENT être utilisés dans les nœuds insert et retrieve-as-tool — ils partagent un unique nœud Embeddings OpenAI via la connexion ai_embedding
  3. Nœuds compagnons requis pour le nœud insert :
    • @n8n/n8n-nodes-langchain.embeddingsOpenAi — définissez les dimensions pour correspondre à votre index (1536 pour text-embedding-3-small)
    • @n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter — se connecte au chargeur de données
    • @n8n/n8n-nodes-langchain.documentDefaultDataLoader — définissez dataType: binary et textSplittingMode: custom
  4. toolDescription : Écrivez une description claire et spécifique sur le nœud retrieve-as-tool — l'AI Agent l'utilise pour décider quand l'interroger
  5. topK : Utilisez 20 comme valeur par défaut ; augmentez pour une meilleure capture, diminuez pour réduire l'utilisation de tokens
  6. Métadonnées pour les citations : Dans le Default Data Loader, ajoutez external_file_url comme champ de métadonnées défini à ={{ $json.urls }} afin que l'AI Agent puisse citer les sources
  7. Identifiant : Utilisez le type d'identifiant pineconeApi

Conseils de chunking

  • 3 000 caractères / 500 chevauche : Bon défaut pour les longs documents (articles, rapports, documentation)
  • 500–1 000 caractères / 100–200 chevauche : Meilleur pour la récupération style Q&A ou le contenu court et dense
  • Référence : https://www.pinecone.io/learn/chunking-strategies/

Instructions de configuration d'index

Lors de la génération d'un workflow, dites toujours à l'utilisateur de :

  1. Aller à https://app.pinecone.io/organizations/-/projects/-/indexes et créer un index
  2. Définir le nom pour correspondre à la valeur pineconeIndex dans le workflow
  3. Sélectionner le modèle d'embedding correspondant au nœud Embeddings de n8n (text-embedding-3-small → 1536 dimensions)

Génération du JSON de workflow pour le chemin Vector Store

Construisez le workflow pour correspondre à ce que l'utilisateur décrit réellement — ses déclencheurs, modèle d'embedding, stratégie de chunking, sources de données et structure. Posez des questions sur tout ce qui est structurellement important et qu'il n'a pas mentionné. Recourez aux valeurs par défaut ci-dessous uniquement lorsque l'utilisateur n'a pas spécifié de valeur :

  • Nom d'index : n8n-index (utilisez n8n-index-1, n8n-index-2, etc. pour plusieurs ; doit correspondre à un index Pinecone existant)
  • URLs de fichiers : exemples de PDFs des notes de version Pinecone
  • Modèle LLM : gpt-5-mini
  • Modèle d'embedding : text-embedding-3-small (1536 dimensions)
  • Taille de chunk : 3 000 caractères / 500 chevauche
  • Message système / description d'outil : prompt générique sur la récupération depuis l'index avec citations

Le JSON ci-dessous est une configuration de référence montrant les valeurs de paramètres correctes, les champs obligatoires et les types de connexion pour chaque nœud. Utilisez-le comme guide pour configurer les nœuds — pas comme un modèle à copier tel quel. Placeholders à remplacer :

  • [INDEX_NAME] — nom d'index
  • [USER_FILE_URLS_ARRAY] — tableau JSON de chaînes URL de fichiers, ex. ["https://example.com/doc.pdf"]
  • [USER_MODEL] — nom du modèle LLM, ex. gpt-5-mini
  • [USER_TOPIC] — description courte des données, pour le message système de l'AI Agent
  • [USER_TOOL_DESCRIPTION] — description des données contenues dans le vector store, pour le nœud outil
{
  "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}
}

Conseils de débogage

Lorsqu'un utilisateur signale un workflow défaillant, demandez quel nœud est en défaut et quelle erreur il voit, puis référencez ces problèmes courants :

Erreur / Symptôme Cause Correction
« Assistant not found » assistantData.name ne correspond pas à un assistant existant Créez l'assistant dans la console Pinecone d'abord, puis appariez le nom exactement
« Invalid credentials » Clé API Pinecone non définie ou mauvais identifiant sur le nœud Resélectionnez l'identifiant pineconeApi sur chaque nœud Pinecone
« Dimension mismatch » Les dimensions du modèle d'embedding ne correspondent pas à l'index L'index et le nœud d'embeddings doivent utiliser les mêmes dimensions (ex. 1536 pour text-embedding-3-small)
L'outil n'est jamais appelé par l'agent toolDescription est vague Rendez la description spécifique : quelles données dans le magasin, quelles questions elle peut répondre
Aucun résultat renvoyé L'ingestion n'a pas exécuté, ou topK trop bas Exécutez la Phase 1 d'abord ; essayez d'augmenter topK à 20+
Nœud HTTP appelant l'API Pinecone Mauvais modèle Remplacez par @pinecone-database/n8n-nodes-pinecone-assistant.pineconeAssistant ou @n8n/n8n-nodes-langchain.vectorStorePinecone

Liste de contrôle d'examen des meilleures pratiques

Lors de l'examen d'un workflow existant :

  1. Pas de nœud HTTP appelant les endpoints Pinecone — remplacez tout par le nœud Pinecone approprié
  2. Vector Store : même nœud Embeddings connecté aux deux instances insert et retrieve-as-tool
  3. Assistant : assistantData inclut name ET host ; sourceTag est présent dans additionalFields
  4. toolDescription est spécifique et descriptif (pas générique comme « a vector store »)
  5. Métadonnées Vector Store : external_file_url stocké dans les métadonnées du Default Data Loader pour les citations source
  6. Métadonnées de fichier Assistant : fichiers uploadés avec des métadonnées clé-valeur significatives quand le filtrage sera nécessaire plus tard
  7. Filtre de métadonnées : listFiles et getContextSnippets utilisent un filtre de métadonnées (pas les deux champs de filtre à la fois) quand on limite à un sous-ensemble de fichiers
  8. Upload multimodal : multimodalFile: true est défini sur uploadFile quand les PDFs contiennent des images ou diagrammes — ceci est obligatoire pour indexer le contenu visuel et ce n'est PAS la valeur par défaut
  9. Récupération multimodale : includeMultimodalContext: true et includeBinaryContent: true sur getContextSnippets quand le workflow a besoin de morceaux d'image aux côtés du texte
  10. Taille de chunk appropriée au type de contenu (voir conseils de chunking ci-dessus)
  11. L'index existe avec les bonnes dimensions avant l'exécution du workflow

Skills similaires