N8N QDrant workflow expert
by @encryptshawn
Expertise in designing, building, and troubleshooting production-grade n8n workflows for Qdrant ingestion, retrieval, hybrid search, and RAG pipelines.
clawhub install n8n-qdrantπ About This Skill
n8n + Qdrant: Ingestion & RAG Pipeline Skill
Overview
This skill enables AI agents to design, build, and troubleshoot production-grade Qdrant ingestion and retrieval pipelines in n8n. It covers the full lifecycle: source data extraction β chunking β metadata enrichment β vector embedding β Qdrant upsert β retrieval (dense, sparse, hybrid) β RAG response generation.
Always read the supporting docs in /docs/ before building workflows:
docs/NODE-REFERENCE.md β Every Qdrant node, mode, and parameter explaineddocs/INGESTION-PIPELINE.md β Step-by-step ingestion architecturedocs/RAG-RETRIEVAL.md β Dense, sparse, and hybrid retrieval patternsdocs/CHUNKING-METADATA.md β Chunking strategies and metadata schema designdocs/examples/ β Annotated workflow JSON examplesTwo Node Systems to Know
n8n has two separate Qdrant integration systems β knowing which to use is critical:
1. Official Qdrant Node (n8n-nodes-qdrant)
n8n-nodes-qdrant (community node, install via n8n Settings β Community Nodes)Qdrant2. LangChain Vector Store Node (built-in)
Qdrant Vector Store (@n8n/n8n-nodes-langchain.vectorStoreQdrant)insert (ingest documents), retrieve (similarity search), retrieve-as-tool (AI agent tool)Rule of thumb: Use LangChain Vector Store for LangChain-native agent/RAG flows. Use the Official Qdrant Node for direct API control, hybrid search, payload operations, and production ingestion pipelines.
Quick Decision Matrix
| Goal | Use This Node | Mode/Operation |
|------|--------------|---------------|
| Ingest documents via LangChain chain | LangChain Vector Store | insert |
| AI Agent retrieves from Qdrant as tool | LangChain Vector Store | retrieve-as-tool |
| Run hybrid (dense+sparse) search | Official Qdrant Node | Search β Query Points |
| Create/manage collections | Official Qdrant Node | Collection β Create Collection |
| Upsert raw points with custom payloads | Official Qdrant Node | Point β Upsert Points |
| Delete points by filter (e.g. file_id) | Official Qdrant Node | Point β Delete Points |
| Scroll all points for audit/export | Official Qdrant Node | Point β Scroll Points |
| Batch ingest large datasets | Official Qdrant Node | Point β Batch Update Points |
Canonical Ingestion Pipeline Architecture
[Trigger]
β
βΌ
[Source Node] ββββββββββββββββββββββββββββββββββββββββββββββ
(Slack, Fireflies, Google Drive, HTTP, DB, etc.) β
β β
βΌ β
[Split in Batches] βββ Loop for large datasets β
β β
βΌ β
[Extract/Normalize] β
(Set node: build content string + raw metadata) β
β β
βΌ β
[AI: Extract Metadata] β
(Information Extractor or LLM Chain) β
Produces: themes, keywords, entities, summary, tags β
β β
βΌ β
[Text Splitter] β
(Token Splitter or Recursive Character Splitter) β
chunkSize: 512β2000 tokens, overlap: 10β15% β
β β
βΌ β
[Embeddings Node] β
(OpenAI text-embedding-3-large or similar) β
β β
βΌ β
[Qdrant Vector Store β insert mode] OR β
[Official Qdrant Node β Upsert Points] β
β β
βΌ β
[Wait Node] βββ Rate limiting / backpressure β
β β
ββββββββββββββββββββ back to Split in Batches ββββββββββββ
See docs/INGESTION-PIPELINE.md for full node-by-node configuration.
Canonical RAG Retrieval Architecture
[Chat Trigger / Webhook]
β
βΌ
[AI Agent Node]
β
βββ [LLM: Gemini / GPT-4o / Claude]
βββ [Memory: Window Buffer Memory]
βββ [Tool: Qdrant Vector Store β retrieve-as-tool]
β
βββ [Embeddings Node]
For hybrid search (dense + sparse), use the Official Qdrant Node β Query Points with a prefetch array combining dense and sparse queries + RRF fusion. See docs/RAG-RETRIEVAL.md.
Credentials Setup
Official Qdrant Node
qdrantApiURL (e.g. https://your-cluster.cloud.qdrant.io) + API KeyLangChain Vector Store Node
qdrantApi (same credential, shared)Qdrant Cloud Setup
1. Open https://cloud.qdrant.io β select cluster 2. Copy Endpoint β use as URL 3. Go to API Keys tab β copy keyLocal (Docker / AI Starter Kit)
http://qdrant:6333/QDRANT_API_KEY=your_key in docker-compose environmentNaming Conventions
Use consistent naming across workflows:
| Element | Convention | Example |
|---------|-----------|---------|
| Collection name | {org}-{source}-{content-type} | acme-slack-messages |
| Metadata key for source ID | source_id | "source_id": "C01234-1709123456" |
| Metadata key for document ID | doc_id | "doc_id": "file_abc123" |
| Metadata key for chunk index | chunk_index | "chunk_index": 3 |
| Metadata key for timestamp | created_at | ISO 8601 string |
| Metadata key for source type | source_type | "slack", "fireflies", "gdrive" |
| Metadata key for channel/folder | source_context | "#engineering" |
Critical Rules
1. Always set file_id or doc_id in metadata β enables targeted deletion without full collection wipe
2. Always use onError: continueRegularOutput on the Qdrant Vector Store node β prevents single-item failures from crashing the whole batch
3. Always use retryOnFail: true on the Qdrant node for production ingestion
4. Chunk before embedding β never embed full documents; always split first
5. Never store raw text in collection names or keys β normalize to lowercase slug format
6. Use Split in Batches with a Wait node for large datasets β prevents API rate limit errors and memory exhaustion
7. Run metadata extraction BEFORE the text splitter β extract from the full document, then attach metadata to each chunk
8. For delete operations, always add human-in-the-loop confirmation (Telegram sendAndWait, Slack approval, etc.)