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