Guide

Come Usare i Vector Database (Pinecone, Chroma) con i Nodi AI di n8n

I tuoi contenuti sono ovunque: PDF, Drive, wiki, blog. Come trasformarli in risposte utili e verificabili? Un vector database in n8n è la chiave: archivia embedding semantici, esegue similarity search e rifornisce l’LLM di contesto affidabile. In questa guida pratica colleghi Pinecone e Chroma ai workflow AI di n8n con due approcci: prototipazione veloce con il Simple Vector Store node e messa in produzione via backend esterni (Pinecone gestito, ChromaDB self‑hosted). Costruiremo una pipeline RAG in automazioni n8n completa con text splitter e document loader in n8n, embeddings e retriever, e vedremo come orchestrare il tutto con un LLM, ottimizzando top‑k e qualità del contesto. Include nodi e parametri esatti dove disponibili, configurazioni ripetibili, consigli su dimensioni embedding e configurazione indice, gestione credenziali e variabili d’ambiente in n8n e best practice su deduplica, versioning documentale e performance.

📚 Nuovo a n8n? Parti dalla guida completa: cos’è n8n e come funziona.

[IMG: schema pipeline RAG: Loader → Splitter → Embeddings → Vector Store → Retriever → LLM → Risposta con citazioni]

Scelta dello stack: gestito (Pinecone) vs self‑hosted (Chroma)

Prima di tutto, scegli l’architettura.

  • Gestito (Pinecone per ricerca semantica in n8n)
  • Pro: scalabilità immediata, replica/HA gestite, feature mature (namespaces e metadata in Pinecone, filtri ricchi), SDK/REST pronti, latenza prevedibile in region.
  • Contro: costo ricorrente, lock‑in, gestione del throughput (batch upsert e gestione throughput per tenere i costi sotto controllo).
  • Self‑hosted (ChromaDB self‑hosted con workflow n8n)
  • Pro: controllo totale su dati e costi, persistenza locale, privacy; adatto se sei già su Docker/K8s.
  • Contro: manutenzione, tuning (persistenza, collection e persistenza in Chroma, backup), scaling e rete (n8n → DB).

Criteri pratici

  • Volumi/latency: Pinecone brilla oltre decine di milioni di vettori; Chroma è ottimo fino a milioni se ben dimensionato (storage veloce).
  • Compliance e multi‑tenant: Pinecone supporta namespaces e filtri per separare tenant/criteri; con Chroma replica naming e metadati per isolare i dataset.
  • Budget e time‑to‑value: Pinecone accelera la messa in produzione; Chroma vince sul controllo costi nel lungo termine.

Insight: inizia con un prototipo in‑memory (Simple Vector Store node) per convalidare chunking/top‑k/quality, poi promuovi a Pinecone/Chroma mantenendo identiche le scelte di embedding e i metadati per ridurre attriti di migrazione.

[IMG: matrice decisionale: Pinecone vs Chroma per volumi, costi, compliance]

Componenti RAG in n8n: loader, splitter, embeddings, vector store, retriever, LLM

Una pipeline RAG in automazioni n8n si compone di:

  • Caricamento sorgenti
  • Document Loader (es. “Default Data Loader” in n8n) per acquisire testo da PDF/web/Drive e normalizzare metadata (titolo, URL, data).
  • Splitter
  • Text splitter e document loader in n8n per chunking (chunk size/overlap). Valori tipici: 800–1200 caratteri, overlap 100–200.
  • Embeddings
  • Embeddings in batch con il nodo n8n-nodes-langchain.embeddingsOpenAi:
    • type: n8n-nodes-langchain.embeddingsOpenAi
    • parameters.model: “text-embedding-ada-002”
    • parameters.text: “={{ $json[\”content\”] }}”
    • credentials.openAiApi: { name: “OpenAI API” }
  • Vector store
  • Per prototipi: Simple Vector Store node (in‑memory).
  • Per produzione: backend esterni (Pinecone o Chroma).
  • Retriever
  • Similarity search con metadati e filtri; top‑k retrieval e (opzionale) filtri per namespace/metadata.
  • LLM
  • Prompting e catene QA con LLM; costruzione del contesto con citazioni.

Pattern consigliato (due workflow separati)

  • Workflow A (Indicizzazione): Loader → Splitter → Embeddings → Vector Store (Insert).
  • Workflow B (Query): Prompt → Retriever (Get/Query) → LLM con contesto → Risposta + citazioni.

