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

Added support for Efficient Pre-filtering for Faiss Engine #936

Merged
merged 1 commit into from
Jun 14, 2023

Conversation

navneet1v
Copy link
Collaborator

@navneet1v navneet1v commented Jun 14, 2023

Description

Added support for Efficient Pre-filtering for Faiss Engine. This PR is a merge PR. Older PRs, where the approval was provided:

#907, #926, #933, #928, #934

While doing the merge all the commits needs to be squashed to single commit.

Next Steps:

  1. Continue to improve on the performance for the Filtering.
  2. Enhance the logic to move to exact search.

Issues Resolved

#903

Check List

  • New functionality includes testing.
    • All tests pass
  • New functionality has been documented.
    • New functionality has javadoc added
  • Commits are signed as 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.

@navneet1v navneet1v added Features Introduces a new unit of functionality that satisfies a requirement backport 2.x labels Jun 14, 2023
@navneet1v navneet1v force-pushed the main branch 2 times, most recently from e52ec17 to 0aaad0f Compare June 14, 2023 05:54
@navneet1v navneet1v force-pushed the main branch 2 times, most recently from b601592 to 955d338 Compare June 14, 2023 07:25
…es include

 * Enabled the efficient filtering support for Faiss Engine (opensearch-project#907)
 * Fixed the ef_search default value for faiss HNSW with filters and updated the perf-tool to include Faiss HNSW tests (opensearch-project#926)
 * Added exact search for cases when filteredIds < k to improve the recall for exact search (opensearch-project#928)
 * Improved Exact Search to return only K results and added client side latency metric for query Benchmarks (opensearch-project#933)
 * Added Integration Tests and Unit test for Efficient Filtering for Faiss Engine (opensearch-project#934)

Signed-off-by: Navneet Verma <[email protected]>
@codecov
Copy link

codecov bot commented Jun 14, 2023

Codecov Report

Merging #936 (f6418b1) into main (556bb1a) will decrease coverage by 0.03%.
The diff coverage is 85.81%.

@@             Coverage Diff              @@
##               main     #936      +/-   ##
============================================
- Coverage     85.35%   85.32%   -0.03%     
- Complexity     1089     1117      +28     
============================================
  Files           152      152              
  Lines          4404     4519     +115     
  Branches        389      405      +16     
============================================
+ Hits           3759     3856      +97     
- Misses          470      480      +10     
- Partials        175      183       +8     
Impacted Files Coverage Δ
...main/java/org/opensearch/knn/jni/FaissService.java 85.71% <ø> (ø)
...pensearch/knn/plugin/rest/RestGetModelHandler.java 77.77% <0.00%> (ø)
...earch/knn/plugin/transport/DeleteModelRequest.java 84.61% <0.00%> (ø)
...java/org/opensearch/knn/index/query/KNNScorer.java 55.00% <28.57%> (-14.24%) ⬇️
...java/org/opensearch/knn/index/query/KNNWeight.java 86.75% <86.20%> (-2.72%) ⬇️
...rg/opensearch/knn/index/query/KNNQueryFactory.java 90.47% <94.11%> (+0.47%) ⬆️
.../java/org/opensearch/knn/index/query/KNNQuery.java 91.42% <100.00%> (+8.09%) ⬆️
...rg/opensearch/knn/index/query/KNNQueryBuilder.java 83.09% <100.00%> (ø)
.../java/org/opensearch/knn/index/util/KNNEngine.java 100.00% <100.00%> (ø)
...java/org/opensearch/knn/index/util/KNNLibrary.java 100.00% <100.00%> (ø)
... and 5 more

@navneet1v navneet1v merged commit d54a53a into opensearch-project:main Jun 14, 2023
@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-936-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 d54a53afb80fa507e82373a7d5c0cf1fb6b65742
# Push it to GitHub
git push --set-upstream origin backport/backport-936-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-936-to-2.x.

navneet1v added a commit to navneet1v/k-NN that referenced this pull request Jun 14, 2023
…es include (opensearch-project#936)

* Enabled the efficient filtering support for Faiss Engine (opensearch-project#907)
 * Fixed the ef_search default value for faiss HNSW with filters and updated the perf-tool to include Faiss HNSW tests (opensearch-project#926)
 * Added exact search for cases when filteredIds < k to improve the recall for exact search (opensearch-project#928)
 * Improved Exact Search to return only K results and added client side latency metric for query Benchmarks (opensearch-project#933)
 * Added Integration Tests and Unit test for Efficient Filtering for Faiss Engine (opensearch-project#934)

Signed-off-by: Navneet Verma <[email protected]>
navneet1v added a commit to navneet1v/k-NN that referenced this pull request Jul 10, 2023
…es include (opensearch-project#936)

* Enabled the efficient filtering support for Faiss Engine (opensearch-project#907)
 * Fixed the ef_search default value for faiss HNSW with filters and updated the perf-tool to include Faiss HNSW tests (opensearch-project#926)
 * Added exact search for cases when filteredIds < k to improve the recall for exact search (opensearch-project#928)
 * Improved Exact Search to return only K results and added client side latency metric for query Benchmarks (opensearch-project#933)
 * Added Integration Tests and Unit test for Efficient Filtering for Faiss Engine (opensearch-project#934)

Signed-off-by: Navneet Verma <[email protected]>
navneet1v added a commit that referenced this pull request Jul 10, 2023
…es include (#936)

* Enabled the efficient filtering support for Faiss Engine (#907)
 * Fixed the ef_search default value for faiss HNSW with filters and updated the perf-tool to include Faiss HNSW tests (#926)
 * Added exact search for cases when filteredIds < k to improve the recall for exact search (#928)
 * Improved Exact Search to return only K results and added client side latency metric for query Benchmarks (#933)
 * Added Integration Tests and Unit test for Efficient Filtering for Faiss Engine (#934)

Signed-off-by: Navneet Verma <[email protected]>
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.9.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants