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::{initialize, is_initialized, shutdown, version, ConfigBuilder};
53pub use doc::Doc;
54pub use error::{Error, ErrorCode, Result};
55pub use multi_query::{MultiQuery, SubQuery};
56pub use query::{
57    DiskannQueryParams, FlatQueryParams, Fts, FtsQueryParams, GroupBySearchQuery, HnswQueryParams,
58    IvfQueryParams, IvfRabitqQueryParams, SearchQuery, SearchQueryBuilder,
59};
60pub use schema::{CollectionSchema, FieldSchema, IndexParams};
61pub use types::{DataType, DocOperator, IndexType, LogLevel, MetricType, QuantizeType};
62
63/// Re-export the raw FFI bindings for advanced users.
64pub use zvec_rust_sys as sys;
65
66/// Convenience prelude that re-exports the most commonly used types.
67///
68/// ```ignore
69/// use zvec_rust::prelude::*;
70/// ```
71pub mod prelude {
72    pub use crate::{
73        initialize, is_initialized, version, Collection, CollectionOptions, CollectionSchema,
74        CollectionStats, ConfigBuilder, DataType, Doc, DocIterator, Error, ErrorCode, FieldSchema,
75        IndexParams, IndexStat, MetricType, MultiQuery, QuantizeType, Result, SearchQuery,
76        SubQuery, WriteResult,
77    };
78}