From 4be61710a4cffba9f840994400bef4fe059d72b1 Mon Sep 17 00:00:00 2001 From: Navneet Verma Date: Sat, 2 Mar 2024 15:49:30 -0800 Subject: [PATCH] Fixing the issue with Faiss engine for vector streaming from java to jni layer Signed-off-by: Navneet Verma --- jni/src/faiss_wrapper.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/jni/src/faiss_wrapper.cpp b/jni/src/faiss_wrapper.cpp index c302bad82..64db9d29c 100644 --- a/jni/src/faiss_wrapper.cpp +++ b/jni/src/faiss_wrapper.cpp @@ -167,8 +167,12 @@ void knn_jni::faiss_wrapper::CreateIndex_With_Memory_Address(knn_jni::JNIUtilInt //auto dataset = jniUtil->Convert2dJavaObjectArrayToCppFloatVector(env, vectorsJ, dim); //auto dataset = jniUtil->GetFloatArrayElements(env, ) std::vector dataset; + long long topLevelPointer = 0; for (int i = 0; i < numVectors; i++) { - dataset.push_back(inputVectors->at(i)); + for(int j = 0 ; j < dim; j++) { + dataset.push_back(inputVectors->at(topLevelPointer)); + topLevelPointer++; + } } @@ -309,8 +313,12 @@ void knn_jni::faiss_wrapper::CreateIndexFromTemplate_With_Memory_Address(knn_jni //int dim = jniUtil->GetInnerDimensionOf2dJavaFloatArray(env, vectorsJ); //auto dataset = jniUtil->Convert2dJavaObjectArrayToCppFloatVector(env, vectorsJ, dim); std::vector dataset; + long long topLevelPointer = 0; for (int i = 0; i < numVectors; i++) { - dataset.push_back(inputVectors->at(i)); + for(int j = 0 ; j < dim; j++) { + dataset.push_back(inputVectors->at(topLevelPointer)); + topLevelPointer++; + } } // Get vector of bytes from jbytearray