Use a version of hannoy with basic filtering

This commit is contained in:
Kerollmops
2025-07-24 12:20:01 +02:00
parent bc1aa5af07
commit 5d22377c2f
3 changed files with 8 additions and 10 deletions

View File

@ -87,7 +87,7 @@ rhai = { version = "1.22.2", features = [
"no_time",
"sync",
] }
hannoy = { git = "https://github.com/kerollmops/hannoy", branch = "expose-private-types" }
hannoy = { git = "https://github.com/kerollmops/hannoy", branch = "basic-and-ugly-filtering" }
rand = "0.8.5"
tracing = "0.1.41"
ureq = { version = "2.12.1", features = ["json"] }

View File

@ -461,13 +461,12 @@ impl HannoyWrapper {
for reader in self.readers(rtxn, db) {
let reader = reader?;
let searcher = reader.nns(limit, limit * 2); // TODO find better ef
let mut searcher = reader.nns(limit, limit * 2); // TODO find better ef
if let Some(filter) = filter {
if reader.item_ids().is_disjoint(filter) {
continue;
}
tracing::error!("Hannoy doesn't support filtering");
// searcher.candidates(filter);
searcher.candidates(filter);
}
if let Some(mut ret) = searcher.by_item(rtxn, item)? {
@ -504,13 +503,12 @@ impl HannoyWrapper {
for reader in self.readers(rtxn, db) {
let reader = reader?;
let searcher = reader.nns(limit, limit * 2); // TODO find better ef
let mut searcher = reader.nns(limit, limit * 2); // TODO find better ef
if let Some(filter) = filter {
if reader.item_ids().is_disjoint(filter) {
continue;
}
tracing::error!("Hannoy doesn't support filtering");
// searcher.candidates(filter);
searcher.candidates(filter);
}
results.append(&mut searcher.by_vector(rtxn, vector)?);