[IMG: due workflow separati: “Load Data” e “Retriever” collegati allo stesso vector store]

Prototipo veloce con Simple Vector Store node (in‑memory)

Per validare rapidamente chunking, embeddings e top‑k:

  • Simple Vector Store node
  • Operation Mode:
    • Get Many
    • Insert Documents
    • Retrieve Documents (As Vector Store for Chain/Tool)
    • Retrieve Documents (As Tool for AI Agent)
  • Memoria e TTL (self‑host default: -1; in n8n Cloud preset):
    • N8NVECTORSTOREMAXMEMORY (MB complessivi)
    • N8NVECTORSTORETTLHOURS (rimozione store inattivi)

Inserimento

  1. Default Data Loader → chunk

  2. n8n-nodes-langchain.embeddingsOpenAi → vettori

  3. Simple Vector Store node → Insert Documents:

  • Seleziona embedding model coerente con quello usato in query (stesso modello).
  • Inserisci documento + metadati (es. source, url, section).

Query (Get Many)

  • Prompt: la domanda dell’utente
  • Limit: top‑k (es. 5–10)
  • Include Metadata: on per citazioni

Uso con Agent

  • Retrieve Documents (As Tool for AI Agent) per collegarlo direttamente a un agente come “tool”.
  • Retrieve Documents (As Vector Store for Chain/Tool) per chain QA.

Limiti

  • Non persistente (in‑app memory); ottimo per prototipi, non per produzione multi‑utente.
  • Le chiavi sono visibili a livello di istanza: evitare dati sensibili.

[IMG: canvas con Default Data Loader → EmbeddingsOpenAi → Simple Vector Store (Insert) → OK]

Pinecone in n8n: schema, upsert in batch, query con filtri

Per Pinecone per ricerca semantica in n8n, adotta un backend gestito e integra via HTTP Request o connettori generici del pattern “Vector Store + Retriever”.

Concetti chiave

  • Dimensioni embedding e configurazione indice: l’indice Pinecone deve avere dimensione coerente con il tuo modello (es. 1536 per text-embedding-ada-002).
  • Namespaces e metadata in Pinecone: usa namespaces per multitenancy/segmentazione (es. clienteA, clienteB) e metadata per filtri (es. {type: “doc”, lang: “it”}).
  • Batch upsert e gestione throughput: upsert in batch (100–500 vettori per chiamata) per sfruttare al meglio la finestra di rate; rinforza retry/backoff.

Inserimento (pattern)

  1. Split e embedding con n8n-nodes-langchain.embeddingsOpenAi.

  2. Trasforma i chunk in record { id, values, metadata }.

  3. HTTP Request verso l’endpoint Upsert del tuo index-host Pinecone:

  • Body: { vectors: [{id, values, metadata}, …], namespace: “my-namespace” }
  • Header: Authorization: Api-Key
  1. Conserva id/namespace per audit e aggiornamenti incrementali (deduplica su id).

Query (pattern)

  • HTTP Request verso /query con:
  • topK: numero risultati
  • vector (embedding della query) oppure id (query by id)
  • includeMetadata: true per citazioni
  • namespace: se usi multitenancy
  • filter: es. { “lang”: { “$eq”: “it” } }

Esempio (pseudo‑JSON per query)

{
  "topK": 5,
  "vector": "={{ $json.embedding }}",
  "includeMetadata": true,
  "namespace": "docs",
  "filter": { "type": { "$eq": "guide" } }
}

Consigli

  • Consistenza: usa lo stesso embedding model per insert e query.
  • Versioning: mantieni un alias “current” per l’indice e pubblica nuove versioni “v2” → switch atomico dell’alias in produzione.
  • Errori comuni: dimension mismatch (controlla la dimensione), index non pronto (attendi stato ready), rate limit (retry/backoff e batch tuning).

[IMG: canvas: Loader → EmbeddingsOpenAi → HTTP Request (Upsert Pinecone) → Done; Query: Embedding prompt → HTTP Request (Query) → LLM]

Chroma self‑hosted: collection, persistenza, query semantica

ChromaDB self‑hosted con workflow n8n è ideale quando vuoi controllo pieno (Docker) e costi contenuti.

Setup

  • Avvia Chroma Server in Docker con persistenza (volume).
  • Crea una collection (es. “docs-it”) per i tuoi documenti.
  • Genera embeddings in n8n e inviali alla collection.

