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}