Milvus Vector Database

VerifiedSafe

Use the pymilvus SDK to connect, manage collections, insert vectors, and perform similarity search on Milvus, a vector database.

Sby Skills Guide Bot
Data & AIIntermediate
7/27/2026
Claude CodeCursorCodex
#milvus#vector-database#pymilvus#semantic-search#rag

Recommended for

Automated summary

Guide to operating the Milvus vector database through the pymilvus Python SDK, covering connections, collections, vector and hybrid search, indexes, and RBAC.

Strengths

  • Covers the full lifecycle: connection, schema design, vector CRUD, search, and indexing
  • Includes advanced features such as hybrid search with reranking, BM25 full-text search, and paginated iterators
  • Clearly separates Milvus Lite, Standalone/Cluster, and Zilliz Cloud, and requires asking the user for connection details
  • Provides concrete Python code samples, including an async client

Limitations

  • The supplied SKILL.md cuts off mid-way through the collection management section, so real coverage is partial
  • Assumes a Python 3.8+ environment with pymilvus installed and a reachable Milvus instance
  • Offers little guidance on sizing, performance tuning, or index selection beyond basic creation
When to use it

Use it when writing Python code to query or administer a Milvus database, for instance in a RAG pipeline or semantic search system.

When not to use it

Avoid it if the project relies on a different vector store (Qdrant, Pinecone, pgvector) or uses a language other than Python.

Security analysis

Safe
Quality score85/100

The skill is a straightforward documentation-style wrapper around the pymilvus Python SDK. There are no curl|sh pipelines, no obfuscated payloads, no attempts to read or exfiltrate secrets, no disabling of safety behavior. It handles credentials only by templating placeholders like <USER_TOKEN> and explicitly tells the agent to ask the user for connection details rather than inventing them. Drop/truncate/RBAC operations are described but are normal database administration surfaces exercised at the user's direction, not autonomous destruction. Bash usage is limited to running Python, which is a powerful but fully legitimate capability for the stated purpose.

Findings
  • •Declares Bash/Read/Write tools but only uses them to run Python snippets and read reference docs
  • •Skill handles database credentials (URI, token, API key) but explicitly instructs the agent to ask the user rather than hardcode or assume them
  • •Includes RBAC and drop/truncate operations — destructive in intent on the user's own data only, and gated behind explicit user requests
How this analysis is made

Examples

Connexion et création de collection
Connect to my Milvus instance at http://localhost:19530 with pymilvus and create a collection named documents with a 768-dim vector field and a text field, using AUTOINDEX.
Recherche hybride avec reranking
Using pymilvus, write a hybrid search over my 'products' collection that combines dense vector search and BM25 full-text search, then reranks the results.
Pagination sur grand jeu de données
Show me how to iterate over all vectors in my Milvus collection in batches using a query iterator instead of loading everything at once.

name: milvus description: Operate Milvus vector database with pymilvus Python SDK. Use when the user wants to connect to Milvus, create collections, insert vectors, perform similarity search, hybrid search, full-text search, manage indexes, partitions, databases, or RBAC via Python code. license: Apache-2.0 compatibility: Requires Python 3.8+ and pymilvus (pip install pymilvus). Runs on macOS and Linux. metadata: author: zilliztech version: "1.0.0" allowed-tools: Bash Read Write

Milvus Vector Database Skill

Operate Milvus vector databases directly through Python code using the pymilvus SDK. Covers the full lifecycle — connecting, schema design, collection management, vector CRUD, search, hybrid search, full-text search, indexing, partitions, databases, and RBAC.

When to Use

Use this skill when the user wants to:

  • Connect to a Milvus instance (local, standalone, cluster, or Milvus Lite)
  • Create collections with custom schemas
  • Insert, upsert, search, query, get, or delete vectors
  • Perform hybrid search with reranking
  • Perform full-text search (BM25)
  • Manage indexes, partitions, databases
  • Set up users, roles, and access control (RBAC)
  • Build RAG pipelines, semantic search, or recommendation systems with Milvus
  • Iterate over large result sets with search/query iterators

Requirements

  • Python 3.8+
  • pymilvus (pip install pymilvus)
  • A running Milvus instance, or use Milvus Lite (embedded, file-based) for development

Capabilities Overview

