Skip to main content

hermes_core/structures/
mod.rs

1//! Core data structures for indexing
2//!
3//! Organized into submodules:
4//! - `postings` - Posting list compression formats
5//! - `vector` - Vector indexing (RaBitQ, IVF-RaBitQ, ScaNN)
6//! - `simd` - SIMD utilities
7//! - `sstable` - SSTable for term dictionary
8
9pub mod postings;
10pub mod simd;
11mod sstable;
12mod sstable_index;
13pub mod vector;
14
15// Re-export postings
16pub use postings::{
17    BlockPostingIterator,
18    BlockPostingList,
19    // Sparse vector
20    BlockSparsePostingIterator,
21    BlockSparsePostingList,
22    // Posting common
23    COMMON_BLOCK_SIZE,
24    // Posting format
25    CompressedPostingIterator,
26    CompressedPostingList,
27    CompressionStats,
28    // Elias-Fano
29    EliasFano,
30    EliasFanoIterator,
31    EliasFanoPostingIterator,
32    EliasFanoPostingList,
33    // Horizontal BP128
34    HORIZONTAL_BP128_BLOCK_SIZE,
35    HorizontalBP128Block,
36    HorizontalBP128Iterator,
37    HorizontalBP128PostingList,
38    INLINE_THRESHOLD,
39    IndexOptimization,
40    IndexSize,
41    // Positions
42    MAX_ELEMENT_ORDINAL,
43    MAX_TOKEN_POSITION,
44    // OptP4D
45    OPT_P4D_BLOCK_SIZE,
46    OptP4DBlock,
47    OptP4DIterator,
48    OptP4DPostingList,
49    PARTITIONED_EF_THRESHOLD,
50    // Partitioned EF
51    PEF_BLOCK_SIZE,
52    PEFBlockInfo,
53    // Basic posting
54    POSTING_BLOCK_SIZE,
55    PartitionedEFPostingIterator,
56    PartitionedEFPostingList,
57    PartitionedEliasFano,
58    PositionPostingIterator,
59    PositionPostingList,
60    Posting,
61    PostingFormat,
62    PostingList,
63    PostingListIterator,
64    PostingWithPositions,
65    QueryWeighting,
66    // Roaring
67    ROARING_BLOCK_SIZE,
68    ROARING_THRESHOLD_RATIO,
69    // Rounded BP128
70    ROUNDED_BP128_BLOCK_SIZE,
71    RoaringBitmap,
72    RoaringBlockInfo,
73    RoaringIterator,
74    RoaringPostingIterator,
75    RoaringPostingList,
76    RoundedBP128Block,
77    RoundedBP128Iterator,
78    RoundedBP128PostingList,
79    RoundedBitWidth,
80    SMALL_BLOCK_SIZE,
81    SMALL_BLOCK_THRESHOLD,
82    SPARSE_BLOCK_SIZE,
83    SkipEntry,
84    SkipList,
85    SparseBlock,
86    SparseEntry,
87    SparsePosting,
88    SparsePostingIterator,
89    SparsePostingList,
90    SparseQueryConfig,
91    SparseSkipEntry,
92    SparseSkipList,
93    SparseVector,
94    SparseVectorConfig,
95    TERMINATED,
96    // Vertical BP128
97    VERTICAL_BP128_BLOCK_SIZE,
98    VerticalBP128Block,
99    VerticalBP128Iterator,
100    VerticalBP128PostingList,
101    WeightQuantization,
102    binary_search_block,
103    decode_element_ordinal,
104    decode_token_position,
105    encode_position,
106    pack_block,
107    pack_deltas_fixed,
108    pack_vertical,
109    read_doc_id_block,
110    read_vint,
111    unpack_block,
112    unpack_block_n,
113    unpack_deltas_fixed,
114    unpack_vertical,
115    write_doc_id_block,
116    write_vint,
117};
118
119// Re-export vector
120pub use vector::{
121    // IVF core
122    ClusterData,
123    ClusterStorage,
124    CoarseCentroids,
125    CoarseConfig,
126    // Quantization
127    DistanceTable,
128    // Indexes
129    IVFPQConfig,
130    IVFPQIndex,
131    IVFRaBitQConfig,
132    IVFRaBitQIndex,
133    MultiAssignment,
134    PQCodebook,
135    PQConfig,
136    PQVector,
137    QuantizedCode,
138    QuantizedQuery,
139    QuantizedVector,
140    Quantizer,
141    RaBitQCodebook,
142    RaBitQConfig,
143    RaBitQIndex,
144    SoarConfig,
145};
146
147// Re-export simd
148pub use simd::bits_needed;
149
150// Re-export sstable
151pub use sstable::{
152    AsyncSSTableIterator, AsyncSSTableReader, BLOCK_SIZE as SSTABLE_BLOCK_SIZE, BloomFilter,
153    SSTABLE_MAGIC, SSTableStats, SSTableValue, SSTableWriter, SSTableWriterConfig, SparseDimInfo,
154    TermInfo,
155};
156
157// Re-export sstable_index
158#[cfg(feature = "native")]
159pub use sstable_index::FstBlockIndex;
160pub use sstable_index::{BlockAddr, BlockAddrStore, BlockIndex, MmapBlockIndex};