mcpField
Z
zvec

zvec

github.com/zvec-aiData & databases21102 installsUpdated 29w ago
Repository

About zvec

zvec is a vector search library with Python and Node.js APIs for applications such as RAG, semantic, hybrid, and multimodal search. It supports dense and sparse vectors, typed fields, and index choices for different data scales.

Key features

  1. 01Python and Node.js APIs
  2. 02Dense and sparse vector support
  3. 03Single- and multi-vector search
  4. 04Hybrid search with scalar filters
  5. 05FLAT, HNSW, and IVF indexes

Use cases

  1. 01Retrieve documents for RAG systems
  2. 02Search text by semantic similarity
  3. 03Combine vector search with keyword and filter conditions
  4. 04Search images and text together

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/zvec-ai/zvec-agent-skills --skill zvec

After installing, type/zvecin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

api-cheatsheet.md
configuration.md
data-model.md
embedding.md
reranker.md
troubleshooting.md
collection-management/
python.md
typescript.md
data-operations/
python.md
typescript.md
hybrid-search/
python.md
typescript.md
multimodal-search/
python.md
typescript.md
quick-start/
python.md
typescript.md
rag-system/
python.md
typescript.md
vector-search/
python.md
typescript.md

Details

From the project README

Usage Instructions

Before starting, understand the following:
  1. Development Language: Python or Node.js?

    • Python: use pip install zvec
    • Node.js: use npm install @zvec/zvec
  2. Use Cases:

    • RAG document retrieval system
    • Semantic search
    • Multimodal search (image + text)
    • Hybrid search (keywords + semantic)
  3. 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 TypeCharacteristicsUse Case
FLATBrute force search, exact resultsSmall scale data (<100k)
HNSWApproximate nearest neighbor, graph structureLarge scale data (recommended default)
IVFInverted file indexVery large scale data

Available Topics

Python
Node.js
General

Available Topics

Python
Node.js
General

Comments

Markdown supported