Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
dcdc377
Make benchmarks stateful.
Apr 28, 2026
d60ac07
Checkpoint.
Apr 28, 2026
6cc92bd
Checkopint.
Apr 29, 2026
f050e3d
Oh boy.
Apr 29, 2026
2d03d11
Merge remote-tracking branch 'origin/main' into mhildebr/benchmark-pl…
May 1, 2026
aa78836
Fix delimiters.
May 1, 2026
ccf891a
Revert formatting.
May 1, 2026
2e060ea
Make plugins slightly more flexible.
May 1, 2026
7a85df8
Merge branch 'main' into mhildebr/benchmark-plugins
hildebrandmw May 1, 2026
fc8008a
Add determinant-diversity plugin support on search-plugin architecture
narendatha May 4, 2026
298d1b8
Integrate determinant-diversity via disk search_with post-processor
narendatha May 4, 2026
fbd34fd
Restrict determinant-diversity to async full-precision topk
narendatha May 4, 2026
851174e
Keep single async determinant-diversity example JSON
narendatha May 4, 2026
ed0c918
Improve plugin matching resilience via phase-shape helpers
narendatha May 5, 2026
3a6aa1a
Use SearchPhaseKind::as_str in benchmark plugin kinds
narendatha May 5, 2026
ccfe4d7
remove serde defaults
narendatha May 5, 2026
01e194d
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha May 5, 2026
86883b7
minor merge fix
narendatha May 5, 2026
554bc7f
hook up actual algorithm, replace placeholder.
narendatha May 5, 2026
8c59e6f
WIP: Trait bound experiment for async determinant-diversity - HRTB pr…
narendatha May 5, 2026
b73abc8
apply mark's beautiful fix for lifetime issue
narendatha May 6, 2026
d1884c3
Fix async determinant-diversity: wire real vectors, timing metrics, r…
narendatha May 6, 2026
701ce8e
Fix CI clippy-features spherical plugin errors and apply formatting
narendatha May 6, 2026
6b935d3
Add determinant-diversity support for async and disk-index benchmarks
narendatha May 6, 2026
6f47ba3
Merge branch 'u/narendatha/det_div_plugins' of https://github.com/mic…
narendatha May 6, 2026
8acbba2
imrpove code coverage
narendatha May 6, 2026
a48e255
minor fix
narendatha May 6, 2026
468b5d2
cargo fmt
narendatha May 6, 2026
d9e66ba
WIP: Benchmarks refactoring - threading fix, rich struct params, as_s…
narendatha May 13, 2026
9cda6e0
Add post-processor generic parameter to KNN struct in benchmark-core
narendatha May 13, 2026
8b07676
Task 5: Create unified validation struct for DeterminantDiversity in …
narendatha May 13, 2026
8ce2130
Task 6: Add module-level documentation to determinant_diversity_post_…
narendatha May 13, 2026
309ecb3
Task 7: Add algorithmic tests to determinant_diversity_post_process.rs
narendatha May 13, 2026
3be546a
Task 8: Merge similar routines in determinant_diversity_post_process.rs
narendatha May 13, 2026
f92c3be
Task 9: Replace Vec<Vec<f32>> with Matrix for residuals storage
narendatha May 13, 2026
10b0182
Task 10: Move determinant_diversity_post_process out of async_ module
narendatha May 13, 2026
ca20a24
Refactor determinant-diversity benchmark path
narendatha May 13, 2026
f538583
cargo fmt and clippy fixes for CI
narendatha May 13, 2026
f58789d
Use shared determinant-diversity params validation
narendatha May 18, 2026
79c635f
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha May 18, 2026
3c11d36
code review comment, use a struct instead of a tuple
narendatha May 18, 2026
b65e673
Refine determinant-diversity invariants and range representation
narendatha May 18, 2026
85797ce
minor code cleanup
narendatha May 18, 2026
8aeee5a
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha Jun 2, 2026
19380a7
Address PR #1011 r3268094250: document determinant_diversity math; us…
narendatha Jun 2, 2026
63f1ab8
knn: route configured post-processors through KNN::with_postprocessor
narendatha Jun 2, 2026
2f482f9
det-div: add unit tests for edge cases and selection invariants
narendatha Jun 3, 2026
6f95f21
det-div: fence math blocks in doc comments to avoid doctest compile e…
narendatha Jun 3, 2026
bc03532
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha Jun 9, 2026
ce8db8d
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha Jun 10, 2026
125ae1b
minor fixes.
narendatha Jun 12, 2026
98b6a7d
Mark's code review comments: minor refactors
narendatha Jun 12, 2026
44c5884
refactor: determinant_diversity API - migrate from generic Vec to mat…
narendatha Jun 12, 2026
87001ad
refactor: make determinant-diversity a first-class SearchPhase variant
narendatha Jun 12, 2026
bc9e488
refactor(knn): use AsPostProcessor trait for infallible post-processo…
narendatha Jun 12, 2026
7ff4ff1
refactor(inputs): rely on plugin matching for det-div backend compati…
narendatha Jun 12, 2026
77ca168
test(disk): add det-div post-processor smoke test
narendatha Jun 12, 2026
b416b95
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha Jun 12, 2026
11c989e
fix test failure
narendatha Jun 12, 2026
855fbd2
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha Jun 13, 2026
1807bf0
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha Jun 16, 2026
1c8591d
Move DeterminantDiversityParams into determinant_diversity module
narendatha Jun 18, 2026
0c0a1b1
Merge remote-tracking branch 'origin/main' into u/narendatha/det_div_…
narendatha Jun 18, 2026
d4930c1
Refactor diversity search to derive attribute from id via DiverseId t…
narendatha Jun 18, 2026
3254937
Merge remote-tracking branch 'origin/main' into u/narendatha/attribut…
narendatha Jun 30, 2026
4acecee
Remove redundant index/post_processor module; use inmem::DeterminantD…
narendatha Jun 30, 2026
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
20 changes: 4 additions & 16 deletions diskann/src/graph/misc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,30 +33,18 @@ pub enum InplaceDeleteMethod {

// Parameters for diverse search
#[cfg(feature = "experimental_diversity_search")]
#[derive(Clone, Debug)]
pub struct DiverseSearchParams<P>
where
P: crate::neighbor::AttributeValueProvider,
{
#[derive(Clone, Copy, Debug)]
pub struct DiverseSearchParams {
pub diverse_attribute_id: usize,
pub diverse_results_k: usize,
pub attribute_provider: std::sync::Arc<P>,
}

#[cfg(feature = "experimental_diversity_search")]
impl<P> DiverseSearchParams<P>
where
P: crate::neighbor::AttributeValueProvider,
{
pub fn new(
diverse_attribute_id: usize,
diverse_results_k: usize,
attribute_provider: std::sync::Arc<P>,
) -> Self {
impl DiverseSearchParams {
pub fn new(diverse_attribute_id: usize, diverse_results_k: usize) -> Self {
Self {
diverse_attribute_id,
diverse_results_k,
attribute_provider,
}
}
}
Expand Down
28 changes: 10 additions & 18 deletions diskann/src/graph/search/diverse_search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,30 +18,24 @@ use crate::{
index::{DiskANNIndex, SearchStats},
search_output_buffer::SearchOutputBuffer,
},
neighbor::{AttributeValueProvider, DiverseNeighborQueue, NeighborQueue},
neighbor::{DiverseId, DiverseNeighborQueue, NeighborQueue},
provider::DataProvider,
};

/// Parameters for diversity-aware search.
///
/// Returns results that are diverse across a specified attribute.
#[derive(Debug)]
pub struct Diverse<P>
where
P: AttributeValueProvider,
{
pub struct Diverse {
/// Base k-NN search parameters.
inner: Knn,
/// Diversity-specific parameters.
diverse_params: DiverseSearchParams<P>,
diverse_params: DiverseSearchParams,
}

impl<P> Diverse<P>
where
P: AttributeValueProvider,
{
impl Diverse {
/// Create new diverse search parameters.
pub fn new(inner: Knn, diverse_params: DiverseSearchParams<P>) -> Self {
pub fn new(inner: Knn, diverse_params: DiverseSearchParams) -> Self {
Self {
inner,
diverse_params,
Expand All @@ -56,25 +50,23 @@ where

/// Returns a reference to the diversity-specific parameters.
#[inline]
pub fn diverse_params(&self) -> &DiverseSearchParams<P> {
pub fn diverse_params(&self) -> &DiverseSearchParams {
&self.diverse_params
}

/// Create search scratch with DiverseNeighborQueue for this search.
fn create_scratch<DP>(
&self,
index: &DiskANNIndex<DP>,
) -> SearchScratch<DP::InternalId, DiverseNeighborQueue<P>>
) -> SearchScratch<DP::InternalId, DiverseNeighborQueue<DP::InternalId>>
where
DP: DataProvider,
P: AttributeValueProvider<Id = DP::InternalId>,
DP::InternalId: DiverseId,
{
let attribute_provider = self.diverse_params.attribute_provider.clone();
let diverse_queue = DiverseNeighborQueue::new(
self.inner.l_value().get(),
self.inner.k_value(),
self.diverse_params.diverse_results_k,
attribute_provider,
);

SearchScratch {
Expand All @@ -92,12 +84,12 @@ where
}
}

impl<'a, DP, S, T, P> Search<'a, DP, S, T> for Diverse<P>
impl<'a, DP, S, T> Search<'a, DP, S, T> for Diverse
where
DP: DataProvider,
DP::InternalId: DiverseId,
T: Copy + Send + Sync,
S: SearchStrategy<'a, DP, T, SearchAccessor: SearchAccessor>,
P: AttributeValueProvider<Id = DP::InternalId>,
{
type Output = SearchStats;

Expand Down
Loading
Loading