#![allow(clippy::uninlined_format_args)]
#![allow(clippy::approx_constant)]
#![warn(missing_docs)]
#![warn(clippy::all)]
#[cfg(feature = "storage-adapters")]
pub mod adapters;
#[cfg(feature = "ann")]
#[doc(hidden)]
pub mod ann;
pub mod error;
pub mod eval;
pub mod hit;
pub mod hybrid;
pub mod materialization;
pub mod policy;
pub mod search_config;
pub mod timeout;
#[cfg(feature = "storage-adapters")]
pub use adapters::{StorageKeywordSearch, StorageVectorSearch};
pub use error::{ErrorKind, Result, RetrievalError};
pub use hit::{HybridSearchOutcome, RankScoreKind, SearchHit, SearchSignals, SearchSource};
#[cfg(feature = "bm25")]
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,
};
#[cfg(feature = "hnsw")]
pub use khive_hnsw::{
DistanceMetric, HnswCheckpointConfig, HnswConfig, HnswIndex, HnswSearchContext, HnswSnapshot,
NodeId, RebuildStats, TombstoneStats,
};
pub use hybrid::{
fuse_search_results, fuse_search_results_checked, HybridConfig, HybridSearcher,
IdentityReranker, KeywordSearch, Query, Reranker, VectorSearch,
};
#[cfg(feature = "checkpoint")]
pub use khive_hnsw::{HnswCheckpoint, HnswCheckpointStore};
#[cfg(feature = "native-rerank")]
pub use hybrid::{CrossEncoderScorer, NativeCrossEncoderReranker, RerankDocumentResolver};
pub use materialization::{
materialize_ranked_prefix, DropCounts, DropDiagnostic, DropReason, MaterializationDecision,
MaterializationError, MaterializationLimitError, MaterializationLimits, MaterializedItem,
MaterializedPrefix, RankedCandidate, MAX_MATERIALIZATION_CANDIDATES,
MAX_MATERIALIZATION_DIAGNOSTICS, MAX_MATERIALIZATION_DROP_REASONS,
MAX_MATERIALIZATION_LOADER_BATCH, MAX_MATERIALIZATION_OUTPUTS,
};
pub use policy::{filter_by_policy, filter_by_predicate, ClearanceLevel, SearchPolicy};
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};
}