Re: Should we separate Panama FFM and Vector classes in Lucene?
Uwe Schindler <[email protected]> Thu, 16 Oct 2025 10:24:29 +1000
| Newsgroups | gmane.comp.jakarta.lucene.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, we can't backport this to 10.x because it is Java 21 only so we can't have any memory segments in public APIs. The plan is already to release a Lucene 11 at some point before end of year! Uwe Am 16.10.2025 um 00:06 schrieb Kaival Parikh: > Thanks Uwe and Trevor, > > No public API is allowed to have any internal Vector API > signatures in public API > > > I agree, that's what I aimed for in the PR, keeping all incubating > stuff in internal APIs.. > > Agree on waiting for Lucene 11, otherwise it may become very > difficult to backport any related features into 10.x. > > > To unblock related features in 10.x, can we backport this change > /partially/ by cherry-picking stuff internal to Lucene (i.e. > VectorUtilSupport), and just exclude public changes (i.e. the new > signatures in VectorUtil)? > > I really feel making MemorySegment-based vector scoring a first-class > API in Lucene could open up some interesting features.. > > But yes, it would be easier overall with Lucene 11, do we have a > timeline for it? > > - Kaival > > > On Mon, Oct 13, 2025 at 12:14 PM Trevor McCulloch > <[email protected]> wrote: > > Agree on waiting for Lucene 11, otherwise it may become very > difficult to backport any related features into 10.x. > > On Sat, Oct 11, 2025 at 5:58 PM Uwe Schindler <[email protected]> wrote: > > Hi, > > hi, I am on travel at the moment till end of October and won't > be able to look into this. Basically we can move some parts of > the MemorySegment supporting code to main sourceSet, but I > don't want to touch that code too much. The nmost important > thing si: No public API is allowed to have any internal Vector > API signatures in public API (we don't have a check fo this), > so we'd need to closely look at it. The reason why some of the > code is in the java 25 sourceset is exactly because of this. > E.g. the MemorySegment-based scoring. > > In the future we may add more MemorySegment based APIs into > core (and remove all ByteBuffers, too), but this is some > approach I wanted to look at after we have released Lucene 11. > > Uwe > > Am 09.10.2025 um 23:57 schrieb Kaival Parikh: >> For vector search in Lucene, functionality for memory access >> (on/off-heap -- using Panama FFM) and vectorization (using >> the Vector API -- jdk.incubator.vector) is tightly coupled >> (see |PanamaVectorUtilSupport| >> <https://github.com/apache/lucene/blob/602bfbd9af0ee9027de45c1572527eee6b073841/lucene/core/src/java25/org/apache/lucene/internal/vectorization/PanamaVectorUtilSupport.java#L57>|). >> This made sense when it was originally added, because Panama >> FFM was in preview + Vector API was incubating.| >> | >> | >> |However, since Panama FFM was finalized in JDK22 >> (|https://openjdk.org/jeps/454|), I wonder if we should >> decouple it from vectorization now?| >> |This would mean exposing (and supporting!) top-level >> on/off-heap vector similarity functions from all >> VectorUtilSupport >> <https://github.com/apache/lucene/blob/8f68736e75609d13053420450ad451e52cba107d/lucene/core/src/java/org/apache/lucene/internal/vectorization/VectorUtilSupport.java#L25> implementations >> (with Lucene providing one non-vectorized >> <https://github.com/apache/lucene/blob/8f68736e75609d13053420450ad451e52cba107d/lucene/core/src/java/org/apache/lucene/internal/vectorization/DefaultVectorUtilSupport.java#L26> >> and another Vector API powered vectorized >> <https://github.com/apache/lucene/blob/8f68736e75609d13053420450ad451e52cba107d/lucene/core/src/java25/org/apache/lucene/internal/vectorization/PanamaVectorUtilSupport.java#L57> implementation), >> and only scoping non-finalized (i.e. incubating Vector API >> related) functionality in the MR-JAR (i.e. java25/ >> <https://github.com/apache/lucene/tree/main/lucene/core/src/java25>)| >> | >> | >> |Although not a huge motivation, this would allow users that >> do not use vectorization to score vectors off-heap.| >> |The main benefit could be cleaner separation of >> functionality in the long term, also making it easier to >> write new ||VectorUtilSupport >> <https://github.com/apache/lucene/blob/8f68736e75609d13053420450ad451e52cba107d/lucene/core/src/java/org/apache/lucene/internal/vectorization/VectorUtilSupport.java#L25> implementations >> that primarily work with MemorySegment APIs (for example a >> native implementation in # >> <https://github.com/apache/lucene/pull/13572>|13572 >> <https://github.com/apache/lucene/pull/13572>|)| >> >> Issue: https://github.com/apache/lucene/issues/15284 >> PR: https://github.com/apache/lucene/pull/15285 >> >> - Kaival > > -- > Uwe Schindler > Achterdiek 19, D-28357 Bremen > https://www.thetaphi.de > eMail:[email protected] > -- Uwe Schindler Achterdiek 19, D-28357 Bremen https://www.thetaphi.de eMail:[email protected]