This guide helps Qdrant users move existing vector search workloads to LambdaDB. Qdrant models searchable records as points made of anDocumentation Index
Fetch the complete documentation index at: https://docs.lambdadb.ai/llms.txt
Use this file to discover all available pages before exploring further.
id, one or more vectors, and an optional payload. LambdaDB models records as documents: each document is stored as JSON, while searchable fields are declared in the collection’s indexConfigs.
Migration checklist
- Inventory each Qdrant collection: vector names, dimensions, distance metrics, sparse vectors, multi-vectors, payload fields, and payload indexes.
- Design the LambdaDB collection: map each Qdrant vector to a LambdaDB
vectororsparseVectorfield, and map payload fields you search or sort on to LambdaDB index types. - Export Qdrant points with payloads and vectors.
- Transform Qdrant points into LambdaDB documents.
- Upsert documents into LambdaDB.
- Rewrite search, filter, and hybrid query calls.
- Validate result quality and latency with representative queries before switching production traffic.
Concept mapping
| Qdrant | LambdaDB | Migration note |
|---|---|---|
| Collection | Collection | Keep one LambdaDB collection per Qdrant collection unless you are also changing tenancy or isolation boundaries. |
| Point | Document | Put the Qdrant point ID in the LambdaDB document id field. |
| Vector | vector field | Use one LambdaDB vector field per unnamed or named dense vector. |
| Sparse vector | sparseVector field | Convert Qdrant indices and values arrays to a key-value object. |
| MultiVector | Model-specific fields or preprocessing | Qdrant multi-vectors, such as late-interaction/ColBERT matrices, require a workload-specific migration plan. They are not covered by the basic dense/sparse examples below. |
| Payload | Document fields | Store payload fields directly on the document or under a nested object. Index only fields you need to query or sort. |
| Payload index | indexConfigs field | Choose keyword, text, long, double, boolean, datetime, or object. |
query_points(..., using="...") | knn.field | Search the LambdaDB vector field that corresponds to the Qdrant named vector. |
limit | size and knn.k | Set both LambdaDB response size and nearest-neighbor count deliberately. |
with_payload | fields | LambdaDB returns document fields by default; use fields to include or exclude fields. |
with_vectors | includeVectors | Set includeVectors to true only when you need vector values in the response. |
| Qdrant filter clauses | bool or queryString | Map must, must_not, and should logic to LambdaDB boolean queries. |
| Qdrant RRF fusion | rrf hybrid query | Use LambdaDB rrf, mm, or l2 to combine dense, sparse, and lexical search. |
Step 1: Create a LambdaDB collection
Start from the Qdrant collection’s vector configuration and payload indexes. For example, after inventorying the Qdrant vector configuration and payload indexes, you might record this migration shape:Migration inventory
| Qdrant distance | LambdaDB similarity |
|---|---|
Cosine | cosine |
Dot | dot_product |
Euclid | euclidean |
Manhattan | No direct equivalent. Re-evaluate the embedding/search setup before migrating. |
LambdaDB stores the whole document even if a field is not listed in
indexConfigs. Only indexed fields are searchable or sortable.Step 2: Transform points into documents
For a Qdrant point with a single dense vector:Qdrant point
LambdaDB document
Qdrant point with named vectors
LambdaDB document
indices and values to an object whose keys are index strings. Qdrant sparse vectors must be named, so in a point they appear under a vector name such as "sparse".
Qdrant sparse vector
LambdaDB sparse vector
Step 3: Export and load data
Use Qdrant’s scroll API to page through points with both payload and vectors, then upsert transformed documents into LambdaDB.Python
Step 4: Rewrite vector search
A Qdrant query against a named vector:Python
knn query:
Python
Python
Step 5: Rewrite filters
Qdrant filters commonly usemust, must_not, and should clauses. In LambdaDB, use a bool query when the filter logic is larger than a single query string.
Qdrant filter
LambdaDB bool query
| Qdrant payload use | LambdaDB index type |
|---|---|
| Exact string match, tags, IDs, tenant IDs | keyword |
| Natural-language matching | text |
| Integer range or sorting | long |
| Floating-point range or sorting | double |
| Date/time range or sorting | datetime |
| Boolean flags | boolean |
| Nested JSON kept as a searchable object | object |
Step 6: Rewrite hybrid search
Qdrant hybrid queries often useprefetch plus RRF fusion across dense and sparse vectors.
Qdrant hybrid query
rrf:
LambdaDB hybrid query
LambdaDB lexical + vector hybrid query
Step 7: Validate before cutover
Run a side-by-side comparison before routing production traffic to LambdaDB:- Compare top-k overlap for representative dense-vector, sparse-vector, filter-heavy, and hybrid queries.
- Check fields returned by LambdaDB and remove large vectors from responses unless your application needs them.
- Verify document counts after asynchronous indexing completes.
- Test high-cardinality tenant or user filters if you used Qdrant for multitenancy.
- Re-tune hybrid boosts if you move from Qdrant RRF or DBSF to LambdaDB
rrf,mm, orl2.
Common gotchas
- IDs: LambdaDB document IDs are strings. Convert numeric Qdrant IDs with
str(point.id)if your application expects stable IDs. - Field names: Rename payload keys containing dots before upsert.
- Schema: Qdrant can store payload without deciding every searchable field up front. In LambdaDB, decide which fields need indexes before migration.
- Bulk writes: Regular upsert accepts request payloads up to 6 MB. Bulk upsert accepts up to 200 MB, but not for collections with managed embeddings.
- Sparse vectors: Qdrant sparse vectors use separate
indicesandvalues; LambdaDB uses object key-value pairs. - Multi-vectors: Qdrant multi-vectors store matrices for late-interaction models. This guide covers dense and sparse vectors; plan and validate multi-vector workloads separately.
- Consistency: LambdaDB is eventually consistent by default. Use
consistentReadfor read-after-write checks, but remember bulk upsert becomes visible only after indexing finishes.
Next steps
Create a collection
Define LambdaDB index configurations for your migrated data.
Bulk upsert data
Load larger migrated datasets through the bulk upsert workflow.
Vector query
Rewrite Qdrant vector search calls as LambdaDB kNN queries.
Hybrid query
Combine lexical, dense vector, and sparse vector search.