Qdrant
1. Overview
The Qdrant component (qdrant) connects the flow to a Qdrant vector database, used to store and search embeddings (numeric vectors generated from text, images, etc.). It's the piece that stores and queries vectors generated, for example, by the Embedding component.
Use it when the flow needs to write vectors for semantic search (RAG, recommendation, similarity) or query already stored vectors. Works only as an output action.
2. Prerequisites
- An accessible Qdrant server (host and gRPC port).
- An already created collection (or the flow itself can create it with the
CREATE_COLLECTIONoperation).
3. Authentication and Connection
| Field | Required | Type | Description | Example |
|---|---|---|---|---|
host | Yes | Text | Qdrant server address. | "qdrant.example.com" |
port | Yes | Number | Qdrant server gRPC port. | 6334 |
apiKey | No | Text | Qdrant API key, if required by the server. | An API key |
useTls | No | Text ("true"/"false") | Enables an encrypted connection. Default value: "false". | "true" |
4. Configuration / Supported Operations
| Field | Required | Type | Description | Example |
|---|---|---|---|---|
operation | Yes | Text | One of: CREATE_COLLECTION, DELETE_COLLECTION, LIST_COLLECTIONS, GET_COLLECTION, UPSERT, UPDATE_PAYLOAD, DELETE_POINTS, SEARCH, SCROLL, QUERY, GET_POINT. | "UPSERT" |
collectionName | Yes, except in LIST_COLLECTIONS | Text | Collection name in Qdrant. | "documents" |
CREATE_COLLECTION
| Field | Required | Type | Description |
|---|---|---|---|
vectorSize | Yes, if vectorsConfig isn't used | Number | Dimension of the vectors stored in the collection. |
distance | No | Text | Distance metric. Default value: "Cosine". |
vectorsConfig | No | Text (JSON) | Advanced configuration for multiple named vectors in the same collection. |
UPSERT — write/update a point (vector + data)
| Field | Required | Type | Description |
|---|---|---|---|
pointId | Yes | Text (UUID) | Unique point identifier. |
denseVector | One of the three | Text (JSON, number list) | The point's numeric vector. |
sparseVector | One of the three | Text (JSON) | Sparse vector (indices + values). |
namedVectors | One of the three | Text (JSON) | Map of multiple named vectors. |
payload | No | Text (JSON) | Additional data associated with the point (e.g., the original text, metadata). |
SEARCH — find points similar to a vector
| Field | Required | Type | Description |
|---|---|---|---|
vector | Yes, if searchRequest isn't used | Text (JSON, number list) | Reference vector for the search. |
limit | No | Number | Maximum number of results. Default value: 10. |
filter | No | Text (JSON) | Additional filter on the points' metadata. |
Other operations
DELETE_COLLECTION,GET_COLLECTION: onlycollectionName.UPDATE_PAYLOAD:pointId(required),payload(required).DELETE_POINTS,GET_POINT:pointId(required).SCROLL:limit(optional),filter(optional),offset(optional).QUERY:queryRequest(required, JSON with advanced query rules).
5. Practical Examples
Simple example: write a document's embedding into the collection, along with the original text.
Input (embedding generated by a previous step, with the Embedding component):
{
"documentId": "doc-123",
"embedding": [0.012, -0.045, 0.078],
"originalText": "Installation manual for product X"
}
Component configuration:
{
"componentName": "qdrant",
"configurations": {
"host": "qdrant.example.com",
"port": "6334",
"apiKey": "{$.secrets.qdrantApiKey}",
"operation": "UPSERT",
"collectionName": "documents",
"pointId": "{$.body.documentId}",
"denseVector": "{$.body.embedding}",
"payload": "{\"text\": \"{$.body.originalText}\"}"
}
}
Response:
{
"status": "completed",
"pointId": "doc-123"
}
Advanced example: find the 5 documents most similar to a query vector.
Component configuration:
{
"componentName": "qdrant",
"configurations": {
"host": "qdrant.example.com",
"port": "6334",
"apiKey": "{$.secrets.qdrantApiKey}",
"operation": "SEARCH",
"collectionName": "documents",
"vector": "{$.body.queryEmbedding}",
"limit": "5"
}
}
Response:
{
"results": [
{ "id": "doc-123", "score": 0.94, "payload": { "text": "Installation manual for product X" } },
{ "id": "doc-456", "score": 0.87, "payload": { "text": "Quick guide for product X" } }
],
"count": 2
}
6. Common Errors and Troubleshooting
| Error / Symptom | Likely Cause | How to Fix |
|---|---|---|
| "host is required" / "port is required" / "operation is required" | Basic connection or operation fields weren't filled in. | Fill in host, port, and operation. |
| "collectionName is required for [operation]" | The collectionName field wasn't filled in for an operation that requires it. | Fill in collectionName with the collection's name. |
| "vectorSize or vectorsConfig is required for CREATE_COLLECTION" | Neither vector-configuration field was provided when creating the collection. | Provide vectorSize (simple usage) or vectorsConfig (multiple vectors). |
| "At least one vector is required: 'denseVector', 'sparseVector', or 'namedVectors'" | The UPSERT operation was used without any vector. | Fill in at least one of the three vector fields. |
| "vector or searchRequest is required for SEARCH" | The SEARCH operation was used without a reference vector. | Fill in vector (simple usage) or searchRequest (advanced search). |
| "Point not found: [id]" | The queried point doesn't exist in the collection. | Confirm pointId is correct and that the point has already been written. |
| "Failed to parse ... JSON: ..." | Some JSON field (vector, filter, payload) is malformed. | Review the JSON syntax of the field indicated in the error. |