Inserimento (pattern)

  1. Default Data Loader → chunk

  2. n8n-nodes-langchain.embeddingsOpenAi → vettori

  3. HTTP Request (POST) verso l’API di Chroma:

  • Crea collection (se non esiste).
  • Aggiungi documenti: ids[], embeddings[][], metadatas[], documents[].

Query (pattern)

  • HTTP Request (POST) per “query” con:
  • queryembeddings[][] oppure querytexts[]
  • n_results (top‑k)
  • where (filtri sui metadata)
  • Ricevi ids, distances/similarities, metadatas, documents.

Buone pratiche

  • collection e persistenza in Chroma: mappa collection a business domain (es. docs, faq, blog). Mantieni persistenza su volume veloce.
  • Aggiornamenti incrementali: deduplica per id; conserva hash del contenuto per evitare reinserimenti.
  • Sicurezza: esponi Chroma dietro rete privata/VPN; limita l’accesso dalla rete dove gira n8n.

[IMG: docker-compose Chroma + n8n; flusso Insert con batch di 200 chunk]

Retriever e catena QA: costruire il contesto giusto e prompt “grounded”

Una volta che Pinecone/Chroma è popolato:

  • Retriever e embeddings in workflow AI
  • Per un agente, aggiungi il vector store come tool “Retrieve Documents (As Tool for AI Agent)” oppure usa “Retrieve Documents (As Vector Store for Chain/Tool)” in una chain QA con LLM.
  • Imposta Limit (top‑k) e Include Metadata per citazioni.
  • Prompting e catene QA con LLM
  • Costruisci un prompt che impone: “Usa SOLO i passaggi forniti; se mancano info, rispondi ‘non trovato’”.
  • Formatta ogni chunk con fonte (title, url) per citazioni chiare.
  • Reranking dei risultati con catena QA
  • Se top‑k è alto o rumoroso, applica un secondo stadio di reranking (cross‑encoder) o un filtro sul punteggio.
  • Riduci top‑k quando l’uso token diventa eccessivo.
  • Ottimizzazione top‑k e qualità del contesto
  • Misura precision/recall su un set di domande di validazione.
  • Tieni chunk più piccoli per domande specifiche; chunk più grandi per overview.

[IMG: catena: Prompt → Retriever (k=8) → Rerank (k=4) → LLM → Risposta con 3 citazioni]

Pipeline completa: Indexing + Query, costi e performance tuning

Indexing (cron) — passi

  1. Caricamento sorgenti (Default Data Loader)

  2. Normalizzazione metadati (Code)

  3. Chunking (Default Data Loader)

  4. Embeddings (n8n-nodes-langchain.embeddingsOpenAi)

  5. Upsert (Simple Vector Store o HTTP → Pinecone/Chroma)

  6. Log di versioning (id/namespace/collection, hash contenuto)

Query (sincrona) — passi

  1. Prompt utente

  2. Embedding prompt (stesso modello)

  3. Similarity search (Get Many / Retrieve Documents)

  4. Prompting LLM con citazioni

  5. Risposta + logging (per audit/eval)

Performance tuning

  • Chunking: 800–1200 + overlap 100–200 (testa sui tuoi contenuti).
  • Batch upsert e gestione throughput: 100–500 vettori; retry/backoff su rate limit.
  • Parallelismo: parallelo moderato su insert (limita per non saturare l’engine).
  • Caching: memorizza risultati di query frequenti (se non sensibili al tempo).
  • Errori comuni: dimension mismatch, index non pronto, duplicati (deduplica su id).

[IMG: dashboard con latenza p95, token spesi, % risposte con citazioni, recall@k]

Sicurezza, multi‑tenant e versioning documentale

  • Gestione credenziali e variabili d’ambiente in n8n
  • Tieni le API key (OpenAI/Pinecone) in credenziali nominate; richiama in nodi via reference e variabili d’ambiente.
  • Sicurezza e multi‑tenant
  • Pinecone: namespaces per isolamento; filtri sui metadata; auditing su query/upsert.
  • Chroma: collezioni per tenant e policy di rete per l’accesso.
  • Versioning documentale e aggiornamenti incrementali
  • Conserva un hash per ogni chunk; aggiorna solo se cambiato.
  • Mantieni alias per passare da indice “v1” a “v2” senza downtime (Pinecone) o da collectionold a collectionnew (Chroma), poi ruota.

[IMG: tabella “Tenant → Namespace/Collection, Policy di rete, Audit”]

