Skip to main content

uqa_storage/sqlite/
vector_index.rs

1//
2// Unified Query Algebra
3//
4// Copyright (c) 2023-2026 Cognica, Inc.
5//
6
7//! SQLite-backed exact and IVF vector indexes.
8
9use std::sync::Arc;
10
11use rusqlite::params;
12use uqa_core::{DocId, Payload, PostingEntry, PostingList};
13
14use crate::sqlite::connection::{ManagedConnection, Result as SQLiteResult, SQLiteError};
15use crate::vector_index::{
16    cosine_similarity, select_top_k_scored, validate_vector_values, VectorIndex,
17};
18use crate::StorageBackendResult;
19
20mod brute_force;
21mod codec;
22mod hnsw;
23mod ivf;
24
25pub use brute_force::SQLiteVectorIndex;
26pub use hnsw::SQLiteHNSWIndex;
27pub use ivf::SQLiteIVFIndex;
28
29use codec::{
30    blob_to_vector, decode_doc_id, encode_doc_id, i64_to_usize, usize_to_u64,
31    validate_persisted_ordinal_sequence, validate_vector_ordinal_count, vector_to_blob,
32};
33
34type EncodedVector = (i64, Vec<u8>);
35type EncodedDocVectors = (i64, Vec<EncodedVector>);
36
37#[cfg(test)]
38mod tests;