Zvec
Official AI Agent skills for building with Zvec vector database
npx -y skills add zvec-ai/zvec-agent-skills --skill zvecAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Zvec vector database development assistant. Use this skill when users need to develop vector search applications based on zvec, build RAG systems, implement semantic search, or handle vector data storage and querying. Suitable for Python and Node.js development environments, providing complete technical guidance from basic concepts to advanced usage. Proactively use this skill when users mention vector databases, similarity search, embedding storage, HNSW/IVF indexes, hybrid search, multi-vector queries, or zvec API usage.
SKILL.md
6.2 KB, as published. Nobody here has run it
Usage Instructions
Before starting, understand the following:
-
Development Language: Python or Node.js?
- Python: use
pip install zvec - Node.js: use
npm install @zvec/zvec
- Python: use
-
Use Cases:
- RAG document retrieval system
- Semantic search
- Multimodal search (image + text)
- Hybrid search (keywords + semantic)
-
Data Scale:
- < 100k: use FLAT index (exact search)
- 100k-10M: use HNSW index (recommended default)
-
10M: use IVF index (memory optimized)
Decision Workflow
- User needs vector search functionality
- Choose development language (Python/Node.js)
- Determine use case
- RAG system → use single-vector search + document chunk management
- E-commerce search → use hybrid search (vector + filter)
- Multimodal → use multi-vector search + weighted ranking
- Design Schema (vector fields + scalar fields)
- Select index type (HNSW/FLAT/IVF)
- Implement data synchronization strategy
Default Recommendations
- Use
create_and_open()/ZVecCreateAndOpen()to create Collection - Use cosine similarity (COSINE) as default distance metric
- Use FP32 type for dense vectors
- Create
InvertIndexParamindex for filter fields
Validation Checklist
- Vector dimensions match Schema definition
- Scalar field types are correct
- Filter condition syntax is correct
- Call
optimize()after large batch writes
Quick Start
Python:
import zvec
# Create Collection
schema = zvec.CollectionSchema(
name="my_collection",
fields=[
zvec.FieldSchema(name="title", data_type=zvec.DataType.STRING),
],
vectors=[
zvec.VectorSchema(
name="embedding",
data_type=zvec.DataType.VECTOR_FP32,
dimension=768,
index_param=zvec.HnswIndexParam(
metric_type=zvec.MetricType.COSINE
),
),
],
)
collection = zvec.create_and_open("./my_data", schema)
# Insert document
collection.upsert(zvec.Doc(
id="doc_1",
vectors={"embedding": [0.1] * 768},
fields={"title": "Hello World"},
))
# Search
results = collection.query(
vectors=zvec.VectorQuery(
field_name="embedding",
vector=[0.1] * 768,
),
topk=10,
)
Node.js:
import { ZVecCreateAndOpen, ZVecCollectionSchema, ZVecFieldSchema, ZVecVectorSchema, ZVecDataType, ZVecHnswIndexParams, ZVecMetricType } from "@zvec/zvec";
const schema = new ZVecCollectionSchema({
name: "my_collection",
fields: [new ZVecFieldSchema({ name: "title", dataType: ZVecDataType.STRING })],
vectors: [new ZVecVectorSchema({
name: "embedding",
dataType: ZVecDataType.VECTOR_FP32,
dimension: 768,
indexParams: new ZVecHnswIndexParams({ metricType: ZVecMetricType.COSINE }),
})],
});
const collection = ZVecCreateAndOpen("./my_data", schema);
Core Concepts
Data Model
Collection
- Similar to a table in relational databases, a container for storing, organizing, and querying data
- Each Collection has a Schema defining its structure
- Each Collection is independently persisted in a dedicated directory on disk
Document
- Basic unit of data storage, similar to a row in a relational table
- Contains three core components:
id: unique string identifiervectors: named vector collection (supports dense and sparse vectors)fields: named scalar field collection
Schema
- Dynamic Schema: scalar fields and vectors can be added or removed at any time
- Strong type system: each field must declare a DataType
Vector Types
Dense Vector
- Fixed-length real-valued embeddings
- Types:
VECTOR_FP16,VECTOR_FP32,VECTOR_INT8 - Suitable for: semantic understanding, context capture
Sparse Vector
- High-dimensional representation with only a few non-zero dimensions
- Types:
SPARSE_VECTOR_FP32,SPARSE_VECTOR_FP16 - Suitable for: keyword matching, BM25 scoring
Index Types
| Index Type | Characteristics | Use Case |
|---|---|---|
| FLAT | Brute force search, exact results | Small scale data (<100k) |
| HNSW | Approximate nearest neighbor, graph structure | Large scale data (recommended default) |
| IVF | Inverted file index | Very large scale data |
Available Topics
Python
- Quick Start - Quick start with Zvec Python API
- Collection Management - Create, open, and manage Collections
- Data Operations - Insert, update, and delete documents
- Vector Search - Single-vector, multi-vector, and hybrid search
- RAG System - Build document retrieval system
- Hybrid Search - Vector similarity + scalar filtering
- Multimodal Search - Image + text joint search
Node.js
- Quick Start - Quick start with Zvec Node.js API
- Collection Management - Create, open, and manage Collections
- Data Operations - Insert, update, and delete documents
- Vector Search - Single-vector, multi-vector, and hybrid search
- RAG System - Build document retrieval system
- Hybrid Search - Vector similarity + scalar filtering
- Multimodal Search - Image + text joint search
General
- Data Model - Zvec data model overview
- API Cheatsheet - Python & Node.js API quick reference
- Troubleshooting - Common issues and solutions