manifoldb_vector/encoding/
mod.rs

1//! Key encoding for vector storage.
2//!
3//! This module provides key encoding for vector embeddings in storage backends.
4//! Keys are designed to support efficient prefix-based range scans.
5//!
6//! # Key Prefixes
7//!
8//! ## Embedding spaces (entity-based)
9//! - `0x10` - Embedding space metadata: `[0x10][space_name_hash]`
10//! - `0x11` - Entity embedding: `[0x11][space_name_hash][entity_id]`
11//! - `0x12` - Sparse embedding space metadata: `[0x12][space_name_hash]`
12//! - `0x13` - Sparse entity embedding: `[0x13][space_name_hash][entity_id]`
13//! - `0x14` - Multi-vector space metadata: `[0x14][space_name_hash]`
14//! - `0x15` - Multi-vector embedding: `[0x15][space_name_hash][entity_id]`
15//!
16//! ## Point collections (Qdrant-style)
17//! - `0x20` - Collection metadata: `[0x20][collection_name_hash]`
18//! - `0x21` - Point payload: `[0x21][collection_name_hash][point_id]`
19//! - `0x22` - Dense vector: `[0x22][collection_name_hash][point_id][vector_name_hash]`
20//! - `0x23` - Sparse vector: `[0x23][collection_name_hash][point_id][vector_name_hash]`
21//! - `0x24` - Multi-vector: `[0x24][collection_name_hash][point_id][vector_name_hash]`
22//!
23//! ## Inverted index (sparse vector index)
24//! - `0x30` - Posting list: `[0x30][collection_hash][vector_name_hash][token_id]`
25//! - `0x31` - Index metadata: `[0x31][collection_hash][vector_name_hash]`
26//! - `0x32` - Point tokens: `[0x32][collection_hash][vector_name_hash][point_id]`
27//!
28//! ## Collection vectors (entity-to-vector mapping)
29//! - `0x40` - Collection vector: `[0x40][collection_id][entity_id][vector_name_hash]`
30//!
31//! All numeric values are encoded in big-endian format to preserve sort order.
32
33mod collection_vector_keys;
34mod inverted_keys;
35mod keys;
36mod point_keys;
37
38pub use keys::{
39    // Dense embeddings
40    decode_embedding_entity_id,
41    decode_embedding_key,
42    decode_embedding_space_key,
43    // Sparse embeddings
44    decode_sparse_embedding_entity_id,
45    decode_sparse_embedding_key,
46    decode_sparse_embedding_space_key,
47    encode_embedding_key,
48    encode_embedding_prefix,
49    encode_embedding_space_key,
50    encode_sparse_embedding_key,
51    encode_sparse_embedding_prefix,
52    encode_sparse_embedding_space_key,
53    hash_name,
54    EmbeddingKey,
55    SparseEmbeddingKey,
56    PREFIX_EMBEDDING,
57    PREFIX_EMBEDDING_SPACE,
58    PREFIX_MULTI_VECTOR,
59    PREFIX_MULTI_VECTOR_SPACE,
60    PREFIX_SPARSE_EMBEDDING,
61    PREFIX_SPARSE_EMBEDDING_SPACE,
62};
63
64pub use point_keys::{
65    // Collection keys
66    decode_collection_key,
67    // Dense vector keys
68    decode_dense_vector_key,
69    // Multi-vector keys
70    decode_multi_vector_key,
71    // Point payload keys
72    decode_point_payload_key,
73    decode_point_payload_point_id,
74    // Sparse vector keys
75    decode_sparse_vector_key,
76    encode_collection_key,
77    encode_collection_prefix,
78    encode_dense_vector_collection_prefix,
79    encode_dense_vector_key,
80    encode_dense_vector_point_prefix,
81    encode_multi_vector_collection_prefix,
82    encode_multi_vector_key,
83    encode_multi_vector_point_prefix,
84    encode_point_payload_key,
85    encode_point_payload_prefix,
86    encode_sparse_vector_collection_prefix,
87    encode_sparse_vector_key,
88    encode_sparse_vector_point_prefix,
89    CollectionKey,
90    DenseVectorKey,
91    MultiVectorKey,
92    PointPayloadKey,
93    SparseVectorKey,
94    PREFIX_COLLECTION,
95    PREFIX_POINT_DENSE_VECTOR,
96    PREFIX_POINT_MULTI_VECTOR,
97    PREFIX_POINT_PAYLOAD,
98    PREFIX_POINT_SPARSE_VECTOR,
99};
100
101pub use inverted_keys::{
102    decode_inverted_meta_key, decode_point_tokens_key, decode_posting_key,
103    encode_inverted_meta_collection_prefix, encode_inverted_meta_key,
104    encode_point_tokens_collection_prefix, encode_point_tokens_key, encode_point_tokens_prefix,
105    encode_posting_collection_prefix, encode_posting_key, encode_posting_prefix, InvertedMetaKey,
106    PointTokensKey, PostingKey, PREFIX_INVERTED_META, PREFIX_POINT_TOKENS, PREFIX_POSTING,
107};
108
109pub use collection_vector_keys::{
110    decode_collection_vector_entity_id, decode_collection_vector_key, encode_collection_vector_key,
111    encode_collection_vector_prefix, encode_entity_vector_prefix, CollectionVectorKey,
112    PREFIX_COLLECTION_VECTOR,
113};