Skip to content

Commit 9637e1a

Browse files
authored
feat: Qdrant skills (#1412)
1 parent 971139b commit 9637e1a

File tree

24 files changed

+1234
-0
lines changed

24 files changed

+1234
-0
lines changed

docs/README.skills.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,14 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-skills) for guidelines on how to
250250
| [pytest-coverage](../skills/pytest-coverage/SKILL.md) | Run pytest tests with coverage, discover lines missing coverage, and increase coverage to 100%. | None |
251251
| [python-mcp-server-generator](../skills/python-mcp-server-generator/SKILL.md) | Generate a complete MCP server project in Python with tools, resources, and proper configuration | None |
252252
| [python-pypi-package-builder](../skills/python-pypi-package-builder/SKILL.md) | End-to-end skill for building, testing, linting, versioning, and publishing a production-grade Python library to PyPI. Covers all four build backends (setuptools+setuptools_scm, hatchling, flit, poetry), PEP 440 versioning, semantic versioning, dynamic git-tag versioning, OOP/SOLID design, type hints (PEP 484/526/544/561), Trusted Publishing (OIDC), and the full PyPA packaging flow. Use for: creating Python packages, pip-installable SDKs, CLI tools, framework plugins, pyproject.toml setup, py.typed, setuptools_scm, semver, mypy, pre-commit, GitHub Actions CI/CD, or PyPI publishing. | `references/architecture-patterns.md`<br />`references/ci-publishing.md`<br />`references/community-docs.md`<br />`references/library-patterns.md`<br />`references/pyproject-toml.md`<br />`references/release-governance.md`<br />`references/testing-quality.md`<br />`references/tooling-ruff.md`<br />`references/versioning-strategy.md`<br />`scripts/scaffold.py` |
253+
| [qdrant-clients-sdk](../skills/qdrant-clients-sdk/SKILL.md) | Qdrant provides client SDKs for various programming languages, allowing easy integration with Qdrant deployments. | None |
254+
| [qdrant-deployment-options](../skills/qdrant-deployment-options/SKILL.md) | Guides Qdrant deployment selection. Use when someone asks 'how to deploy Qdrant', 'Docker vs Cloud', 'local mode', 'embedded Qdrant', 'Qdrant EDGE', 'which deployment option', 'self-hosted vs cloud', or 'need lowest latency deployment'. Also use when choosing between deployment types for a new project. | None |
255+
| [qdrant-model-migration](../skills/qdrant-model-migration/SKILL.md) | Guides embedding model migration in Qdrant without downtime. Use when someone asks 'how to switch embedding models', 'how to migrate vectors', 'how to update to a new model', 'zero-downtime model change', 'how to re-embed my data', or 'can I use two models at once'. Also use when upgrading model dimensions, switching providers, or A/B testing models. | None |
256+
| [qdrant-monitoring](../skills/qdrant-monitoring/SKILL.md) | Guides Qdrant monitoring and observability setup. Use when someone asks 'how to monitor Qdrant', 'what metrics to track', 'is Qdrant healthy', 'optimizer stuck', 'why is memory growing', 'requests are slow', or needs to set up Prometheus, Grafana, or health checks. Also use when debugging production issues that require metric analysis. | `debugging`<br />`setup` |
257+
| [qdrant-performance-optimization](../skills/qdrant-performance-optimization/SKILL.md) | Different techniques to optimize the performance of Qdrant, including indexing strategies, query optimization, and hardware considerations. Use when you want to improve the speed and efficiency of your Qdrant deployment. | `indexing-performance-optimization`<br />`memory-usage-optimization`<br />`search-speed-optimization` |
258+
| [qdrant-scaling](../skills/qdrant-scaling/SKILL.md) | Guides Qdrant scaling decisions. Use when someone asks 'how many nodes do I need', 'data doesn't fit on one node', 'need more throughput', 'cluster is slow', 'too many tenants', 'vertical or horizontal', 'how to shard', or 'need to add capacity'. | `minimize-latency`<br />`scaling-data-volume`<br />`scaling-qps`<br />`scaling-query-volume` |
259+
| [qdrant-search-quality](../skills/qdrant-search-quality/SKILL.md) | Diagnoses and improves Qdrant search relevance. Use when someone reports 'search results are bad', 'wrong results', 'low precision', 'low recall', 'irrelevant matches', 'missing expected results', or asks 'how to improve search quality?', 'which embedding model?', 'should I use hybrid search?', 'should I use reranking?'. Also use when search quality degrades after quantization, model change, or data growth. | `diagnosis`<br />`search-strategies` |
260+
| [qdrant-version-upgrade](../skills/qdrant-version-upgrade/SKILL.md) | Guidance on how to upgrade your Qdrant version without interrupting the availability of your application and ensuring data integrity. | None |
253261
| [quality-playbook](../skills/quality-playbook/SKILL.md) | Explore any codebase from scratch and generate six quality artifacts: a quality constitution (QUALITY.md), spec-traced functional tests, a code review protocol with regression test generation, an integration testing protocol, a multi-model spec audit (Council of Three), and an AI bootstrap file (AGENTS.md). Includes state machine completeness analysis and missing safeguard detection. Works with any language (Python, Java, Scala, TypeScript, Go, Rust, etc.). Use this skill whenever the user asks to set up a quality playbook, generate functional tests from specifications, create a quality constitution, build testing protocols, audit code against specs, or establish a repeatable quality system for a project. Also trigger when the user mentions 'quality playbook', 'spec audit', 'Council of Three', 'fitness-to-purpose', 'coverage theater', or wants to go beyond basic test generation to build a full quality system grounded in their actual codebase. | `LICENSE.txt`<br />`references/constitution.md`<br />`references/defensive_patterns.md`<br />`references/functional_tests.md`<br />`references/review_protocols.md`<br />`references/schema_mapping.md`<br />`references/spec_audit.md`<br />`references/verification.md` |
254262
| [quasi-coder](../skills/quasi-coder/SKILL.md) | Expert 10x engineer skill for interpreting and implementing code from shorthand, quasi-code, and natural language descriptions. Use when collaborators provide incomplete code snippets, pseudo-code, or descriptions with potential typos or incorrect terminology. Excels at translating non-technical or semi-technical descriptions into production-quality code. | None |
255263
| [react-audit-grep-patterns](../skills/react-audit-grep-patterns/SKILL.md) | Provides the complete, verified grep scan command library for auditing React codebases before a React 18.3.1 or React 19 upgrade. Use this skill whenever running a migration audit - for both the react18-auditor and react19-auditor agents. Contains every grep pattern needed to find deprecated APIs, removed APIs, unsafe lifecycle methods, batching vulnerabilities, test file issues, dependency conflicts, and React 19 specific removals. Always use this skill when writing audit scan commands - do not rely on memory for grep syntax, especially for the multi-line async setState patterns which require context flags. | `references/dep-scans.md`<br />`references/react18-scans.md`<br />`references/react19-scans.md`<br />`references/test-scans.md` |

