Skip to main content

zvec_rust/
lib.rs

1//! Safe Rust bindings for the zvec vector database.
2//!
3//! Zvec is an open-source, in-process vector database — lightweight, lightning-fast,
4//! and designed to embed directly into applications. This Rust SDK wraps the zvec
5//! C-API to provide safe, idiomatic Rust access to all zvec functionality.
6//!
7//! ## Quick Start
8//!
9//! ```no_run
10//! use zvec_rust::*;
11//!
12//! fn main() -> zvec_rust::Result<()> {
13//!     initialize(None)?;
14//!
15//!     let schema = CollectionSchema::builder("example")
16//!         .add_field(FieldSchema::new("id", DataType::String, false, 0)?)
17//!         .add_vector_field("embedding", DataType::VectorFp32, 4,
18//!             IndexParams::hnsw(MetricType::Cosine, 16, 200)?)
19//!         .build()?;
20//!
21//!     let collection = Collection::create_and_open("./data", &schema, None)?;
22//!
23//!     let mut doc = Doc::new()?;
24//!     doc.set_pk("doc1");
25//!     doc.add_string("id", "doc1")?;
26//!     doc.add_vector_f32("embedding", &[0.1, 0.2, 0.3, 0.4])?;
27//!     collection.insert(&[&doc])?;
28//!
29//!     let query = SearchQuery::new("embedding", &[0.4, 0.3, 0.3, 0.1], 10)?;
30//!     let results = collection.query(&query)?;
31//!     for result in &results {
32//!         println!("PK={} Score={:.4}", result.get_pk().unwrap_or(""), result.get_score());
33//!     }
34//!
35//!     Ok(())
36//! }
37//! ```
38
39pub mod collection;
40pub mod config;
41pub mod doc;
42pub mod error;
43pub mod multi_query;
44pub mod query;
45pub mod schema;
46pub mod types;
47
48pub use collection::{
49    Collection, CollectionOptions, CollectionStats, DocIterator, DocWriteResult, IndexStat,
50    WriteResult,
51};
52pub use config::{
53    initialize, io_backend_description, io_backend_type, io_backend_type_name, is_initialized,
54    shutdown, version, ConfigBuilder,
55};
56pub use doc::Doc;
57pub use error::{Error, ErrorCode, Result};
58pub use multi_query::{MultiQuery, SubQuery};
59pub use query::{
60    DiskannQueryParams, FlatQueryParams, Fts, FtsQueryParams, GroupBySearchQuery, HnswQueryParams,
61    IvfQueryParams, IvfRabitqQueryParams, SearchQuery, SearchQueryBuilder,
62};
63pub use schema::{CollectionSchema, FieldSchema, IndexParams};
64pub use types::{DataType, DocOperator, IndexType, LogLevel, MetricType, QuantizeType};
65
66/// Re-export the raw FFI bindings for advanced users.
67pub use zvec_rust_sys as sys;
68
69/// Convenience prelude that re-exports the most commonly used types.
70///
71/// ```ignore
72/// use zvec_rust::prelude::*;
73/// ```
74pub mod prelude {
75    pub use crate::{
76        initialize, is_initialized, version, Collection, CollectionOptions, CollectionSchema,
77        CollectionStats, ConfigBuilder, DataType, Doc, DocIterator, Error, ErrorCode, FieldSchema,
78        IndexParams, IndexStat, MetricType, MultiQuery, QuantizeType, Result, SearchQuery,
79        SubQuery, WriteResult,
80    };
81}