What does the Lucene community think about dimensionality reduction for vectors, and should it be something the library does internally (at merge time perhaps)?
- Dominant language
- Java
- Stars
- 3.6k
- Forks
- 1.4k
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 88
Description
### Description
I opened this issue as a discussion topic. With the advancement in int8, int4 type vector storage, I believe Lucene takes the unquantized vectors as inputs, intelligently calculates the correct quantized value, and then indexes it.
Another technique that experimenters use to improve vector search is to reduce the number of dimensions. In practical terms, this translates to using PCA (Principal Component Analysis) or other techniques.
Should Lucene implement support for PCA or other dimensionality reduction techniques (or add a hook maybe) internally? Or can we rely on the user preprocessing their vectors and supplying them?
I am undecided on whether a "search" and "information retrieval" library should add advanced statistics functionality (if I may call PCA that)..
Contributor guide
Research direction
No files, tests, or entry points are named. Start by reading the issue discussion and the existing question about vector quantization, PCA, and user preprocessing; done would require a resolved decision about whether Lucene should provide dimensionality reduction or an internal hook.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- search
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100