Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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'.
.claude/skills/qdrant-qdrant-sliding-time-window/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -26% | 0% |
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).
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
2025-01, 2025-02, ..., 2025-06)shard_key_selector at query time to search only specific periods for efficiencyUse when: you need per-period collection configuration (e.g., different quantization or storage settings). Collection aliases
Trade-off vs shard rotation: allows per-collection config differences, but requires application-level fan-out and more operational overhead.
Use when: data arrives continuously without clear time boundaries, or you want the simplest setup.
timestamp payload on every point, create a payload index on it Payload indexrange condition Range filterUse when: recent data needs fast in-RAM search, older data should remain searchable at lower performance.
memory: pinned on Qdrant 1.19 or newer, always_ram: true on 1.18 or older), move older collections to mmap/on-disk vectors (memory: cold on 1.19 or newer, on_disk: true on 1.18 or older). Quantization| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | pass→pass | 23,977 | 11,524 | -52% | 1 | 1 | 0% | 3,576 | 3,198 | -11% | 0 | 0 | — |
case-11 | pass→pass | 17,056 | 9,064 | -47% | 1 | 1 | 0% | 2,221 | 2,210 | -0% | 0 | 0 | — |
case-01 | fail→pass | 26,624 | 14,153 | -47% | 1 | 1 | 0% | 4,296 | 3,298 | -23% | 0 | 0 | — |
case-02 | fail→pass | 19,623 | 204,061 | +940% | 1 | 1 | 0% | 3,519 | 4,590 | +30% | 0 | 0 | — |
case-03 | fail→fail | 17,998 | 12,707 | -29% | 1 | 1 | 0% | 2,951 | 3,327 | +13% | 0 | 0 | — |
case-04 | fail→pass | 18,789 | 9,638 | -49% | 1 | 1 | 0% | 2,624 | 2,687 | +2% | 0 | 0 | — |
case-05 | pass→fail | 10,730 | 4,827 | -55% | 1 | 1 | 0% | 1,687 | 2,021 | +20% | 0 | 0 | — |
case-06 | fail→pass | 12,875 | 7,099 | -45% | 1 | 1 | 0% | 2,146 | 2,238 | +4% | 0 | 0 | — |
case-07 | pass→pass | 14,775 | 7,528 | -49% | 1 | 1 | 0% | 2,476 | 2,253 | -9% | 0 | 0 | — |
case-08 | pass→pass | 14,318 | 6,092 | -57% | 1 | 1 | 0% | 2,210 | 1,989 | -10% | 0 | 0 | — |
case-09 | fail→pass | 12,730 | 3,276 | -74% | 1 | 1 | 0% | 1,960 | 1,448 | -26% | 0 | 0 | — |
case-12 | fail→pass | 12,221 | 4,267 | -65% | 1 | 1 | 0% | 1,749 | 1,520 | -13% | 0 | 0 | — |
case-13 | pass→pass | 18,052 | 6,844 | -62% | 1 | 1 | 0% | 2,748 | 2,207 | -20% | 0 | 0 | — |
case-14 | fail→pass | 14,907 | 6,221 | -58% | 1 | 1 | 0% | 2,690 | 2,143 | -20% | 0 | 0 | — |
case-15 | fail→pass | 15,919 | 2,704 | -83% | 1 | 1 | 0% | 2,408 | 1,468 | -39% | 0 | 0 | — |
case-21 | pass→pass | 17,121 | 9,160 | -46% | 1 | 1 | 0% | 2,317 | 2,704 | +17% | 0 | 0 | — |
case-16 | fail→pass | 15,138 | 4,351 | -71% | 1 | 1 | 0% | 2,297 | 1,628 | -29% | 0 | 0 | — |
case-17 | fail→pass | 9,041 | 3,549 | -61% | 1 | 1 | 0% | 1,492 | 1,641 | +10% | 0 | 0 | — |
case-18 | fail→pass | 14,391 | 9,958 | -31% | 1 | 1 | 0% | 2,420 | 2,407 | -1% | 0 | 0 | — |
case-19 | pass→pass | 14,597 | 10,827 | -26% | 1 | 1 | 0% | 2,454 | 2,549 | +4% | 0 | 0 | — |
case-20 | pass→pass | 14,775 | 6,148 | -58% | 1 | 1 | 0% | 2,058 | 2,185 | +6% | 0 | 0 | — |
case-22 | pass→pass | 18,177 | 21,524 | +18% | 1 | 1 | 0% | 3,252 | 3,950 | +21% | 0 | 0 | — |
case-23 | pass→pass | 19,660 | 12,814 | -35% | 1 | 1 | 0% | 2,874 | 3,390 | +18% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +43 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.