Sliding time window
Skill qdrant/skills/skills/qdrant-scaling/scaling-data-volume/sliding-time-window
Guides sliding time window scaling in Qdrant. Use when someone asks 'only recent data matters', 'how to expire old vectors', 'time-based data rotation', 'delete old data efficiently', 'social media feed search', 'news search', 'log search with retention', or 'how to keep only last N months of data'.From its SKILL.md
npx -y skills add qdrant/skills --skill sliding-time-windowAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
4.5 KB, as published. Nobody here has run it
Scaling with a Sliding Time Window
Use when only recent data needs fast search -- social media posts, news articles, support tickets, logs, job listings. Old data either becomes irrelevant or can tolerate slower access.
Three strategies: shard rotation (recommended), collection rotation (when per-period config differs), and filter-and-delete (simplest, for continuous cleanup).
Shard Rotation (Recommended)
Use when: data has natural time boundaries (daily, weekly, monthly). Preferred because queries span all time periods in one request without application-level fan-out. User-defined sharding
- Create a collection with user-defined sharding enabled
- Create one shard key per time period (e.g.,
2025-01,2025-02, ...,2025-06) - Ingest data into the current period's shard key
- When a new period starts, create a new shard key and redirect writes
- Delete the oldest shard key outside the retention window
- Deleting a shard key reclaims all resources instantly (no fragmentation, no optimizer overhead)
- Pre-create the next period's shard key before rotation to avoid write disruption
- Use
shard_key_selectorat query time to search only specific periods for efficiency - Shard keys can be placed on specific nodes for hot/cold tiering
Collection Rotation (Alias Swap)
Use when: you need per-period collection configuration (e.g., different quantization or storage settings). Collection aliases
- Create one collection per time period, point a write alias at the newest
- Query across all active collections in parallel, merge results client-side
- When a new period starts, create the new collection and swap the write alias Switch collection
- Drop the oldest collection outside the window
Trade-off vs shard rotation: allows per-collection config differences, but requires application-level fan-out and more operational overhead.
Filter-and-Delete
Use when: data arrives continuously without clear time boundaries, or you want the simplest setup.
- Store a
timestamppayload on every point, create a payload index on it Payload index - Filter to the desired window at query time using
rangecondition Range filter - Periodically delete expired points using delete-by-filter Delete points
- Run cleanup during off-peak hours in batches (10k-50k points) to avoid optimizer locks
- Deletes are not free: tombstoned points degrade search until optimizer compacts segments
- Does not reclaim disk instantly (compaction is asynchronous)
Hot/Cold Tiers
Use when: recent data needs fast in-RAM search, older data should remain searchable at lower performance.
- Shard rotation: place current shard key on fast-storage nodes, move older shard keys to cheaper nodes via shard placement. All queries still go through a single collection.
- Collection rotation: keep current collection in RAM (
memory: pinnedon Qdrant 1.19 or newer,always_ram: trueon 1.18 or older), move older collections to mmap/on-disk vectors (memory: coldon 1.19 or newer,on_disk: trueon 1.18 or older). Quantization
What NOT to Do
- Do not use filter-and-delete for high-volume time-series with millions of daily deletes (use rotation instead)
- Do not forget to index the timestamp field (range filters without an index cause full scans)
- Do not use collection rotation when shard rotation would suffice (unnecessary fan-out complexity)
- Do not drop a shard key or collection before verifying its period is fully outside the retention window
- Do not skip pre-creating the next period's shard key or collection (write failures during rotation are hard to recover)
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most rag retrieval skills give
Counted across 199 of the 213 authors here whose files we hold, read 2026-09-06
- Enable caching for frequent queriesin 14 of 199, across 5 files
- Enable MMR for diverse resultsin 12 of 199, across 5 files
- Enable binary quantization to reduce memoryin 11 of 199, across 4 files
- Initialize the database with dimensions matching the embedding modelin 11 of 199, across 4 files
- Start the similarity threshold at 0.7in 11 of 199, across 4 files
- Check database statistics when diagnosing slow searchin 11 of 199, across 4 files
- Export and import vectors as JSONin 10 of 199, across 3 files
- Match index dimension to the embedding modelin 10 of 199, across 9 files
- Order filters cheap before expensivein 9 of 199, across 2 files
- Generate a runnable scaffold in the user's stackin 9 of 199, across 2 files
- Recommend multi-action scoring when frequent tuning is expectedin 9 of 199, across 2 files
- Batch store documents for bulk insertsin 9 of 199, across 2 files
Said here and by no other author read
- Use shard rotation as the default strategy
- Create one shard key per time period
- Ingest data into the current period's shard key
- Pre-create the next period's shard key before rotation
- Delete the oldest shard key outside the retention window
- Search only specific periods using shard_key_selector
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.