Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate KNNVectorValues with vector ANN Search flow #1952

Merged
merged 1 commit into from
Aug 14, 2024

Conversation

navneet1v
Copy link
Collaborator

@navneet1v navneet1v commented Aug 13, 2024

Description

Integrate KNNVectorValues with vector ANN Search flow. I have not integrated KNNVectorValues in ScriptScore as currently I am doing more deep-dive to see if we really need it. Will followup on that in next PR.

What changes are present:

  1. While doing exact search during Efficient filtering I have switched from using BinaryDocValues to KNNVectorValues.
  2. Added some utility functions which are also part of this PR: Integrates FAISS iterative builds with NativeEngines990KnnVectorsFormat #1950. Whichever PR gets merged first the conflicts can be resolved based on that PR.

Related Issues

Resolves #1853

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • Commits are signed per the DCO using --signoff.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

jmazanec15
jmazanec15 previously approved these changes Aug 13, 2024
Copy link
Member

@jmazanec15 jmazanec15 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

CHANGELOG.md Show resolved Hide resolved
Signed-off-by: Navneet Verma <navneev@amazon.com>
@navneet1v
Copy link
Collaborator Author

@jmazanec15 can you review code again. I added a new UT for Factory which was not present.

@navneet1v navneet1v merged commit a4697f4 into opensearch-project:main Aug 14, 2024
28 of 29 checks passed
@opensearch-trigger-bot
Copy link
Contributor

The backport to 2.x failed:

The process '/usr/bin/git' failed with exit code 1

To backport manually, run these commands in your terminal:

# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add .worktrees/backport-2.x 2.x
# Navigate to the new working tree
cd .worktrees/backport-2.x
# Create a new branch
git switch --create backport/backport-1952-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 a4697f4e4e940d7faedb4fd582cf411115fc792c
# Push it to GitHub
git push --set-upstream origin backport/backport-1952-to-2.x
# Go back to the original working tree
cd ../..
# Delete the working tree
git worktree remove .worktrees/backport-2.x

Then, create a pull request where the base branch is 2.x and the compare/head branch is backport/backport-1952-to-2.x.

navneet1v added a commit to navneet1v/k-NN that referenced this pull request Aug 14, 2024
@navneet1v
Copy link
Collaborator Author

Doing a manual backport.

