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
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
InvertIndexParam index 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 identifier
vectors: 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
Node.js
General
Available Topics
Python
Node.js
General
1---2name: zvec-23description: 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.4---56## Usage Instructions78### Before starting, understand the following:9101. **Development Language**: Python or Node.js?11 - Python: use `pip install zvec`12 - Node.js: use `npm install @zvec/zvec`13142. **Use Cases**:15 - RAG document retrieval system16 - Semantic search17 - Multimodal search (image + text)18 - Hybrid search (keywords + semantic)19203. **Data Scale**:21 - < 100k: use FLAT index (exact search)22 - 100k-10M: use HNSW index (recommended default)23 - > 10M: use IVF index (memory optimized)2425### Decision Workflow2627- User needs vector search functionality28 - Choose development language (Python/Node.js)29 - Determine use case30 - RAG system → use single-vector search + document chunk management31 - E-commerce search → use hybrid search (vector + filter)32 - Multimodal → use multi-vector search + weighted ranking33 - Design Schema (vector fields + scalar fields)34 - Select index type (HNSW/FLAT/IVF)35 - Implement data synchronization strategy3637### Default Recommendations3839- Use `create_and_open()` / `ZVecCreateAndOpen()` to create Collection40- Use cosine similarity (COSINE) as default distance metric41- Use FP32 type for dense vectors42- Create `InvertIndexParam` index for filter fields4344### Validation Checklist4546- Vector dimensions match Schema definition47- Scalar field types are correct48- Filter condition syntax is correct49- Call `optimize()` after large batch writes5051## Quick Start5253**Python:**5455```python56import zvec5758# Create Collection59schema = zvec.CollectionSchema(60 name="my_collection",61 fields=[62 zvec.FieldSchema(name="title", data_type=zvec.DataType.STRING),63 ],64 vectors=[65 zvec.VectorSchema(66 name="embedding",67 data_type=zvec.DataType.VECTOR_FP32,68 dimension=768,69 index_param=zvec.HnswIndexParam(70 metric_type=zvec.MetricType.COSINE71 ),72 ),73 ],74)7576collection = zvec.create_and_open("./my_data", schema)7778# Insert document79collection.upsert(zvec.Doc(80 id="doc_1",81 vectors={"embedding": [0.1] * 768},82 fields={"title": "Hello World"},83))8485# Search86results = collection.query(87 vectors=zvec.VectorQuery(88 field_name="embedding",89 vector=[0.1] * 768,90 ),91 topk=10,92)93```9495**Node.js:**9697```typescript98import { ZVecCreateAndOpen, ZVecCollectionSchema, ZVecFieldSchema, ZVecVectorSchema, ZVecDataType, ZVecHnswIndexParams, ZVecMetricType } from "@zvec/zvec";99100const schema = new ZVecCollectionSchema({101 name: "my_collection",102 fields: [new ZVecFieldSchema({ name: "title", dataType: ZVecDataType.STRING })],103 vectors: [new ZVecVectorSchema({104 name: "embedding",105 dataType: ZVecDataType.VECTOR_FP32,106 dimension: 768,107 indexParams: new ZVecHnswIndexParams({ metricType: ZVecMetricType.COSINE }),108 })],109});110111const collection = ZVecCreateAndOpen("./my_data", schema);112```113114## Core Concepts115116### Data Model117118**Collection**119- Similar to a table in relational databases, a container for storing, organizing, and querying data120- Each Collection has a Schema defining its structure121- Each Collection is independently persisted in a dedicated directory on disk122123**Document**124- Basic unit of data storage, similar to a row in a relational table125- Contains three core components:126 - `id`: unique string identifier127 - `vectors`: named vector collection (supports dense and sparse vectors)128 - `fields`: named scalar field collection129130**Schema**131- Dynamic Schema: scalar fields and vectors can be added or removed at any time132- Strong type system: each field must declare a DataType133134### Vector Types135136**Dense Vector**137- Fixed-length real-valued embeddings138- Types: `VECTOR_FP16`, `VECTOR_FP32`, `VECTOR_INT8`139- Suitable for: semantic understanding, context capture140141**Sparse Vector**142- High-dimensional representation with only a few non-zero dimensions143- Types: `SPARSE_VECTOR_FP32`, `SPARSE_VECTOR_FP16`144- Suitable for: keyword matching, BM25 scoring145146### Index Types147148| Index Type | Characteristics | Use Case |149|---------|------|---------|150| **FLAT** | Brute force search, exact results | Small scale data (<100k) |151| **HNSW** | Approximate nearest neighbor, graph structure | Large scale data (recommended default) |152| **IVF** | Inverted file index | Very large scale data |153154## Available Topics155156### Python157158- [Quick Start](./quick-start/python.md) - Quick start with Zvec Python API159- [Collection Management](./collection-management/python.md) - Create, open, and manage Collections160- [Data Operations](./data-operations/python.md) - Insert, update, and delete documents161- [Vector Search](./vector-search/python.md) - Single-vector, multi-vector, and hybrid search162- [RAG System](./rag-system/python.md) - Build document retrieval system163- [Hybrid Search](./hybrid-search/python.md) - Vector similarity + scalar filtering164- [Multimodal Search](./multimodal-search/python.md) - Image + text joint search165166### Node.js167168- [Quick Start](./quick-start/typescript.md) - Quick start with Zvec Node.js API169- [Collection Management](./collection-management/typescript.md) - Create, open, and manage Collections170- [Data Operations](./data-operations/typescript.md) - Insert, update, and delete documents171- [Vector Search](./vector-search/typescript.md) - Single-vector, multi-vector, and hybrid search172- [RAG System](./rag-system/typescript.md) - Build document retrieval system173- [Hybrid Search](./hybrid-search/typescript.md) - Vector similarity + scalar filtering174- [Multimodal Search](./multimodal-search/typescript.md) - Image + text joint search175176### General177178- [Configuration](./configuration.md) - Global configuration and initialization179- [Data Model](./data-model.md) - Zvec data model overview180- [Embedding](./embedding.md) - Text embedding functions (Python only)181- [Reranker](./reranker.md) - Result reranking functions (Python only)182- [API Cheatsheet](./api-cheatsheet.md) - Python & Node.js API quick reference183- [Troubleshooting](./troubleshooting.md) - Common issues and solutions184185## Available Topics186187### Python188189- [Collection Management](./collection-management/python.md)190- [Data Operations](./data-operations/python.md)191- [Hybrid Search](./hybrid-search/python.md)192- [Multimodal Search](./multimodal-search/python.md)193- [Quick Start](./quick-start/python.md)194- [Rag System](./rag-system/python.md)195- [Vector Search](./vector-search/python.md)196197### Node.js198199- [Collection Management](./collection-management/typescript.md)200- [Data Operations](./data-operations/typescript.md)201- [Hybrid Search](./hybrid-search/typescript.md)202- [Multimodal Search](./multimodal-search/typescript.md)203- [Quick Start](./quick-start/typescript.md)204- [Rag System](./rag-system/typescript.md)205- [Vector Search](./vector-search/typescript.md)206207### General208209- [Configuration](./configuration.md)210- [Data Model](./data-model.md)211- [Embedding](./embedding.md)212- [Reranker](./reranker.md)213- [Api Cheatsheet](./api-cheatsheet.md)214- [Troubleshooting](./troubleshooting.md)