Use the LambdaDB Migration CLI to migrate Qdrant collections into LambdaDB. The CLI inventories your Qdrant collection, generates an editable LambdaDB mapping, creates the target LambdaDB collection when needed, streams points as LambdaDB documents, saves local checkpoints, and validates migrated records before cutover. 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.
What the CLI supports
| Qdrant data | LambdaDB target | Migration behavior |
|---|---|---|
| Collection | Collection | Keep one LambdaDB collection per Qdrant collection unless you are also changing tenancy or isolation boundaries. |
| Point ID | Document id | Numeric Qdrant IDs are converted to strings. UUID IDs remain the same string value. |
| Unnamed dense vector | vector field | The generated mapping uses dense as the default target field. |
| Named dense vector | vector field | Each Qdrant named vector maps to its own LambdaDB vector field. |
| Sparse vector | sparseVector field | Qdrant indices and values arrays are converted to a LambdaDB sparse object. |
| Payload | Document fields | Payload fields are flattened by default. Indexed payload fields become LambdaDB index configs. |
| Payload index | indexConfigs field | Supported types include keyword, text, long, double, boolean, datetime, and object. |
Step 1: Install the CLI
Install the latest release:Step 2: Set credentials
LambdaDB Cloud uses region-specific API base URLs. Use the base URL, project name, and project API key shown for your project in the LambdaDB Cloud console. Do not assume a global default URL or a fixed project name.
--qdrant.api-key.
Step 3: Generate inventory and mapping
Run the inventory command against the Qdrant gRPC endpoint:Generated mappings set
target.createCollection: true by default. With that setting, the migration creates the LambdaDB collection if it is missing and waits until it is ready before writing documents.Step 4: Run a dry run
Use a dry run to validate the mapping and inspect the planned migration without writing documents:Step 5: Run the migration
Run the migration with validation enabled:.lambdadb-migration/checkpoints by default. If the command is interrupted, rerun the same command to resume. Use --migration.restart to ignore an existing checkpoint and start from the beginning.
Use --migration.create-collection=false when the target LambdaDB collection already exists and the migration should not create it.
Step 6: Review validation
--migration.validate checks the accepted record count, fetches a sample of migrated documents from LambdaDB using strongly consistent reads, and compares sampled fields.
--migration.validation-report writes the validation result as JSON. The report includes source count, accepted records, LambdaDB numDocs, sampled IDs, compared sample count, query overlap results, and validation errors.
numDocs is reported for visibility, but sample fetch and field comparison are the stronger validation checks for read-after-write confirmation.--migration.query-overlap reports dense-vector overlap without failing the migration. Set --migration.query-overlap-min-ratio above 0 to require a minimum average overlap.
Mapping details
Use this distance mapping when creating LambdaDB vector fields:| Qdrant distance | LambdaDB similarity |
|---|---|
Cosine | cosine |
Dot | dot_product |
Euclid | euclidean |
Manhattan | No direct equivalent. Re-evaluate the embedding/search setup before migrating. |
Qdrant point
LambdaDB document
Qdrant point with named vectors
LambdaDB document
indices and values to an object whose keys are index strings:
Qdrant sparse vector
LambdaDB sparse vector
Reduce application changes with SDK compatibility
After data is in LambdaDB, Python and TypeScript applications can use LambdaDB’s Qdrant compatibility clients as a bridge before rewriting every query to native LambdaDB APIs. The compatibility clients support common Qdrant-style calls such as collection creation, dense-vector upsert, dense-vector query, retrieve, delete, filtered scroll, and unfiltered count. They are not full Qdrant client replacements, and unsupported behavior raises an explicit error where possible.Qdrant SDK compatibility
Use Python
lambdadb.compat.qdrant or TypeScript @functional-systems/lambdadb/compat/qdrant to reduce application code changes.Rewrite vector search
A Qdrant query against a named vector:Python
knn query:
Python
Python
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 |
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
Common gotchas
- IDs: LambdaDB document IDs are strings. Numeric Qdrant IDs are converted to strings during migration.
- Field names: LambdaDB field names cannot contain dots. The generated mapping renames dotted Qdrant payload keys, such as
metadata.urltometadata_url. - 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. Plan and validate these workloads separately.
- Consistency: LambdaDB uses eventual reads by default, but supports
consistentReadfor strong read-after-write checks. The CLI validation uses strongly consistent sample fetches. For bulk upsert, allow time for documents to become visible after indexing completes.
Next steps
Migration CLI
Review the shared LambdaDB Migration CLI workflow.
Qdrant SDK compatibility
Keep common Qdrant-style Python and TypeScript client calls while migrating application code.
Create a collection
Define LambdaDB index configurations for your migrated data.
Bulk upsert data
Load larger migrated datasets through the bulk upsert workflow.
Hybrid query
Combine lexical, dense vector, and sparse vector search.