apache / apache/lucene

What does the Lucene community think about dimensionality reduction for vectors, and should it be something the library does internally (at merge time perhaps)?

Open
#13,403 12 comments 1 reaction 0 assignees View on GitHub
type:enhancement vector-based-search
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.