1#![allow(clippy::uninlined_format_args)]
3#![allow(clippy::field_reassign_with_default)]
5#![allow(clippy::approx_constant)]
7
8#![warn(missing_docs)]
16#![warn(clippy::all)]
17
18#[cfg(feature = "storage-adapters")]
19pub mod adapters;
20#[cfg(feature = "ann")]
21#[doc(hidden)]
22pub mod ann;
23pub mod error;
24pub mod eval;
25pub mod hit;
26pub mod hybrid;
27pub mod materialization;
28pub mod metrics;
29#[cfg(feature = "persist")]
30pub mod persist;
31pub mod policy;
32pub mod query_ir;
33#[cfg(feature = "persist")]
34pub mod replay;
35pub mod search_config;
36pub mod timeout;
37#[cfg(feature = "persist")]
38pub mod weights;
39
40#[cfg(feature = "storage-adapters")]
42pub use adapters::{StorageKeywordSearch, StorageVectorSearch};
43
44pub use error::{ErrorKind, Result, RetrievalError};
46pub use hit::{HybridSearchOutcome, RankScoreKind, SearchHit, SearchSignals, SearchSource};
47
48#[cfg(feature = "bm25")]
49pub use khive_bm25::{Bm25Config, Bm25Index, Bm25Stats, DocumentId, SearchContext};
50pub use khive_fusion::{
51 fuse, normalize_weights, reciprocal_rank_fusion, weighted_fusion, weights_are_normalized,
52 FusionStrategy, DEFAULT_RRF_K,
53};
54#[cfg(feature = "hnsw")]
55pub use khive_hnsw::{
56 DistanceMetric, HnswCheckpointConfig, HnswConfig, HnswIndex, HnswSearchContext, HnswSnapshot,
57 NodeId, RebuildStats, TombstoneStats,
58};
59pub use hybrid::{
61 fuse_search_results, fuse_search_results_checked, DualIndexConfig, DualIndexRouter,
62 DualIndexStrategy, HybridConfig, HybridSearcher, IdentityReranker, KeywordSearch, Query,
63 Reranker, VectorSearch,
64};
65#[cfg(feature = "checkpoint")]
66pub use khive_hnsw::{HnswCheckpoint, HnswCheckpointStore};
67#[cfg(feature = "native-rerank")]
71pub use hybrid::{CrossEncoderScorer, NativeCrossEncoderReranker, RerankDocumentResolver};
72pub use materialization::{
73 materialize_ranked_prefix, DropCounts, DropDiagnostic, DropReason, MaterializationDecision,
74 MaterializationError, MaterializationLimitError, MaterializationLimits, MaterializedItem,
75 MaterializedPrefix, RankedCandidate, MAX_MATERIALIZATION_CANDIDATES,
76 MAX_MATERIALIZATION_DIAGNOSTICS, MAX_MATERIALIZATION_DROP_REASONS,
77 MAX_MATERIALIZATION_LOADER_BATCH, MAX_MATERIALIZATION_OUTPUTS,
78};
79pub use metrics::{MetricEvent, MetricValue, MetricsSink, NoopSink, RecordingSink};
80#[cfg(feature = "persist")]
81pub use persist::{
82 PersistError, PersistenceStats, RetrievalPersistence, ShadowMetrics, ShadowValidationConfig,
83 ShadowValidationResult,
84};
85pub use policy::{filter_by_policy, filter_by_predicate, ClearanceLevel, SearchPolicy};
86pub use query_ir::{FilterPredicate, FuseStrategy, QueryNode, RerankMethod};
87pub use search_config::SearchConfig;
88pub use timeout::{
89 search_with_cancellation, search_with_deadline, search_with_optional_timeout,
90 search_with_timeout,
91};
92
93pub mod embed {
95 pub use lattice_embed::Result as EmbedResult;
98 pub use lattice_embed::{EmbedError, EmbeddingModel, EmbeddingService};
99
100 #[cfg(feature = "embed")]
102 pub use lattice_embed::{CachedEmbeddingService, NativeEmbeddingService};
103}