qdrant-sliding-time-window
$
npx mdskill add github/awesome-copilot/qdrant-sliding-time-windowAutomate time-based data rotation in Qdrant for efficient recent search.
- Enables fast retrieval of recent social media posts, news, logs, or tickets.
- Integrates with Qdrant's user-defined sharding and collection management APIs.
- Selects shard rotation, collection rotation, or filter-and-delete based on data boundaries.
- Reclaims storage instantly by removing old shard keys outside the retention window.
SKILL.md
.github/skills/qdrant-sliding-time-windowView on GitHub ↗
--- name: qdrant-sliding-time-window description: "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'." --- # 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](https://search.qdrant.tech/md/documentation/operations/distributed_deployment/?s=user-defined-sharding) 1. Create a collection with user-defined sharding enabled 2. Create one shard key per time period (e.g., `2025-01`, `2025-02`, ..., `2025-06`) 3. Ingest data into the current period's shard key 4. When a new period starts, create a new shard key and redirect writes 5. 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_selector` at 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](https://search.qdrant.tech/md/documentation/manage-data/collections/?s=collection-aliases) 1. Create one collection per time period, point a write alias at the newest 2. Query across all active collections in parallel, merge results client-side 3. When a new period starts, create the new collection and swap the write alias [Switch collection](https://search.qdrant.tech/md/documentation/manage-data/collections/?s=switch-collection) 4. 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. 1. Store a `timestamp` payload on every point, create a payload index on it [Payload index](https://search.qdrant.tech/md/documentation/manage-data/indexing/?s=payload-index) 2. Filter to the desired window at query time using `range` condition [Range filter](https://search.qdrant.tech/md/documentation/search/filtering/?s=range) 3. Periodically delete expired points using delete-by-filter [Delete points](https://search.qdrant.tech/md/documentation/manage-data/points/?s=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 (`always_ram: true`), move older collections to mmap/on-disk vectors. [Quantization](https://search.qdrant.tech/md/documentation/manage-data/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)
More from github/awesome-copilot
- acquire-codebase-knowledgeUse this skill when the user explicitly asks to map, document, or onboard into an existing codebase. Trigger for prompts like "map this codebase", "document this architecture", "onboard me to this repo", or "create codebase docs". Do not trigger for routine feature implementation, bug fixes, or narrow code edits unless the user asks for repository-level discovery.
- acreadiness-assessRun the AgentRC readiness assessment on the current repository and produce a static HTML dashboard at reports/index.html. Wraps `npx github:microsoft/agentrc readiness` and hands off rendering to the @ai-readiness-reporter custom agent. Supports policies (--policy) for org-specific scoring. Use when asked to assess, audit, or score the AI readiness of a repo.
- acreadiness-generate-instructionsGenerate tailored AI agent instruction files via AgentRC instructions command. Produces .github/copilot-instructions.md (default, recommended for Copilot in VS Code) plus optional per-area .instructions.md files with applyTo globs for monorepos. Use after running /acreadiness-assess to close gaps in the AI Tooling pillar.
- acreadiness-policyHelp the user pick, write, or apply an AgentRC policy. Policies customise readiness scoring by disabling irrelevant checks, overriding impact/level, setting pass-rate thresholds, or chaining org baselines with team overrides. Use when the user asks about strict mode, AI-only scoring, custom weights, CI gating, or wants org-wide standardisation.
- add-educational-comments'Add educational comments to the file specified, or prompt asking for file to comment if one is not provided.'
- adobe-illustrator-scriptingWrite, debug, and optimize Adobe Illustrator automation scripts using ExtendScript (JavaScript/JSX). Use when creating or modifying scripts that manipulate documents, layers, paths, text frames, colors, symbols, artboards, or any Illustrator DOM objects. Covers the complete JavaScript object model, coordinate system, measurement units, export workflows, and scripting best practices.
- agent-governance|
- agent-owasp-compliance|
- agent-supply-chain|
- agentic-eval|