Unify SCANN and IVF-PQ helper functions
Open
Nobody has claimed this yet.
feature request
- Dominant language
- Cuda
- Stars
- 854
- Forks
- 236
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 62
Description
There are many algorithmic steps shared between IVF-PQ and SCANN algorithms, but they often differ slightly from each other. Where possible, we should define common utility functions. This is a tracker issue to list these operations
- Compute residuals: IVF-PQ applies rotation while SCANN does not.
-
raft::matrix::sample_rowssample multiple matrices at the same time (SCANN samples dataset and corresponding cluster labels). - train pq_codebook
- process and fill codes
Other
- make cublas_device_pointer_mode public, as it can be useful for downstream projects.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the listed IVF-PQ and SCANN operations and the cublas_device_pointer_mode declaration in cpp/include/raft/linalg/detail/cublas_wrappers.hpp. Map the existing implementations for residuals, matrix sampling, PQ codebook training, and code processing, then confirm done when shared utilities cover the applicable differences and the wrapper is public.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- machine-learning, search
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100