Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ always_equal = { path = "./crates/always_equal" }
distance = { path = "./crates/distance" }
feistel = { path = "./crates/feistel" }
index = { path = "./crates/index" }
index_accessor = { path = "./crates/index_accessor" }
k_means = { path = "./crates/k_means" }
rabitq = { path = "./crates/rabitq" }
simd = { path = "./crates/simd" }
Expand Down
1 change: 0 additions & 1 deletion crates/index/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ publish = false
always_equal = { path = "../always_equal" }
distance = { path = "../distance" }
rabitq = { path = "../rabitq" }
simd = { path = "../simd" }
small_iter = { path = "../small_iter" }
vector = { path = "../vector" }

Expand Down
2 changes: 1 addition & 1 deletion crates/index/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
//
// Copyright (c) 2025 TensorChord Inc.

pub mod accessor;
// pub mod accessor;
pub mod bump;
pub mod fetch;
pub mod packed;
Expand Down
17 changes: 17 additions & 0 deletions crates/index_accessor/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[package]
name = "index_accessor"
version.workspace = true
edition.workspace = true
publish = false

[lib]
path = "../index/src/accessor.rs"

[dependencies]
distance = { path = "../distance" }
rabitq = { path = "../rabitq" }
simd = { path = "../simd" }
vector = { path = "../vector" }

[lints]
workspace = true
1 change: 1 addition & 0 deletions crates/vchordg/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ publish = false
always_equal = { path = "../always_equal" }
distance = { path = "../distance" }
index = { path = "../index" }
index_accessor = { path = "../index_accessor" }
rabitq = { path = "../rabitq" }
simd = { path = "../simd" }
vector = { path = "../vector" }
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordg/src/insert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ use crate::types::DistanceKind;
use crate::vectors::{by_prefetch, by_read, copy_all, copy_nothing, copy_outs, update};
use crate::visited::Visited;
use always_equal::AlwaysEqual;
use index::accessor::{DefaultWithDimension, LAccess};
use index::bump::Bump;
use index::prefetcher::{Prefetcher, PrefetcherSequenceFamily};
use index::relation::{Page, PageGuard, RelationRead, RelationWrite};
use index_accessor::{DefaultWithDimension, LAccess};
use rabitq::bits::Bits;
use std::cmp::Reverse;
use std::collections::VecDeque;
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordg/src/maintain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ use crate::tuples::{MetaTuple, VertexTuple, WithReader};
use crate::types::DistanceKind;
use crate::vectors::{by_read, copy_all, copy_nothing, copy_outs, update};
use always_equal::AlwaysEqual;
use index::accessor::DefaultWithDimension;
use index::relation::{Page, PageGuard, RelationRead, RelationWrite};
use index_accessor::DefaultWithDimension;
use std::cmp::Reverse;
use vector::VectorOwned;

Expand Down
2 changes: 1 addition & 1 deletion crates/vchordg/src/operator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