Integrare nel tuo chatbot/agent di n8n

  • Come tool per agenti AI con tool retriever in n8n
  • Collega il vector store come tool “Retrieve Documents (As Tool for AI Agent)” con descrizione chiara di quando usarlo.
  • Usa lo stesso embedding model configurato in fase di insert.
  • Catena QA diretta
  • “Retrieve Documents (As Vector Store for Chain/Tool)” → LLM → Risposta.
  • KPI di qualità e costo
  • Misura qualità (valutazioni umane, precision/recall), costo/token, latenza e % risposte con citazioni.
  • Riduci top‑k, applica reranking e ottimizza prompt per abbattere token.

[IMG: canvas Chat → Retriever Tool → LLM → Risposta + citazioni]

Quick Takeaways

  • Avvia prototipi con il Simple Vector Store node (Operation Mode: Insert/Get/Retrieve) e migra poi a Pinecone o Chroma.
  • Mantieni coerenza tra dimensioni embedding e indice; usa lo stesso modello per insert e query.
  • In Pinecone, sfrutta namespaces e metadata; in Chroma, progetta collection e persistenza su volumi rapidi.
  • Upsert in batch con retry/backoff; in query, imposta top‑k e filtri per migliorare qualità e costi.
  • Usa “Retrieve Documents (As Tool for AI Agent)” o chain QA per integrare il retriever nel chatbot.
  • Versiona gli indici/collezioni e introduci alias per switch a caldo senza downtime.

Conclusione

Portare un vector database in n8n trasforma un LLM generico in un assistente “grounded” sulle tue fonti: la pipeline RAG in automazioni n8n unisce loader/splitter, embeddings e un archivio persistente per conseguire risposte accurate, con citazioni e controllo dei costi. Con il Simple Vector Store node puoi validare chunking, top‑k e prompting; poi passa in produzione con Pinecone (gestito, namespaces e filtri maturi) o ChromaDB self‑hosted (controllo e privacy). Mantieni coerenza tra embedding e indice, deduplica con hash, usa batch upsert e monitora rate limit. Integra il retriever come tool per agenti o chain QA e misura costantemente qualità e latenza. Se sei un marketer che vuole imparare ad usare n8n per migliorare la produttività, inizia con un MVP su una singola knowledge base (FAQ o blog), aggiungi citazioni e KPI, quindi scala a più sorgenti: avrai un assistente affidabile che riduce tempi di ricerca e migliora la qualità delle risposte ai clienti.

FAQ

  • Posso iniziare senza un database esterno?
  • Sì, con il Simple Vector Store node (in‑memory). Usa Operation Mode “Insert Documents” per caricare i chunk e “Get Many” o “Retrieve Documents” per le query. Per produzione, migra a Pinecone/Chroma.
  • Come garantisco coerenza tra embeddings e indice?
  • Usa lo stesso modello (es. n8n-nodes-langchain.embeddingsOpenAi con “text-embedding-ada-002”) per l’inserimento e la query. Verifica la dimensione dell’indice (1536/3072, ecc.) e allinea il tuo vector store.
  • Come strutturo metadati e filtri?
  • Aggiungi metadati utili (source, url, lang, type). In Pinecone usa filter su query; in Chroma filtra con where. I metadati servono anche per citazioni e audit.
  • Qual è un buon valore di top‑k?
  • Inizia con 5–10. Se le risposte contengono “rumore”, applica reranking o riduci k; se sono troppo generiche, aumenta k o ottimizza chunking.
  • Come collego il retriever a un agente in n8n?
  • Usa “Retrieve Documents (As Tool for AI Agent)” e scegli lo stesso embedding model della fase di insert. Imposta Limit e Include Metadata per restituire fonti al modello.

Hai dubbi o vuoi condividere il tuo stack (Pinecone o Chroma) con n8n? Racconta nei commenti il tuo caso d’uso e condividi l’articolo: quale knowledge base porteresti per prima dentro il tuo chatbot per avere impatto in meno di 2 settimane?

Articoli correlati

Vuoi automazioni AI su misura per la tua azienda?
Scopri la consulenza →

Partiamo da un processo che oggi vi costa ore

Su WhatsApp risponde una persona, di solito in giornata. Se preferisci scrivere con calma, c’è il modulo qui sotto.

Scrivici su WhatsApp

Raccontaci cosa vuoi automatizzare

Ti rispondiamo noi, di solito in giornata.

Raccontaci cosa vi fa perdere tempo

Due righe bastano. Vi diciamo se si automatizza, come, e quanto costa. Se non conviene, lo diciamo.