-
Notifications
You must be signed in to change notification settings - Fork 124
Fix paginated similarity lookup #1048
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
Merged
northdpole
merged 2 commits into
OWASP:main
from
IshanMaheshwari-777:fix-paginated-similarity
Sep 4, 2026
+119
−11
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: OWASP/OpenCRE
Length of output: 269
🏁 Script executed:
Repository: OWASP/OpenCRE
Length of output: 50369
🏁 Script executed:
Repository: OWASP/OpenCRE
Length of output: 37217
🌐 Web query:
scikit-learn cosine_similarity zero features empty sparse matrix ValueError check_pairwise_arrays💡 Result:
In scikit-learn, the
cosine_similarityfunction performs input validation usingcheck_pairwise_arrays[1][2], which enforces specific structural requirements on the input data. Empty Input ValueError If you provide an empty array (i.e., a matrix with 0 samples, such asshape=(0, N)),check_pairwise_arrayswill raise aValueErrorstating that a minimum of 1 sample is required [1]. This is because the underlyingcheck_arrayutility, which is called internally, verifies that the input has at least one sample [1]. Zero Vectors and Sparse Matrices Whencosine_similarityis used with zero vectors (e.g., a row containing all zeros), it does not raise aValueError. Instead, it returns a similarity of 0.0 for those vectors [3]. This behavior is a known design choice in scikit-learn, though some users have requested that it returnNaNor allow for configurable behavior, as a zero-magnitude vector technically has an undefined cosine similarity [3]. Functionality and Validation Thecosine_similarityfunction is designed to work with both dense and sparse matrices [4][5]. Internally, it relies oncheck_pairwise_arraysto ensure that: 1. BothXandYare at least two-dimensional [6]. 2. The number of features (the second dimension) is consistent betweenXandY[6]. 3. The data type is appropriate for numerical computation [6]. If these structural validation checks fail—for example, if you pass a 1D array instead of a 2D matrix, or if the number of features inXandYdo not match—check_pairwise_arrayswill raise aValueError[1][6].Citations:
Skip pages that contain no valid embedding vectors.
When
get_embeddings_by_doc_type_paginatedreturns{}, both pagination loops pass a zero-feature matrix tocosine_similarity, which can raiseValueErrorbecause the feature counts differ. Guard both similarity calculations withif embeddings:and add regression coverage for an empty final page.🤖 Prompt for AI Agents
Source: Coding guidelines