navneet1v added a commit that referenced this pull request Aug 14, 2024
Signed-off-by: Navneet Verma <navneev@amazon.com>
ryanbogan pushed a commit that referenced this pull request Aug 15, 2024
* Integrate KNNVectorValues with vector ANN Search flow (#1952)

Signed-off-by: Navneet Verma <navneev@amazon.com>

* BackPort Java Doc Fix with Code Improvements (#1959)

* Quantization Framework Code Structure Improvement (#1967)

* BackPort Java Doc Fix with Code Improvements

Signed-off-by: VIKASH TIWARI <viktari@amazon.com>

* Quantization Framework Code Structure Improvement

Signed-off-by: VIKASH TIWARI <viktari@amazon.com>

---------

Signed-off-by: VIKASH TIWARI <viktari@amazon.com>

* Iterative index integration (#1956)

* Iterative Vector Insertion (#1840)

* Rebased with new version of k-NN

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Optimized faiss insertion

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Optimized threadCount logic

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed IDEA files

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unnecessary cmake file

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added comments to new functions

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed createIndex and fixed test cases that use it

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unused code

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Explained zero initialization for vector transfer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added locale

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless Apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Account for zero documents in finished batch

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed where we check for zero docs

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed tip for return

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Use unique pointers to make sure resources are released on exception

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Moved createIndex to testUtils

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed memory management so that the underlying index is not deleted after initialized

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Created new KNNIndexBuilder graph to make index building more modular

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Streamlined logic in KNNIndexBuilder.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Cleaned up unnecessary code in KNN80DocValuesConsumer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed memory management process

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added note about index initialization in faiss_index_service

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Accounted for case where the exception happens after the indexWriter is released.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Delete jni/src/.idea/modules.xml

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Delete jni/src/.idea/vcs.xml

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Delete jni/src/.idea/workspace.xml

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply and free iterative index on exception

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Undid hack for checking first document metrics

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed print statements

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Free Vector Transfer on batch ingestion

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Undid free

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed check for transfer ready

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Don't crash when zero vectors inserted?

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Reverted to old insertion process?

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added back createOutput

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed prior createOutput

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Test remaking vectorTransfer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Test restructuring of insertion

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed case where vector address is immediately discarded

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Split Index Builder into multiple classes

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed descriptions of functions in faiss_index_service

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added back copyright files

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unused builder names

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Modified tests to work with new insertion methods

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Track index insertions

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Tracked insertions for binary indices

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added back insertIds

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added check for freeVectorData to see if it works with an already deleted address

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Cleaned up logs and comments in KNNIndexBuilder

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Restructured the logic for KNNIndexBuilder

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed package name of KNNIndexBuilder

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed all package names and deleted unnecessary headers

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed for loop

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed createIndex methods for faiss index service

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed package to fit naming conventions

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed name of index builder

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added comments to NativeIndexBuilder and restructured

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added deletion for memoryAddress

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed naming of classes to Writer and changed package name to fit conventions

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed NativeIndexInfo and NativeVectorInfo to follow builder pattern

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added feature to changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added class descriptions to each NativeIndexWriter

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed name to getBytesPerVector

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added == false instead of ! for readability

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed naming in docvaluesconsumer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* SpotlessApply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Made it so that we don't reuse testValues and removed a foot gun

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed another foot gun in getIndexInfo

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed javadoc

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added deletion on exception cases

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unnecessary delete (NativeIndexWriter will handle deletion of vectors on exception)

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added correct logger and getWriter method to NativeIndexWriter

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Ensured memory safety on JNI layer so that Java doesn't have to wrap everything in a try catch loop.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Refactored NativeIndexWriter and added comments to FaissService

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed free in the JNIExport since index will always be freed in writeIndex.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed getVectorTransfer back to accept VectorDataType

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Reverted free since not guaranteed to be IDMap.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added all processes in addKNNBinaryField to NativeIndexWriter.createKNNIndex

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed javadoc

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Applied spotless

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added back writeFooter

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed threadCount fron writeIndex

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed redundancies in KNN80DocValuesConsumer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed serializationMode

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed double free test as we don't have to worry about that anymore

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Accounted for HNSWSQ in index service

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed delete in catch

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed faiss tests to work with writeIndex

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

---------

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Index Initialization Alloc Method (#1933)

* Added methods for allocating memory before inserting vectors to a faiss index

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed logic that gets type of index

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed print statement

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unnecessary iostream

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed flat index

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed flat index case

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed naming

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Properly allocate HNSWSQ storage

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed print statements

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unnecessary lib

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Made alloc adaptive to different code sizes

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

---------

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Integrates FAISS iterative builds with NativeEngines990KnnVectorsFormat

Changes include reusing the same vector buffer in the JNI layer

Signed-off-by: Tejas Shah <shatejas@amazon.com>

---------

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>
Signed-off-by: Tejas Shah <shatejas@amazon.com>
Co-authored-by: Andrew Klepchick <aklepchi@amazon.com>

---------

Signed-off-by: Navneet Verma <navneev@amazon.com>
Signed-off-by: VIKASH TIWARI <viktari@amazon.com>
Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>
Signed-off-by: Tejas Shah <shatejas@amazon.com>
Co-authored-by: Navneet Verma <navneev@amazon.com>
Co-authored-by: Vikasht34 <viktari@amazon.com>
Co-authored-by: Andrew Klepchick <aklepchi@amazon.com>
shatejas pushed a commit to shatejas/k-NN that referenced this pull request Aug 15, 2024
ryanbogan pushed a commit that referenced this pull request Aug 15, 2024
* Integrate KNNVectorValues with vector ANN Search flow (#1952)

Signed-off-by: Navneet Verma <navneev@amazon.com>

* Iterative index integration (#1956)

* Iterative Vector Insertion (#1840)

* Rebased with new version of k-NN

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Optimized faiss insertion

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Optimized threadCount logic

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed IDEA files

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unnecessary cmake file

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added comments to new functions

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed createIndex and fixed test cases that use it

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unused code

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Explained zero initialization for vector transfer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added locale

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless Apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Account for zero documents in finished batch

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed where we check for zero docs

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed tip for return

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Use unique pointers to make sure resources are released on exception

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Moved createIndex to testUtils

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed memory management so that the underlying index is not deleted after initialized

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Created new KNNIndexBuilder graph to make index building more modular

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Streamlined logic in KNNIndexBuilder.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Cleaned up unnecessary code in KNN80DocValuesConsumer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed memory management process

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added note about index initialization in faiss_index_service

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Accounted for case where the exception happens after the indexWriter is released.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Delete jni/src/.idea/modules.xml

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Delete jni/src/.idea/vcs.xml

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Delete jni/src/.idea/workspace.xml

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply and free iterative index on exception

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Undid hack for checking first document metrics

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed print statements

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Free Vector Transfer on batch ingestion

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Undid free

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed check for transfer ready

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Don't crash when zero vectors inserted?

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Reverted to old insertion process?

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added back createOutput

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed prior createOutput

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Test remaking vectorTransfer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Test restructuring of insertion

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed case where vector address is immediately discarded

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Split Index Builder into multiple classes

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed descriptions of functions in faiss_index_service

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added back copyright files

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unused builder names

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Modified tests to work with new insertion methods

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Track index insertions

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Tracked insertions for binary indices

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added back insertIds

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added check for freeVectorData to see if it works with an already deleted address

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Cleaned up logs and comments in KNNIndexBuilder

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Restructured the logic for KNNIndexBuilder

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed package name of KNNIndexBuilder

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed all package names and deleted unnecessary headers

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed for loop

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed createIndex methods for faiss index service

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed package to fit naming conventions

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed name of index builder

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added comments to NativeIndexBuilder and restructured

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added deletion for memoryAddress

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Spotless apply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed naming of classes to Writer and changed package name to fit conventions

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed NativeIndexInfo and NativeVectorInfo to follow builder pattern

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added feature to changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added class descriptions to each NativeIndexWriter

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed name to getBytesPerVector

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added == false instead of ! for readability

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed naming in docvaluesconsumer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* SpotlessApply

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Made it so that we don't reuse testValues and removed a foot gun

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed another foot gun in getIndexInfo

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed javadoc

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added deletion on exception cases

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unnecessary delete (NativeIndexWriter will handle deletion of vectors on exception)

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added correct logger and getWriter method to NativeIndexWriter

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Ensured memory safety on JNI layer so that Java doesn't have to wrap everything in a try catch loop.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Refactored NativeIndexWriter and added comments to FaissService

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed free in the JNIExport since index will always be freed in writeIndex.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Changed getVectorTransfer back to accept VectorDataType

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Reverted free since not guaranteed to be IDMap.

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added all processes in addKNNBinaryField to NativeIndexWriter.createKNNIndex

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed javadoc

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Applied spotless

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Added back writeFooter

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed threadCount fron writeIndex

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed redundancies in KNN80DocValuesConsumer

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed serializationMode

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed double free test as we don't have to worry about that anymore

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Accounted for HNSWSQ in index service

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed delete in catch

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed faiss tests to work with writeIndex

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

---------

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Index Initialization Alloc Method (#1933)

* Added methods for allocating memory before inserting vectors to a faiss index

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed logic that gets type of index

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed print statement

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unnecessary iostream

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed flat index

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed flat index case

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed naming

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Properly allocate HNSWSQ storage

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed print statements

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Fixed changelog

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Removed unnecessary lib

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Made alloc adaptive to different code sizes

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

---------

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>

* Integrates FAISS iterative builds with NativeEngines990KnnVectorsFormat

Changes include reusing the same vector buffer in the JNI layer

Signed-off-by: Tejas Shah <shatejas@amazon.com>

---------

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>
Signed-off-by: Tejas Shah <shatejas@amazon.com>
Co-authored-by: Andrew Klepchick <aklepchi@amazon.com>

* Integrates FAISS iterative builds with NativeEngines990KnnVectorsFormat

Changes include reusing the same vector buffer in the JNI layer

Signed-off-by: Tejas Shah <shatejas@amazon.com>

---------

Signed-off-by: Navneet Verma <navneev@amazon.com>
Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>
Signed-off-by: Tejas Shah <shatejas@amazon.com>
Co-authored-by: Navneet Verma <navneev@amazon.com>
Co-authored-by: Andrew Klepchick <aklepchi@amazon.com>
akashsha1 pushed a commit to akashsha1/k-NN that referenced this pull request Sep 16, 2024
…ject#1952)

Signed-off-by: Navneet Verma <navneev@amazon.com>
Signed-off-by: Akash Shankaran <akash.shankaran@intel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport 2.x Features Introduces a new unit of functionality that satisfies a requirement v2.17.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[RFC] Integrating KNNVectorsFormat in Native Vector Search Engine
4 participants