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