| Area | What You Can Do | |------|----------------| | Connection | Connect to Milvus Lite, Standalone, Cluster, or Zilliz Cloud | | Collections | Create (quick or custom schema), list, describe, drop, rename, truncate, load, release | | Vectors | Insert, upsert, search, hybrid search, query, get, delete | | Full-Text Search | BM25-based keyword search with sparse vectors | | Iterators | Paginated search and query over large datasets | | Indexes | Create (AUTOINDEX, HNSW, IVF_FLAT, etc.), list, describe, drop | | Partitions | Create, list, load, release, drop | | Databases | Create, list, switch, drop | | RBAC | Users, roles, privileges management |


Connection

IMPORTANT: Before writing any connection code, you MUST ask the user for their connection details. Ask:

  1. Deployment type — Milvus Lite (local file), Standalone/Cluster (self-hosted), or Zilliz Cloud (managed)?
  2. URI — For self-hosted: host and port (e.g., http://localhost:19530). For Zilliz Cloud: the endpoint URL.
  3. Authentication — Token, API key, or username/password if required.
  4. Database name — If not using the default database.

Never assume or hardcode connection parameters. Use Milvus Lite (uri="./milvus.db") only if the user explicitly wants local/embedded mode for development.

from pymilvus import MilvusClient

# Milvus Lite (embedded, file-based — great for dev/test)
client = MilvusClient(uri="./milvus.db")

# Standalone / Cluster Milvus (ask user for actual host:port and credentials)
client = MilvusClient(uri="<USER_URI>", token="<USER_TOKEN>")

# Zilliz Cloud (ask user for endpoint and API key)
client = MilvusClient(uri="<USER_ZILLIZ_ENDPOINT>", token="<USER_API_KEY>")

Parameters:

| Parameter | Type | Description | |-----------|------|-------------| | uri | str | "./file.db" for Milvus Lite, "http://host:19530" for server | | token | str | API key or "username:password" | | user | str | Username (alternative to token) | | password | str | Password (alternative to token) | | db_name | str | Target database (default: "default") | | timeout | float | Operation timeout in seconds |

Async Client

from pymilvus import AsyncMilvusClient

async with AsyncMilvusClient(uri="<USER_URI>") as client:
    results = await client.search(collection_name="my_collection", data=[query_vector], limit=10)

Collection Management

Quick Create (auto schema + auto index + auto load)

client.create_collection(
    collection_name="my_collection",
    dimension=768,
    metric_type="COSINE"  # Optional: "COSINE" (default), "L2", "IP"
)

This automatically creates an id field (INT64, primary key, auto_id), a vector field (FLOAT_VECTOR), AUTOINDEX, and auto-loads the collection.

Custom Schema Create

from pymilvus import DataType

schema = client.create_schema(auto_id=False, enable_dynamic_field=True)
schema.add_field("id", DataType.INT64, is_primary=True)
schema.add_field("text", DataType.VARCHAR, max_length=512)
schema.add_field("embedding", DataType.FLOAT_VECTOR, dim=768)

index_params = client.prepare_index_params()
index_params.add_index(field_name="embedding", index_type="AUTOINDEX", metric_type="COSINE")

client.create_collection(collection_name="my_collection", schema=schema, index_params=index_params)

See references/collection.md for data types, add_field parameters, and all collection operations.

Other Collection Operations

client.list_collections()
client.describe_collection(collection_name="my_collection")
client.has_collection(collection_name="my_collection")
client.rename_collection(old_name="old", new_name="new")
client.drop_collection(collection_name="my_collection")
client.truncate_collection(collection_name="my_collection")
client.load_collection(collection_name="my_collection")
client.release_collection(collection_name="my_collection")
client.get_load_state(collection_name="my_collection")
client.get_collection_stats(collection_name="my_collection")
  • Quick create is best for prototyping; use custom schema for production.
  • A collection must be loaded before search or query.
  • Use enable_dynamic_field=True to allow inserting fields not defined in the schema.

Vector Operations

See references/vector.md for hybrid search, full-text search, iterators, filter syntax, and detailed examples.

Insert / Upsert

# Vectors must come from an embedding model — never use fake/placeholder vectors
from pymilvus import model

embedding_fn = model.dense.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")

docs = ["AI advances in 2024", "ML basics for beginners"]
vectors = embedding_fn.encode_documents(docs)

data = [
    {"id": 1, "text": docs[0], "embedding": vectors[0]},
    {"id": 2, "text": docs[1], "embedding": vectors[1]},
]
client.insert(collection_name="my_collection", data=data)
client.upsert(collection_name="my_collection", data=data)

Search (vector similarity)

# Use the same embedding model to encode the query
query_vectors = embedding_fn.encode_queries(["What is artificial intelligence?"])

results = client.search(
    collection_name="my_collection",
    data=query_vectors,
    anns_field="embedding",
    limit=10,
    output_fields=["text", "id"],
    filter='age > 20 and status == "active"',
    search_params={"metric_type": "COSINE", "params": {"nprobe": 10}}
)

Query / Get / Delete

# Query by filter
client.query(collection_name="my_collection", filter='id in [1, 2, 3]', output_fields=["text"], limit=100)

# Get by primary key
client.get(collection_name="my_collection", ids=[1, 2, 3], output_fields=["text"])

# Delete
client.delete(collection_name="my_collection", ids=[1, 2, 3])
client.delete(collection_name="my_collection", filter='status == "obsolete"')
  • Never use fake or placeholder vectors (e.g., [0.1, 0.2, ...]). Always generate vectors from an embedding model.
  • Use pip install "pymilvus[model]" for built-in embedding functions, or use any embedding model (OpenAI, Cohere, etc.).
  • Vector dimension in search must match the collection schema exactly.
  • The query embedding model must be the same model used to generate the stored vectors.
  • For large inserts, batch data into chunks (e.g., 1000 rows per batch).
  • For large result sets, use iterators — see references/vector.md.

Index Management

See references/index.md for index types, metric types, and parameters.

index_params = client.prepare_index_params()
index_params.add_index(
    field_name="embedding",
    index_type="HNSW",
    metric_type="COSINE",
    params={"M": 16, "efConstruction": 256}
)
client.create_index(collection_name="my_collection", index_params=index_params)

client.list_indexes(collection_name="my_collection")
client.describe_index(collection_name="my_collection", index_name="my_index")
client.drop_index(collection_name="my_collection", index_name="my_index")
  • AUTOINDEX is recommended for most use cases.
  • An index is required before loading a collection.

Additional Features

| Feature | Reference | |---------|-----------| | Partition Management | references/partition.md | | Database Management | references/database.md | | User & Role Management (RBAC) | references/user-role.md | | Common Patterns (RAG, Semantic Search) | references/patterns.md |


General Guidance

  • Always ask the user for connection details (URI, token/credentials) before writing connection code. Never assume or hardcode connection parameters.
  • Never generate fake or placeholder vectors. Always use an embedding model to produce real vectors. Suggest pip install "pymilvus[model]" for built-in embedding functions.
  • For quick prototyping, use Milvus Lite (uri="./file.db") — no server needed, but only if the user explicitly requests local/embedded mode.
  • A collection must be loaded into memory before search/query.
  • The vector dimension in search data must exactly match the collection schema.
  • The query embedding model must be the same model used to generate the stored vectors.
  • Before any destructive operation (drop collection, drop database, delete vectors), always confirm with the user.
  • Use enable_dynamic_field=True when the schema may evolve.
  • Prefer AUTOINDEX unless the user has specific performance requirements.
  • Use truncate_collection to clear all data without dropping the collection.
  • For large datasets, use iterators (search_iterator, query_iterator) instead of increasing limit.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/milvus-vector-database-ms2s7br1' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/milvus-vector-database-ms2s7br1/download' --output '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md.part' && mv '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md.part' '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Environment declared by the author: Requires Python 3.8+ and pymilvus (pip install pymilvus). Runs on macOS and Linux.

Tools declared by the author (check availability in your agent): Bash Read Write

Original excerpt: Requirements
  • Python 3.8+
  • pymilvus (pip install pymilvus)
  • A running Milvus instance, or use Milvus Lite (embedded, file-based) for development

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md' && test -s '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/milvus' && cp -R '.skill-downloads/milvus-vector-database-ms2s7br1' '.claude/skills/milvus'

Cursor
test -f '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md' && test -s '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/milvus' && cp -R '.skill-downloads/milvus-vector-database-ms2s7br1' '.cursor/skills/milvus'

Codex
test -f '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md' && test -s '.skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/milvus' && cp -R '.skill-downloads/milvus-vector-database-ms2s7br1' '.agents/skills/milvus'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/milvus-vector-database-ms2s7br1'

openskills read 'milvus-vector-database-ms2s7br1'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/milvus-vector-database-ms2s7br1/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills