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
- Configuration - Global configuration and initialization
- Data Model - Zvec data model overview
- Embedding - Text embedding functions (Python only)
- Reranker - Result reranking functions (Python only)
- API Cheatsheet - Python & Node.js API quick reference
- Troubleshooting - Common issues and solutions
Available Topics
Python
- Collection Management
- Data Operations
- Hybrid Search
- Multimodal Search
- Quick Start
- Rag System
- Vector Search
Node.js
- Collection Management
- Data Operations
- Hybrid Search
- Multimodal Search
- Quick Start
- Rag System
- Vector Search