
Description
Guides building on Qdrant Edge, the embedded in-process shard. Use when someone asks 'how to sync Edge with the server', 'keep a local shard in sync with Qdrant Cloud', 'BM25 or keyword search on Edge', 'hybrid search on Edge', 'embeddings on device', 'Edge snapshots', 'apply a partial snapshot', 'why is my Edge search empty after inserts', or is writing custom sync, BM25, or fusion code against qdrant-edge. Also use when deciding what Edge ships built-in versus what you must implement.
SKILL.md
Building on Qdrant Edge
Edge is the Qdrant engine embedded in your process (Python or Rust), not a thin local vector store to wrap. The failure mode is rebuilding what the shard already ships: keyword scoring, snapshot apply, faceting, counting. Before writing any of that, check the shard API. Two things Edge does NOT give you are a one-call cloud sync and query-time fusion, so knowing which is which keeps you from both reinventing built-ins and expecting capabilities Edge lacks. Edge is single-node and shares the server's data format.
- Edge is in beta: pin your version, the API drifts between releases Qdrant Edge.
Syncing a Shard with a Qdrant Server
Use when: seeding a shard from a server, keeping it fresh, backing it up, or aggregating many devices into one collection.
There is no built-in .sync(). Sync is a pattern you assemble from shard helpers plus your own transport, so do not go looking for one call.
- Follow the documented dual-shard pattern: a
mutableshard for local writes plus animmutableshard restored from a server snapshot, query both, refresh on a schedule Edge synchronization guide. - You write the snapshot download (plain HTTP to the shard snapshot endpoint), then apply it with
unpack_snapshotandupdate_from_snapshot. Do not untar or merge segments by hand Synchronization patterns. - Refresh incrementally with a partial snapshot built from
snapshot_manifest, not a full snapshot every cycle Synchronization patterns. - Push is your own dual-write: on each local upsert, enqueue the point and let a background worker upsert it to the server, buffering while offline Synchronization patterns.
Keyword and Hybrid Search on Device
Use when: you need exact-term or BM25 matching, alone or alongside vectors.
- BM25 is built into Edge (
Bm25,Bm25Config,embed_document,embed_query) with the IDFModifieronEdgeSparseVectorParams, and is wire-compatible with server BM25: a shard seeded from a server snapshot answers local BM25 queries without re-indexing. Do not ship a second BM25 library Edge BM25 - Dense embeddings are NOT in Edge: generate them on device with the separate
fastembedpackage FastEmbed embeddings - Edge queries one vector field per request (
using) and does not fuse dense and sparse at query time. Run each leg separately and combine the rankings in application code Edge quickstart
Operating the Shard
Use when: writes have accumulated, search looks stale after inserts, or a backup is larger than the data.
- Edge has NO background optimizer. Call
optimizeafter bulk writes: it builds indexes (including the sparse index) and reclaims deleted points. Skip it and that data stays unindexed Edge quickstart - Faceting, counting, and enumeration are built in (
facet,count,scroll); index the fields you filter or facet withcreate_field_indexrather than aggregating in application code Edge quickstart - The write-ahead log is pre-allocated to 32 MB and inflates apparent disk and backup size. Shrink it with
wal_options(Rust), and do not treat raw file size as real usage Edge quickstart
What NOT to Do
- Expect a bidirectional
.sync()or a built-in push path: Edge gives you snapshot apply, you own the transport and the dual-write - Untar or merge snapshot segments by hand instead of using
unpack_snapshotandupdate_from_snapshot - Ship a custom or third-party BM25 when Edge has one built in
- Use
embed_documentfor queries orembed_queryfor documents: the weighting differs and results go wrong - Assume Edge fuses dense and sparse or consumes Prefetch: combine the rankings in application code
- Assume a background optimizer like the server's: nothing is indexed or compacted until you call
optimize - Reach for Edge when you need distributed or multi-node search: it is single-node Qdrant Edge
- Claim support for a language beyond Python and Rust, or an OS or accelerator the Edge docs do not state
More skills from the skills repository
View all 30 skillsqdrant-advisor
diagnose and troubleshoot Qdrant deployments
Jul 16DatabaseDebuggingOperationsQdrantqdrant-clients-sdk
integrate Qdrant client SDKs
Jul 16API DevelopmentDatabaseQdrantSDKqdrant-deployment-options
select Qdrant deployment options
Jul 19DatabaseDeploymentInfrastructureQdrantqdrant-horizontal-scaling
guide Qdrant horizontal scaling decisions
Jul 19ArchitectureDatabaseQdrantScalingqdrant-hybrid-search
implement hybrid search in Qdrant
Jul 16AI InfrastructureDatabaseQdrantSearchqdrant-hybrid-search-combining
combine hybrid search scores in Qdrant
Jul 16DatabaseQdrantSearch
More from Qdrant
View publisherqdrant-hybrid-search-prefetches
configure hybrid search with prefetch queries
skills
Jul 16API DevelopmentDatabaseQdrantSearchqdrant-indexing-performance-optimization
optimize Qdrant indexing and data ingestion
skills
Jul 19DatabaseDebuggingPerformanceQdrantqdrant-memory-usage-optimization
optimize Qdrant memory usage
skills
Jul 16DebuggingPerformanceQdrantqdrant-minimize-latency
optimize Qdrant query latency
skills
Jul 16DatabaseDebuggingPerformanceQdrantqdrant-model-migration
migrate embedding models in Qdrant
skills
Jul 16DatabaseMigrationPerformanceQdrant