qdrant

Qdrant API for vector search. Use when user mentions "Qdrant", "vector database", "semantic search", or embeddings storage.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "qdrant" with this command: npx skills add vm0-ai/vm0-skills/vm0-ai-vm0-skills-qdrant

Qdrant API

Use the Qdrant REST API via direct curl calls to store and search vector embeddings for RAG, semantic search, and recommendations.

Official docs: https://qdrant.tech/documentation/


When to Use

Use this skill when you need to:

  • Store vector embeddings for semantic search
  • Search for similar vectors using cosine, dot product, or euclidean distance
  • Build RAG applications with retrieval from vector store
  • Implement recommendations based on similarity
  • Filter search results by metadata/payload

Prerequisites

Option 1: Qdrant Cloud (Recommended)

  1. Sign up at Qdrant Cloud
  2. Create a cluster and get your URL and API key
  3. Store credentials in environment variables
export QDRANT_URL="https://xyz-example.aws.cloud.qdrant.io:6333"
export QDRANT_TOKEN="your-api-key"

Option 2: Self-hosted

Run Qdrant locally with Docker:

docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
export QDRANT_URL="http://localhost:6333"
export QDRANT_TOKEN="" # Optional for local

How to Use

All examples below assume you have QDRANT_URL and QDRANT_TOKEN set.


1. Check Server Status

Verify connection to Qdrant:

curl -s -X GET "$(printenv QDRANT_URL)" --header "api-key: $(printenv QDRANT_TOKEN)"

2. List Collections

Get all collections:

curl -s -X GET "$(printenv QDRANT_URL)/collections" --header "api-key: $(printenv QDRANT_TOKEN)"

3. Create a Collection

Create a collection for storing vectors:

Write to /tmp/qdrant_request.json:

{
  "vectors": {
    "size": 1536,
    "distance": "Cosine"
  }
}

Then run:

curl -s -X PUT "$(printenv QDRANT_URL)/collections/my_collection" --header "api-key: $(printenv QDRANT_TOKEN)" --header "Content-Type: application/json" -d @/tmp/qdrant_request.json

Distance metrics:

  • Cosine - Cosine similarity (recommended for normalized vectors)
  • Dot - Dot product
  • Euclid - Euclidean distance
  • Manhattan - Manhattan distance

Common vector sizes:

  • OpenAI text-embedding-3-small: 1536
  • OpenAI text-embedding-3-large: 3072
  • Cohere: 1024

4. Get Collection Info

Get details about a collection:

curl -s -X GET "$(printenv QDRANT_URL)/collections/my_collection" --header "api-key: $(printenv QDRANT_TOKEN)"

5. Upsert Points (Insert/Update Vectors)

Add vectors with payload (metadata):

Write to /tmp/qdrant_request.json:

{
  "points": [
    {
      "id": 1,
      "vector": [0.05, 0.61, 0.76, 0.74],
      "payload": {"text": "Hello world", "source": "doc1"}
    },
    {
      "id": 2,
      "vector": [0.19, 0.81, 0.75, 0.11],
      "payload": {"text": "Goodbye world", "source": "doc2"}
    }
  ]
}

Then run:

curl -s -X PUT "$(printenv QDRANT_URL)/collections/my_collection/points" --header "api-key: $(printenv QDRANT_TOKEN)" --header "Content-Type: application/json" -d @/tmp/qdrant_request.json

6. Search Similar Vectors

Find vectors similar to a query vector:

Write to /tmp/qdrant_request.json:

{
  "query": [0.05, 0.61, 0.76, 0.74],
  "limit": 5,
  "with_payload": true
}

Then run:

curl -s -X POST "$(printenv QDRANT_URL)/collections/my_collection/points/query" --header "api-key: $(printenv QDRANT_TOKEN)" --header "Content-Type: application/json" -d @/tmp/qdrant_request.json

Response:

{
  "result": {
  "points": [
  {"id": 1, "score": 0.99, "payload": {"text": "Hello world"}}
  ]
  }
}

7. Search with Filters

Filter results by payload fields:

Write to /tmp/qdrant_request.json:

{
  "query": [0.05, 0.61, 0.76, 0.74],
  "limit": 5,
  "filter": {
    "must": [
      {"key": "source", "match": {"value": "doc1"}}
    ]
  },
  "with_payload": true
}

Then run:

curl -s -X POST "$(printenv QDRANT_URL)/collections/my_collection/points/query" --header "api-key: $(printenv QDRANT_TOKEN)" --header "Content-Type: application/json" -d @/tmp/qdrant_request.json

Filter operators:

  • must - All conditions must match (AND)
  • should - At least one must match (OR)
  • must_not - None should match (NOT)

8. Get Points by ID

Retrieve specific points:

Write to /tmp/qdrant_request.json:

{
  "ids": [1, 2],
  "with_payload": true,
  "with_vector": true
}

Then run:

curl -s -X POST "$(printenv QDRANT_URL)/collections/my_collection/points" --header "api-key: $(printenv QDRANT_TOKEN)" --header "Content-Type: application/json" -d @/tmp/qdrant_request.json

9. Delete Points

Delete by IDs:

Write to /tmp/qdrant_request.json:

{
  "points": [1, 2]
}

Then run:

curl -s -X POST "$(printenv QDRANT_URL)/collections/my_collection/points/delete" --header "api-key: $(printenv QDRANT_TOKEN)" --header "Content-Type: application/json" -d @/tmp/qdrant_request.json

Delete by filter:

Write to /tmp/qdrant_request.json:

{
  "filter": {
    "must": [
      {"key": "source", "match": {"value": "doc1"}}
    ]
  }
}

Then run:

curl -s -X POST "$(printenv QDRANT_URL)/collections/my_collection/points/delete" --header "api-key: $(printenv QDRANT_TOKEN)" --header "Content-Type: application/json" -d @/tmp/qdrant_request.json

10. Delete Collection

Remove a collection entirely:

curl -s -X DELETE "$(printenv QDRANT_URL)/collections/my_collection" --header "api-key: $(printenv QDRANT_TOKEN)"

11. Count Points

Get total count or filtered count:

Write to /tmp/qdrant_request.json:

{
  "exact": true
}

Then run:

curl -s -X POST "$(printenv QDRANT_URL)/collections/my_collection/points/count" --header "api-key: $(printenv QDRANT_TOKEN)" --header "Content-Type: application/json" -d @/tmp/qdrant_request.json

Filter Syntax

Common filter conditions:

{
  "filter": {
  "must": [
  {"key": "city", "match": {"value": "London"}},
  {"key": "price", "range": {"gte": 100, "lte": 500}},
  {"key": "tags", "match": {"any": ["electronics", "sale"]}}
  ]
  }
}

Match types:

  • match.value - Exact match
  • match.any - Match any in list
  • match.except - Match none in list
  • range - Numeric range (gt, gte, lt, lte)

Guidelines

  1. Match vector size: Collection vector size must match your embedding model output
  2. Use Cosine for normalized vectors: Most embedding models output normalized vectors
  3. Add payload for filtering: Store metadata with vectors for filtered searches
  4. Batch upserts: Insert multiple points in one request for efficiency
  5. Use score_threshold: Filter out low-similarity results in search

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

google-sheets

No summary provided by upstream source.

Repository SourceNeeds Review
246-vm0-ai
General

apify

No summary provided by upstream source.

Repository SourceNeeds Review
214-vm0-ai
General

hackernews

No summary provided by upstream source.

Repository SourceNeeds Review
170-vm0-ai
General

serpapi

No summary provided by upstream source.

Repository SourceNeeds Review
164-vm0-ai