use crate::types::DistanceKind;
use distance::Distance;
use index::accessor::{
use index_accessor::{
Accessor1, Accessor2, ByteDistanceAccessor, DefaultWithDimension, DistanceAccessor, Dot,
HalfbyteDistanceAccessor, L2S,
};
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordg/src/search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ use crate::vectors::{by_prefetch, copy_outs};
use crate::visited::Visited;
use always_equal::AlwaysEqual;
use distance::Distance;
use index::accessor::{DefaultWithDimension, LAccess};
use index::bump::Bump;
use index::prefetcher::{Prefetcher, PrefetcherSequenceFamily};
use index::relation::{Page, RelationRead};
use index_accessor::{DefaultWithDimension, LAccess};
use rabitq::bits::Bits;
use std::cmp::Reverse;
use std::collections::VecDeque;
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordg/src/vectors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
use crate::operator::{Operator, Vector};
use crate::tuples::*;
use distance::Distance;
use index::accessor::Accessor1;
use index::relation::{Page, RelationRead, RelationWrite};
use index_accessor::Accessor1;
use std::collections::VecDeque;
use std::num::{NonZero, Wrapping};

Expand Down
1 change: 1 addition & 0 deletions crates/vchordrq/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ publish = false
always_equal = { path = "../always_equal" }
distance = { path = "../distance" }
index = { path = "../index" }
index_accessor = { path = "../index_accessor" }
rabitq = { path = "../rabitq" }
simd = { path = "../simd" }
vector = { path = "../vector" }
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/bulkdelete.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ use crate::operator::Operator;
use crate::tape::by_next;
use crate::tuples::*;
use crate::{Opaque, tape};
use index::accessor::FunctionalAccessor;
use index::relation::{Page, RelationRead, RelationWrite};
use index_accessor::FunctionalAccessor;
use std::num::NonZero;

pub fn bulkdelete<R: RelationRead + RelationWrite, O: Operator>(
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
use crate::closure_lifetime_binder::{id_0, id_1};
use crate::tuples::{MetaTuple, WithReader};
use crate::{Opaque, tape};
use index::accessor::FunctionalAccessor;
use index::relation::{Page, PageGuard, RelationRead};
use index_accessor::FunctionalAccessor;

pub fn cache<R: RelationRead>(index: &R, level: i32) -> Vec<u32>
where
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/centroids.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

use crate::operator::*;
use crate::tuples::*;
use index::accessor::Accessor1;
use index::relation::{Page, RelationRead};
use index_accessor::Accessor1;

pub fn read<
'a,
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/insert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ use crate::tuples::*;
use crate::{Opaque, centroids, tape, vectors};
use always_equal::AlwaysEqual;
use distance::Distance;
use index::accessor::{DefaultWithDimension, FunctionalAccessor, LAccess};
use index::bump::Bump;
use index::fetch::BorrowedIter;
use index::prefetcher::{Prefetcher, PrefetcherHeapFamily};
use index::relation::{Page, RelationRead, RelationWrite};
use index_accessor::{DefaultWithDimension, FunctionalAccessor, LAccess};
use std::cmp::Reverse;
use std::collections::BinaryHeap;
use std::num::NonZero;
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/maintain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ use crate::operator::{Operator, Vector};
use crate::tape_writer::{DirectoryTapeWriter, FrozenTapeWriter};
use crate::tuples::*;
use crate::{Branch, Opaque, freepages, tape};
use index::accessor::FunctionalAccessor;
use index::prefetcher::PrefetcherSequenceFamily;
use index::relation::{
Page, PageGuard, Relation, RelationRead, RelationReadTypes, RelationWrite, RelationWriteTypes,
};
use index_accessor::FunctionalAccessor;
use rabitq::packing::unpack;
use std::cell::RefCell;

Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/operator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
// Copyright (c) 2025 TensorChord Inc.

use distance::Distance;
use index::accessor::{
use index_accessor::{
Accessor1, Accessor2, ByteDistanceAccessor, DefaultWithDimension, DistanceAccessor, Dot,
HalfbyteDistanceAccessor, L2S, RAccess,
};
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/prewarm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ use crate::operator::Operator;
use crate::tape::{by_directory, by_next};
use crate::tuples::*;
use crate::{Opaque, centroids, tape};
use index::accessor::FunctionalAccessor;
use index::prefetcher::PrefetcherSequenceFamily;
use index::relation::{Page, RelationRead};
use index_accessor::FunctionalAccessor;
use std::fmt::Write;

pub fn prewarm<'b, R: RelationRead, O: Operator>(
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/rerank.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ use crate::tuples::{MetaTuple, WithReader};
use crate::{RerankMethod, vectors};
use always_equal::AlwaysEqual;
use distance::Distance;
use index::accessor::{Accessor2, DefaultWithDimension, LTryAccess};
use index::fetch::BorrowedIter;
use index::packed::PackedRefMut;
use index::prefetcher::Prefetcher;
use index::relation::{Page, RelationRead};
use index_accessor::{Accessor2, DefaultWithDimension, LTryAccess};
use std::cmp::Reverse;
use std::collections::BinaryHeap;
use std::marker::PhantomData;
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ use crate::tuples::*;
use crate::{Opaque, centroids, tape};
use always_equal::AlwaysEqual;
use distance::Distance;
use index::accessor::{DefaultWithDimension, FunctionalAccessor, LAccess};
use index::bump::Bump;
use index::fetch::BorrowedIter;
use index::packed::{PackedRefMut4, PackedRefMut8};
use index::prefetcher::{Prefetcher, PrefetcherHeapFamily, PrefetcherSequenceFamily};
use index::relation::{Page, RelationRead};
use index_accessor::{DefaultWithDimension, FunctionalAccessor, LAccess};
use std::cmp::Reverse;
use std::collections::BinaryHeap;
use std::num::NonZero;
Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/tape.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@

use crate::tuples::*;
use crate::{Opaque, freepages};
use index::accessor::Accessor1;
use index::prefetcher::{Prefetcher, PrefetcherSequenceFamily};
use index::relation::{Page, PageGuard, RelationRead, RelationWrite};
use index_accessor::Accessor1;
use std::marker::PhantomData;
use std::num::NonZero;

Expand Down
2 changes: 1 addition & 1 deletion crates/vchordrq/src/vectors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
use crate::operator::*;
use crate::tuples::*;
use crate::{Opaque, tape};
use index::accessor::TryAccessor1;
use index::relation::{Page, PageGuard, RelationRead, RelationWrite};
use index_accessor::TryAccessor1;
use std::num::NonZero;
use vector::VectorOwned;

Expand Down
2 changes: 1 addition & 1 deletion src/index/vchordg/am/am_build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,7 @@ unsafe fn options(
v: opfamily.vector_kind(),
d: opfamily.distance_kind(),
};
// get indexing, segment, optimizing
// get indexing options
let indexing_options = {
let reloption = unsafe { (*index_relation).rd_options as *const Reloption };
let s = unsafe { Reloption::options(reloption, c"") }.to_string_lossy();
Expand Down
2 changes: 1 addition & 1 deletion src/index/vchordg/dispatch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
// Copyright (c) 2025 TensorChord Inc.

use crate::index::vchordg::opclass::Opfamily;
use index::accessor::{Dot, L2S};
use index::fetch::Fetch;
use index::prefetcher::*;
use index::relation::{
Hints, Page, RelationPrefetch, RelationRead, RelationReadStream, RelationWrite,
};
use index_accessor::{Dot, L2S};
use simd::f16;
use std::num::NonZero;
use vchordg::operator::Op;
Expand Down
2 changes: 1 addition & 1 deletion src/index/vchordg/scanners/default.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ use crate::index::vchordg::opclass::Opfamily;
use crate::index::vchordg::scanners::SearchOptions;
use crate::recorder::{Recorder, text};
use distance::Distance;
use index::accessor::{Dot, L2S};
use index::bump::Bump;
use index::relation::{Hints, Page, RelationPrefetch, RelationRead, RelationReadStream};
use index_accessor::{Dot, L2S};
use simd::f16;
use std::num::NonZero;
use vchordg::operator::{self};
Expand Down
2 changes: 1 addition & 1 deletion src/index/vchordrq/am/am_build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1245,7 +1245,7 @@ unsafe fn options(
v: opfamily.vector_kind(),
d: opfamily.distance_kind(),
};
// get indexing, segment, optimizing
// get indexing options
let indexing_options = {
let reloption = unsafe { (*index_relation).rd_options as *const Reloption };
let s = unsafe { Reloption::options(reloption, c"") }.to_string_lossy();
Expand Down
11 changes: 1 addition & 10 deletions src/index/vchordrq/am/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -401,15 +401,6 @@ pub unsafe extern "C-unwind" fn aminsert(
_check_unique: pgrx::pg_sys::IndexUniqueCheck::Type,
_index_unchanged: bool,
_index_info: *mut pgrx::pg_sys::IndexInfo,
) -> bool {
unsafe { aminsertinner(index_relation, values, is_null, heap_tid) }
}

unsafe fn aminsertinner(
index_relation: pgrx::pg_sys::Relation,
values: *mut Datum,
is_null: *mut bool,
ctid: pgrx::pg_sys::ItemPointer,
) -> bool {
struct RngChooser<T>(T);
impl<T: RngExt> InsertChooser for RngChooser<T> {
Expand All @@ -421,7 +412,7 @@ unsafe fn aminsertinner(
let opfamily = unsafe { opfamily(index_relation) };
let index = unsafe { PostgresRelation::new(index_relation) };
let datum = unsafe { (!is_null.add(0).read()).then_some(values.add(0).read()) };
let ctid = unsafe { ctid.read() };
let ctid = unsafe { heap_tid.read() };
if let Some(store) = unsafe { datum.and_then(|x| opfamily.store(x)) } {
for (vector, extra) in store {
let key = ctid_to_key(ctid);
Expand Down
2 changes: 1 addition & 1 deletion src/index/vchordrq/dispatch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@

use crate::index::vchordrq::build::{Normalize, Normalized};
use crate::index::vchordrq::opclass::Opfamily;
use index::accessor::{Dot, L2S};
use index::bump::Bump;
use index::fetch::Fetch;
use index::prefetcher::*;
use index::relation::{
Hints, Page, RelationPrefetch, RelationRead, RelationReadStream, RelationWrite,
};
use index_accessor::{Dot, L2S};
use simd::f16;
use std::collections::BinaryHeap;
use std::num::NonZero;
Expand Down
2 changes: 1 addition & 1 deletion src/index/vchordrq/scanners/default.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ use crate::index::vchordrq::scanners::SearchOptions;
use crate::recorder::{Recorder, text};
use always_equal::AlwaysEqual;
use dary_heap::QuaternaryHeap as Heap;
use index::accessor::{Dot, L2S};
use index::bump::Bump;
use index::packed::PackedRefMut4;
use index::prefetcher::*;
use index::relation::{Hints, Page, RelationPrefetch, RelationRead, RelationReadStream};
use index_accessor::{Dot, L2S};
use simd::f16;
use std::num::NonZero;
use vchordrq::types::{DistanceKind, OwnedVector, VectorKind};
Expand Down
2 changes: 1 addition & 1 deletion src/index/vchordrq/scanners/maxsim.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ use crate::recorder::Recorder;
use always_equal::AlwaysEqual;
use dary_heap::QuaternaryHeap as Heap;
use distance::Distance;
use index::accessor::Dot;
use index::bump::Bump;
use index::packed::PackedRefMut8;
use index::prefetcher::*;
use index::relation::{Hints, Page, RelationPrefetch, RelationRead, RelationReadStream};
use index_accessor::Dot;
use simd::f16;
use std::cmp::Reverse;
use std::collections::BinaryHeap;
Expand Down
Loading