1#![warn(missing_docs)]
54#![cfg_attr(
56 test,
57 allow(
58 clippy::large_stack_arrays,
59 clippy::doc_markdown,
60 clippy::uninlined_format_args,
61 clippy::single_match_else,
62 clippy::cast_lossless,
63 clippy::manual_assert
64 )
65)]
66
67#[cfg(feature = "persistence")]
68pub mod agent;
69pub mod alloc_guard;
70#[cfg(test)]
71mod alloc_guard_tests;
72pub mod api_types;
73pub mod cache;
74pub mod collection;
78#[cfg(feature = "persistence")]
79pub mod column_store;
80#[cfg(all(test, feature = "persistence"))]
81mod column_store_tests;
82pub mod compression;
83pub mod config;
84pub mod config_quantization;
85#[cfg(test)]
86mod config_tests;
87mod config_validation;
88pub mod conformance;
90pub mod contiguous_ops;
91mod contiguous_resize;
92pub mod distance;
93#[cfg(test)]
94mod distance_tests;
95pub mod error;
96#[cfg(test)]
97mod error_tests;
98#[cfg(feature = "test-fault-injection")]
99pub mod fault_injection;
100pub mod filter;
101#[cfg(test)]
102mod filter_like_tests;
103#[cfg(test)]
104mod filter_tests;
105pub mod fusion;
106pub mod gpu;
107#[cfg(test)]
108mod gpu_tests;
109#[cfg(feature = "persistence")]
110pub mod guardrails;
111#[cfg(all(test, feature = "persistence"))]
112mod guardrails_tests;
113pub mod half_precision;
114#[cfg(test)]
115mod half_precision_tests;
116#[cfg(feature = "persistence")]
117pub mod index;
118#[cfg(feature = "internal-bench")]
119#[doc(hidden)]
120pub mod internal_bench;
121#[cfg(all(test, feature = "internal-bench"))]
122mod internal_bench_tests;
123pub mod lock_rank;
124pub mod metrics;
125#[cfg(test)]
126mod metrics_tests;
127pub mod perf_optimizations;
128#[cfg(test)]
129mod perf_optimizations_tests;
130pub mod point;
131#[cfg(test)]
132mod point_tests;
133pub mod quantization;
134#[cfg(test)]
135mod quantization_tests;
136pub mod scored_result;
137pub mod simd_dispatch;
138#[cfg(test)]
139mod simd_dispatch_tests;
140#[cfg(test)]
141mod simd_epic073_tests;
142pub mod sparse_index;
144pub mod simd_native;
146#[cfg(test)]
147mod simd_native_tests;
148#[cfg(target_arch = "aarch64")]
149pub mod simd_neon;
150#[cfg(target_arch = "aarch64")]
151pub mod simd_neon_prefetch;
152#[cfg(test)]
154mod simd_prefetch_x86_tests;
155#[cfg(test)]
156mod simd_tests;
157#[cfg(feature = "persistence")]
158pub mod storage;
159pub mod sync;
160#[cfg(all(test, feature = "persistence"))]
161mod test_fixtures;
162#[cfg(all(not(target_arch = "wasm32"), feature = "update-check"))]
163pub mod update_check;
164pub mod validation;
165pub mod vector_ref;
166#[cfg(test)]
167mod vector_ref_tests;
168pub mod velesql;
169pub mod wire;
171
172#[cfg(all(not(target_arch = "wasm32"), feature = "update-check"))]
173pub use update_check::{check_for_updates, spawn_update_check};
174#[cfg(all(not(target_arch = "wasm32"), feature = "update-check"))]
175pub use update_check::{compute_instance_hash, UpdateCheckConfig};
176
177#[cfg(feature = "persistence")]
178pub use index::{HnswIndex, HnswParams, SearchQuality, VectorIndex};
179
180#[cfg(feature = "persistence")]
181pub use collection::streaming::{BackpressureError, StreamIngester, StreamingConfig};
182#[cfg(feature = "persistence")]
183pub use collection::{
184 AnyCollection,
186 CollectionDiagnostics,
188 CollectionType,
190 EdgeType,
192 GraphCollection,
193 GraphEdge,
194 GraphNode,
195 GraphSchema,
196 IndexHealth,
198 IndexInfo,
199 MetadataCollection,
200 NodeType,
201 OrderByIndexState,
203 OrderByIndexSuggestion,
204 ScrollBatch,
206 TraversalConfig,
207 TraversalPath,
208 TraversalResult,
209 ValueType,
210 VectorCollection,
211 EXPIRES_AT_KEY,
213};
214pub use contiguous_ops::pad_to_simd_width;
215pub use distance::{DistanceMetric, CONDITION_TYPE_NAMES, DISTANCE_METRIC_NAMES};
216pub use error::{Error, Result};
217pub use filter::{Condition, Filter};
218pub use lock_rank::{assert_lock_order, LockRank};
219pub use point::{ComponentScores, Point, SearchResult};
220pub use quantization::{
221 cosine_similarity_quantized, cosine_similarity_quantized_simd, dot_product_quantized,
222 dot_product_quantized_simd, euclidean_squared_quantized, euclidean_squared_quantized_simd,
223 BinaryQuantizedVector, QuantizationCodec, QuantizedVector, StorageMode, STORAGE_MODE_NAMES,
224};
225pub use scored_result::ScoredResult;
226pub use validation::{
227 validate_collection_name, validate_dimension, validate_dimension_match,
228 MAX_COLLECTION_NAME_LENGTH, MAX_DIMENSION, MIN_DIMENSION,
229};
230pub use wire::stable_hash::{hash_edge_id, hash_id, hash_id_bytes};
239
240#[cfg(feature = "persistence")]
241pub use column_store::{
242 BatchUpdate, BatchUpdateResult, BatchUpsertResult, ColumnStore, ColumnStoreError, ColumnType,
243 ColumnValue, ExpireResult, StringId, StringTable, TypedColumn, UpsertResult,
244};
245pub use config::{
252 ConfigError, HnswConfig, LimitsConfig, QuantizationConfig, QuantizationType, SearchConfig,
253 SearchMode, VelesConfig,
254};
255#[cfg(feature = "persistence")]
256pub use config::{LoggingConfig, ServerConfig, StorageConfig};
257pub use fusion::{
258 FusionError, FusionStrategy, DEFAULT_WEIGHTED_AVG_WEIGHT, DEFAULT_WEIGHTED_HIT_WEIGHT,
259 DEFAULT_WEIGHTED_MAX_WEIGHT,
260};
261#[cfg(feature = "persistence")]
262pub use guardrails::QueryLimits;
263pub use metrics::{
264 average_metrics, compute_latency_percentiles, hit_rate, mean_average_precision, mrr, ndcg_at_k,
265 precision_at_k, recall_at_k, LatencyStats,
266};
267pub use metrics::{
268 DurationHistogram, GuardRailsMetrics, OperationalMetrics, QueryStats, TraversalMetrics,
269};
270
271#[cfg(feature = "persistence")]
272mod database;
273#[cfg(feature = "persistence")]
274pub mod observer;
275
276#[cfg(feature = "persistence")]
277pub use database::{Database, GatedRead};
278#[cfg(feature = "persistence")]
279pub use observer::DatabaseObserver;
280#[cfg(feature = "persistence")]
281pub use observer::{AccessDecision, AccessScope, QueryAccessContext, QueryOperationKind};
282#[cfg(feature = "persistence")]
283pub use storage::DurabilityMode;