id, dense values and/or sparse_values, and optional metadata. Records live inside namespaces. LambdaDB stores each migrated record as a document: the Pinecone ID becomes the LambdaDB document id, metadata becomes document fields, and vector values become LambdaDB vector or sparseVector fields.
What the CLI supports
Pinecone’s newer document-schema indexes can mix
dense_vector, sparse_vector, full-text string, and metadata fields. The current LambdaDB Migration CLI path is designed around Pinecone Serverless vector records that can be listed and fetched. Review document-schema and full-text workloads before using the default migration path.Pinecone’s current API reference is versioned as
2026-04. If you call Pinecone REST APIs directly during a custom migration, set the X-Pinecone-Api-Version header explicitly. The LambdaDB Migration CLI uses Pinecone’s official SDK and does not require you to pass this header.Step 1: Install the CLI
Follow Install the Migration CLI to install stablev0.1.8 using Homebrew or the standalone installer.
Check the Pinecone command:
Step 2: Set credentials
LambdaDB Cloud uses region-specific API base URLs. Use your project’s base URL and project name, together with a project API key created in its API Keys tab. Project creation does not automatically issue a key; save the full value when you create it, because it is shown only once. See API key management. Do not assume a global default URL or a fixed project name.
--pinecone.host.
Step 3: Generate inventory and mapping
Run the inventory command against a Pinecone Serverless index:--pinecone.list-prefix when you only want to migrate records whose IDs start with a specific prefix:
- Add
payload.indexConfigsfor metadata fields that must be searchable or sortable in LambdaDB. - Check dense vector dimensions and similarity.
- Check normalized dotted metadata fields.
- Decide whether one Pinecone namespace should become one LambdaDB collection, or whether you should run multiple scoped migrations.
Generated mappings set
target.createCollection: true by default. With that setting, the migration creates the LambdaDB collection if it is missing, then begins writing documents. Transient write failures use the CLI’s retry policy; no collection-status polling is performed.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.
Completed runs skip re-reading and uploading documents on rerun. To migrate new source data, use --migration.restart. See checkpoint and validation behavior, including locally saved validation samples.
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.
For dense or sparse-vector migrations, add query overlap checks:
--migration.query-overlap reports vector overlap without failing the migration. Set --migration.query-overlap-min-ratio above 0 to require a minimum average overlap.
Mapping details
The Migration CLI generates this default metric mapping for dense vector fields:
For
dotproduct, verify that both stored vectors and query vectors have unit length before using the generated dot_product setting. If vector magnitudes contribute to relevance, set similarity: max_inner_product for that dense vector in the generated mapping file before creating the target collection. The CLI does not infer this choice from the source metric name. See dense-vector similarity requirements, and validate ranking and score thresholds after migration. This distinction does not apply to sparse-vector indexes.
For a Pinecone dense record:
Pinecone record
LambdaDB document
Pinecone sparse values
LambdaDB document
Rewrite vector search
A Pinecone dense-vector query:Python
knn query:
Python
Python
Rewrite sparse and hybrid search
A Pinecone sparse-vector query:Python
Python
LambdaDB dense + sparse hybrid query
rrf when you want rank fusion without explicit boosts, or mm/l2 when you want weighted score fusion.
For automatic score calibration on retained candidates, use Bayesian fusion. To adapt the example, replace mm with bayesian, remove both boost fields, and place the expression under the request body’s query. Without reranking, include top-level size and candidateSize with 1 <= size <= candidateSize <= 100; with reranking, omit top-level candidateSize and use rerank.candidateSize. Keep exactly two subqueries; knn.k remains independent. Evaluate ranking on your workload because this changes the fusion behavior.
Rewrite filters
Pinecone metadata filters use operators such as$eq, $gte, $in, $and, and $or. In LambdaDB, map simple exact and range filters to queryString, and use bool when you need multiple clauses.
Pinecone metadata filter
LambdaDB bool query
Common gotchas
- Serverless only: Pinecone’s
listendpoint is supported only for Serverless indexes. The CLI depends on vector listing, then fetches listed records by ID. - Namespaces: Run one migration per namespace. If the namespace itself matters in LambdaDB, use separate target collections or add namespace metadata in Pinecone before migration.
- Metadata indexes: Pinecone metadata index settings are not introspected. Add LambdaDB
payload.indexConfigsmanually for fields used in filters or sorting. - Field names: LambdaDB field names cannot contain dots. Dotted Pinecone metadata keys are normalized during migration, such as
metadata.urltometadata_url. - Integrated embeddings: Pinecone hosted model configuration is not migrated. The CLI migrates stored vector values. Use LambdaDB native embeddings when you want LambdaDB to generate embeddings from source text after migration.
- Hybrid shape: Pinecone supports multiple hybrid patterns. Validate whether your workload uses a single dense index with
sparse_values, separate dense and sparse indexes, or a document-schema index before choosing the target LambdaDB schema. - Bulk writes: Regular upsert accepts request payloads up to 6 MB. Bulk upsert accepts up to 200 MB, but not for collections with native embeddings.
- Consistency: Pinecone is eventually consistent for freshly written data. LambdaDB uses eventual reads by default, but supports
consistentReadfor strong read-after-write checks. The CLI validation uses strongly consistent sample fetches; use query overlap checks before cutover.
Next steps
Migration CLI
Review the shared LambdaDB Migration CLI workflow.
Create a collection
Define LambdaDB index configurations for your migrated data.
Sparse vector query
Rewrite Pinecone sparse-vector searches as LambdaDB sparse vector queries.
Hybrid query
Combine lexical, dense vector, and sparse vector search.