iprithv commented on code in PR #16068:
URL: https://github.com/apache/lucene/pull/16068#discussion_r3312506089


##########
lucene/sandbox/src/java/org/apache/lucene/sandbox/codecs/faiss/FaissLibraryNativeImpl.java:
##########
@@ -277,29 +265,39 @@ private interface FloatToFloatFunction {
     private final FloatToFloatFunction scaler;
     private boolean closed;
 
-    private Index(MemorySegment indexPointer) {
+    private Index(
+        MemorySegment indexPointer, VectorSimilarityFunction function, 
VectorEncoding encoding) {
       this.arena = Arena.ofShared();
       this.indexPointer =
           indexPointer
               // Ensure timely cleanup
               .reinterpret(arena, wrapper::faiss_Index_free);
 
-      // Get underlying function
-      int metricType = wrapper.faiss_Index_metric_type(indexPointer);
-      VectorSimilarityFunction function = metricToFunction(metricType);
+      int dimension = wrapper.faiss_Index_d(indexPointer);
 
       // Scale Faiss distances to Lucene scores, see 
VectorSimilarityFunction.java
       this.scaler =
           switch (function) {
-            case DOT_PRODUCT ->
-                // distance in Faiss === dotProduct in Lucene
-                distance -> Math.max((1 + distance) / 2, 0);
+            case DOT_PRODUCT -> {
+              if (encoding == VectorEncoding.BYTE) {
+                float denom = (float) (dimension * (1 << 15));
+                yield distance -> 0.5f + distance / denom;
+              } else {
+                yield distance -> Math.max((1 + distance) / 2, 0);

Review Comment:
   understood, done. thanks!



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to