skills/qdrant-clients-sdk/SKILL.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
name: qdrant-clients-sdk
3+
description: "Qdrant provides client SDKs for various programming languages, allowing easy integration with Qdrant deployments."
4+
allowed-tools:
5+
- Read
6+
- Grep
7+
- Glob
8+
- Bash
9+
---
10+
11+
# Qdrant Clients SDK
12+
13+
Qdrant has the following officially supported client SDKs:
14+
15+
- Python — [qdrant-client](https://github.com/qdrant/qdrant-client) · Installation: `pip install qdrant-client[fastembed]`
16+
- JavaScript / TypeScript — [qdrant-js](https://github.com/qdrant/qdrant-js) · Installation: `npm install @qdrant/js-client-rest`
17+
- Rust — [rust-client](https://github.com/qdrant/rust-client) · Installation: `cargo add qdrant-client`
18+
- Go — [go-client](https://github.com/qdrant/go-client) · Installation: `go get github.com/qdrant/go-client`
19+
- .NET — [qdrant-dotnet](https://github.com/qdrant/qdrant-dotnet) · Installation: `dotnet add package Qdrant.Client`
20+
- Java — [java-client](https://github.com/qdrant/java-client) · Available on Maven Central: https://central.sonatype.com/artifact/io.qdrant/client
21+
22+
23+
## API Reference
24+
25+
All interaction with Qdrant can happen through the REST API or gRPC API. We recommend using the REST API if you are using Qdrant for the first time or working on a prototype.
26+
27+
* REST API - [OpenAPI Reference](https://api.qdrant.tech/api-reference) - [GitHub](https://github.com/qdrant/qdrant/blob/master/docs/redoc/master/openapi.json)
28+
* gRPC API - [gRPC protobuf definitions](https://github.com/qdrant/qdrant/tree/master/lib/api/src/grpc/proto)
29+
30+
## Code examples
31+
32+
To obtain code examples for a specific client and use case, you can send a search request to the library of curated code snippets for the Qdrant client.
33+
34+
```bash
35+
curl -X GET "https://snippets.qdrant.tech/search?language=python&query=how+to+upload+points"
36+
```
37+
38+
Available languages: `python`, `typescript`, `rust`, `java`, `go`, `csharp`
39+
40+
41+
Response example:
42+
43+
```markdown
44+
45+
## Snippet 1
46+
47+
*qdrant-client* (vlatest) — https://search.qdrant.tech/md/documentation/manage-data/points/
48+
49+
Uploads multiple vector-embedded points to a Qdrant collection using the Python qdrant_client (PointStruct) with id, payload (e.g., color), and a 3D-like vector for similarity search. It supports parallel uploads (parallel=4) and a retry policy (max_retries=3) for robust indexing. The operation is idempotent: re-uploading with the same id overwrites existing points; if ids aren’t provided, Qdrant auto-generates UUIDs.
50+
51+
client.upload_points(
52+
collection_name="{collection_name}",
53+
points=[
54+
models.PointStruct(
55+
id=1,
56+
payload={
57+
"color": "red",
58+
},
59+
vector=[0.9, 0.1, 0.1],
60+
),
61+
models.PointStruct(
62+
id=2,
63+
payload={
64+
"color": "green",
65+
},
66+
vector=[0.1, 0.9, 0.1],
67+
),
68+
],
69+
parallel=4,
70+
max_retries=3,
71+
)
72+
```
73+
74+
Default response format is markdown, if snippet output is required in JSON format, you can add `&format=json` to the query string.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
name: qdrant-deployment-options
3+
description: "Guides Qdrant deployment selection. Use when someone asks 'how to deploy Qdrant', 'Docker vs Cloud', 'local mode', 'embedded Qdrant', 'Qdrant EDGE', 'which deployment option', 'self-hosted vs cloud', or 'need lowest latency deployment'. Also use when choosing between deployment types for a new project."
4+
---
5+
6+
# Which Qdrant Deployment Do I Need?
7+
8+
Start with what you need: managed ops or full control? Network latency acceptable or not? Production or prototyping? The answer narrows to one of four options.
9+
10+
11+
## Getting Started or Prototyping
12+
13+
Use when: building a prototype, running tests, CI/CD pipelines, or learning Qdrant.
14+
15+
- Use local mode (Python only): zero-dependency, in-memory or disk-persisted, no server needed [Local mode](https://search.qdrant.tech/md/documentation/quickstart/)
16+
- Local mode data format is NOT compatible with server. Do not use for production or benchmarking.
17+
- For a real server locally, use Docker [Quick start](https://search.qdrant.tech/md/documentation/quickstart/?s=download-and-run)
18+
19+
20+
## Going to Production (Self-Hosted)
21+
22+
Use when: you need full control over infrastructure, data residency, or custom configuration.
23+
24+
- Docker is the default deployment. Full Qdrant Open Source feature set, minimal setup. [Quick start](https://search.qdrant.tech/md/documentation/quickstart/?s=download-and-run)
25+
- You own operations: upgrades, backups, scaling, monitoring
26+
- Must set up distributed mode manually for multi-node clusters [Distributed deployment](https://search.qdrant.tech/md/documentation/operations/distributed_deployment/)
27+
- Consider Hybrid Cloud if you want Qdrant Cloud management on your infrastructure [Hybrid Cloud](https://search.qdrant.tech/md/documentation/hybrid-cloud/)
28+
29+
30+
## Going to Production (Zero-Ops)
31+
32+
Use when: you want managed infrastructure with zero-downtime updates, automatic backups, and resharding without operating clusters yourself.
33+
34+
- Qdrant Cloud handles upgrades, scaling, backups, and monitoring [Qdrant Cloud](https://search.qdrant.tech/md/documentation/cloud-quickstart/)
35+
- Supports multi-version upgrades automatically
36+
- Provides features not available in self-hosted: `/sys_metrics`, managed resharding, pre-configured alerts
37+
38+
39+
## Need Lowest Possible Latency
40+
41+
Use when: network round-trip to a server is unacceptable. Edge devices, in-process search, or latency-critical applications.
42+
43+
- Qdrant EDGE: in-process bindings to Qdrant shard-level functions, no network overhead [Qdrant EDGE](https://search.qdrant.tech/md/documentation/edge/edge-quickstart/)
44+
- Same data format as server. Can sync with server via shard snapshots.
45+
- Single-node feature set only. No distributed mode.
46+
47+
48+
## What NOT to Do
49+
50+
- Use local mode for production or benchmarking (not optimized, incompatible data format)
51+
- Self-host without monitoring and backup strategy (you will lose data or miss outages)
52+
- Choose EDGE when you need distributed search (single-node only)
53+
- Pick Hybrid Cloud unless you have data residency requirements (unnecessary Kubernetes complexity when Qdrant Cloud works)
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
---
2+
name: qdrant-model-migration
3+
description: "Guides embedding model migration in Qdrant without downtime. Use when someone asks 'how to switch embedding models', 'how to migrate vectors', 'how to update to a new model', 'zero-downtime model change', 'how to re-embed my data', or 'can I use two models at once'. Also use when upgrading model dimensions, switching providers, or A/B testing models."
4+
---
5+
6+
# What to Do When Changing Embedding Models
7+
8+
Vectors from different models are incompatible. You cannot mix old and new embeddings in the same vector space. You also cannot add new named vector fields to an existing collection. All named vectors must be defined at collection creation time. Both migration strategies below require creating a new collection.
9+
10+
- Understand collection aliases before choosing a strategy [Collection aliases](https://search.qdrant.tech/md/documentation/manage-data/collections/?s=collection-aliases)
11+
12+
13+
## Can I Avoid Re-embedding?
14+
15+
Use when: looking for shortcuts before committing to full migration.
16+
17+
You MUST re-embed if: changing model provider (OpenAI to Cohere), changing architecture (CLIP to BGE), incompatible dimension counts across different models, or adding sparse vectors to dense-only collection.
18+
19+
You CAN avoid re-embedding if: using Matryoshka models (use `dimensions` parameter to output lower-dimensional embeddings, learn linear transformation from sample data, some recall loss, good for 100M+ datasets). Or changing quantization (binary to scalar): Qdrant re-quantizes automatically. [Quantization](https://search.qdrant.tech/md/documentation/manage-data/quantization/)
20+
21+
22+
## Need Zero Downtime (Alias Swap)
23+
24+
Use when: production must stay available. Recommended for model replacement at scale.
25+
26+
- Create a new collection with the new model's dimensions and distance metric
27+
- Re-embed all data into the new collection in the background
28+
- Point your application at a collection alias instead of a direct collection name
29+
- Atomically swap the alias to the new collection [Switch collection](https://search.qdrant.tech/md/documentation/manage-data/collections/?s=switch-collection)
30+
- Verify search quality, then delete the old collection
31+
32+
Careful, the alias swap only redirects queries. Payloads must be re-uploaded separately.
33+
34+
35+
## Need Both Models Live (Side-by-Side)
36+
37+
Use when: A/B testing models, multi-modal (dense + sparse), or evaluating a new model before committing.
38+
39+
You cannot add a named vector to an existing collection. Create a new collection with both vector fields defined upfront:
40+
41+
- Create new collection with old and new named vectors both defined [Collection with multiple vectors](https://search.qdrant.tech/md/documentation/manage-data/collections/?s=collection-with-multiple-vectors)
42+
- Migrate data from old collection, preserving existing vectors in the old named field
43+
- Backfill new model embeddings incrementally using `UpdateVectors` [Update vectors](https://search.qdrant.tech/md/documentation/manage-data/points/?s=update-vectors)
44+
- Compare quality by querying with `using: "old_model"` vs `using: "new_model"`
45+
- Swap alias to new collection once satisfied
46+
47+
Co-locating large multi-vectors (especially ColBERT) with dense vectors degrades ALL queries, even those only using dense. At millions of points, users report 13s latency dropping to 2s after removing ColBERT. Put large vectors on disk during side-by-side migration.
48+
49+
If you anticipate future model migrations, define both vector fields upfront at collection creation.
50+
51+
52+
## Dense to Hybrid Search Migration
53+
54+
Use when: adding sparse/BM25 vectors to an existing dense-only collection. Most common migration pattern.
55+
56+
You cannot add sparse vectors to an existing dense-only collection. Must recreate:
57+
58+
- Create new collection with both dense and sparse vector configs defined
59+
- Re-embed all data with both dense and sparse models
60+
- Migrate payloads, swap alias
61+
62+
Sparse vectors at chunk level have different TF-IDF characteristics than document level. Test retrieval quality after migration, especially for non-English text without stop-word removal.
63+
64+
65+
## Re-embedding Is Too Slow
66+
67+
Use when: dataset is large and re-embedding is the bottleneck.
68+
69+
- Use `update_mode: insert` (v1.17+) for safe idempotent migration [Update mode](https://search.qdrant.tech/md/documentation/manage-data/points/?s=update-mode)
70+
- Scroll the old collection with `with_vectors=False`, re-embed in batches, upsert into new collection
71+
- Upload in parallel batches (64-256 points per request, 2-4 parallel streams) [Bulk upload](https://search.qdrant.tech/md/documentation/tutorials-develop/bulk-upload/)
72+
- Disable HNSW during bulk load (set `indexing_threshold_kb` very high, restore after)
73+
- For Qdrant Cloud inference, switching models is a config change, not a pipeline change [Inference docs](https://search.qdrant.tech/md/documentation/inference/)
74+
75+
For 400GB+ datasets, expect days. For small datasets (<25MB), re-indexing from source is faster than using the migration tool.
76+
77+
78+
## What NOT to Do
79+
80+
- Assume you can add named vectors to an existing collection (must be defined at creation time)
81+
- Delete the old collection before verifying the new one
82+
- Forget to update the query embedding model in your application code
83+
- Skip payload migration when using alias swap (aliases redirect queries, they do not copy data)
84+
- Keep ColBERT vectors co-located with dense vectors during a long migration (I/O cost degrades all queries)
85+
- Migrate to hybrid search without testing BM25 quality at chunk level

skills/qdrant-monitoring/SKILL.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
name: qdrant-monitoring
3+
description: "Guides Qdrant monitoring and observability setup. Use when someone asks 'how to monitor Qdrant', 'what metrics to track', 'is Qdrant healthy', 'optimizer stuck', 'why is memory growing', 'requests are slow', or needs to set up Prometheus, Grafana, or health checks. Also use when debugging production issues that require metric analysis."
4+
allowed-tools:
5+
- Read
6+
- Grep
7+
- Glob
8+
---
9+
10+
# Qdrant Monitoring
11+
12+
Qdrant monitoring allows tracking performance and health of your deployment, and identifying issues before they become outages. First determine whether you need to set up monitoring or diagnose an active issue.
13+
14+
- Understand available metrics [Monitoring docs](https://search.qdrant.tech/md/documentation/operations/monitoring/)
15+
16+
17+
## Monitoring Setup
18+
19+
Prometheus scraping, health probes, Hybrid Cloud specifics, alerting, and log centralization. [Monitoring Setup](setup/SKILL.md)
20+
21+
22+
## Debugging with Metrics
23+
24+
Optimizer stuck, memory growth, slow requests. Using metrics to diagnose active production issues. [Debugging with Metrics](debugging/SKILL.md)

0 commit comments

Comments
 (0)