Skip to main content

Crate zvec_rust

Crate zvec_rust 

Source
Expand description

Safe Rust bindings for the zvec vector database.

Zvec is an open-source, in-process vector database — lightweight, lightning-fast, and designed to embed directly into applications. This Rust SDK wraps the zvec C-API to provide safe, idiomatic Rust access to all zvec functionality.

§Quick Start

use zvec_rust::*;

fn main() -> zvec_rust::Result<()> {
    initialize(None)?;

    let schema = CollectionSchema::builder("example")
        .add_field(FieldSchema::new("id", DataType::String, false, 0)?)
        .add_vector_field("embedding", DataType::VectorFp32, 4,
            IndexParams::hnsw(MetricType::Cosine, 16, 200)?)
        .build()?;

    let collection = Collection::create_and_open("./data", &schema, None)?;

    let mut doc = Doc::new()?;
    doc.set_pk("doc1");
    doc.add_string("id", "doc1")?;
    doc.add_vector_f32("embedding", &[0.1, 0.2, 0.3, 0.4])?;
    collection.insert(&[&doc])?;

    let query = SearchQuery::new("embedding", &[0.4, 0.3, 0.3, 0.1], 10)?;
    let results = collection.query(&query)?;
    for result in &results {
        println!("PK={} Score={:.4}", result.get_pk().unwrap_or(""), result.get_score());
    }

    Ok(())
}

Re-exports§

pub use collection::Collection;
pub use collection::CollectionOptions;
pub use collection::CollectionStats;
pub use collection::DocIterator;
pub use collection::DocWriteResult;
pub use collection::IndexStat;
pub use collection::WriteResult;
pub use config::initialize;
pub use config::is_initialized;
pub use config::version;
pub use config::ConfigBuilder;
pub use doc::Doc;
pub use error::Error;
pub use error::ErrorCode;
pub use error::Result;
pub use multi_query::MultiQuery;
pub use multi_query::SubQuery;
pub use query::DiskannQueryParams;
pub use query::FlatQueryParams;
pub use query::Fts;
pub use query::FtsQueryParams;
pub use query::GroupBySearchQuery;
pub use query::HnswQueryParams;
pub use query::IvfQueryParams;
pub use query::IvfRabitqQueryParams;
pub use query::SearchQuery;
pub use query::SearchQueryBuilder;
pub use schema::CollectionSchema;
pub use schema::FieldSchema;
pub use schema::IndexParams;
pub use types::DataType;
pub use types::DocOperator;
pub use types::IndexType;
pub use types::LogLevel;
pub use types::MetricType;
pub use types::QuantizeType;
pub use zvec_rust_sys as sys;

Modules§

collection
config
doc
error
multi_query
Multi-query and sub-query types for combined vector searches.
prelude
Convenience prelude that re-exports the most commonly used types.
query
schema
types