#![allow(clippy::uninlined_format_args)]
#![allow(clippy::field_reassign_with_default)]
#![allow(clippy::approx_constant)]
#![warn(missing_docs)]
#![warn(clippy::all)]
#[cfg(feature = "storage-adapters")]
pub mod adapters;
pub mod error;
pub mod eval;
#[cfg(feature = "graph-legacy")]
pub mod graph;
pub mod hybrid;
pub mod metrics;
#[cfg(feature = "persist")]
pub mod persist;
pub mod policy;
pub mod query_ir;
#[cfg(feature = "persist")]
pub mod replay;
pub mod search_config;
pub mod timeout;
#[cfg(feature = "persist")]
pub mod weights;
#[cfg(feature = "storage-adapters")]
pub use adapters::{StorageKeywordSearch, StorageVectorSearch};
pub use error::{ErrorKind, Result, RetrievalError};
#[cfg(feature = "graph-legacy")]
pub use graph::{
bfs_traverse, dfs_traverse, find_shortest_path, Direction, PathNode, TraversalOptions,
MAX_TRAVERSAL_DEPTH, MAX_TRAVERSAL_RESULTS,
};
pub use khive_bm25::{Bm25Config, Bm25Index, Bm25Stats, DocumentId, SearchContext};
pub use khive_fusion::{
fuse, normalize_weights, reciprocal_rank_fusion, weighted_fusion, weights_are_normalized,
FusionStrategy, DEFAULT_RRF_K,
};
pub use khive_hnsw::{
DistanceMetric, HnswCheckpointConfig, HnswConfig, HnswIndex, HnswSearchContext, HnswSnapshot,
NodeId, RebuildStats, TombstoneStats,
};
pub use hybrid::{
fuse_search_results, fuse_search_results_checked, DualIndexConfig, DualIndexRouter,
DualIndexStrategy, HybridConfig, HybridSearcher, KeywordSearch, Query, Reranker, VectorSearch,
};
#[cfg(feature = "checkpoint")]
pub use khive_hnsw::{HnswCheckpoint, HnswCheckpointStore};
pub use metrics::{MetricEvent, MetricValue, MetricsSink, NoopSink, RecordingSink};
#[cfg(feature = "persist")]
pub use persist::{
PersistError, PersistenceStats, RetrievalPersistence, ShadowMetrics, ShadowValidationConfig,
ShadowValidationResult,
};
pub use policy::{filter_by_policy, filter_by_predicate, ClearanceLevel, SearchPolicy};
pub use query_ir::{FilterPredicate, FuseStrategy, QueryNode, RerankMethod};
pub use search_config::SearchConfig;
pub use timeout::{
search_with_cancellation, search_with_deadline, search_with_optional_timeout,
search_with_timeout,
};
pub mod embed {
pub use lattice_embed::Result as EmbedResult;
pub use lattice_embed::{EmbedError, EmbeddingModel, EmbeddingService};
#[cfg(feature = "embed")]
pub use lattice_embed::{CachedEmbeddingService, NativeEmbeddingService};
}