Install
openclaw skills install n8n-qdrantExpertise in designing, building, and troubleshooting production-grade n8n workflows for Qdrant ingestion, retrieval, hybrid search, and RAG pipelines.
openclaw skills install n8n-qdrantThis 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 examplesn8n has two separate Qdrant integration systems — knowing which to use is critical:
n8n-nodes-qdrant)n8n-nodes-qdrant (community node, install via n8n Settings → Community Nodes)QdrantQdrant 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.
| 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 |
[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.
[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.
qdrantApiURL (e.g. https://your-cluster.cloud.qdrant.io) + API KeyqdrantApi (same credential, shared)http://qdrant:6333/QDRANT_API_KEY=your_key in docker-compose environmentUse 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" |
file_id or doc_id in metadata — enables targeted deletion without full collection wipeonError: continueRegularOutput on the Qdrant Vector Store node — prevents single-item failures from crashing the whole batchretryOnFail: true on the Qdrant node for production ingestionSplit in Batches with a Wait node for large datasets — prevents API rate limit errors and memory exhaustion