Skip to content

Add base64 binary encoding as default format for knn_vector docvalue_fields - #3324

Merged
navneet1v merged 1 commit into
opensearch-project:mainfrom
navneet1v:main
May 21, 2026
Merged

Add base64 binary encoding as default format for knn_vector docvalue_fields#3324
navneet1v merged 1 commit into
opensearch-project:mainfrom
navneet1v:main

Conversation

@navneet1v

@navneet1v navneet1v commented May 17, 2026

Copy link
Copy Markdown
Collaborator

Description

Add base64 binary encoding as default format for knn_vector docvalue_fields

Summary

Adds binary (base64) encoding as the default output format for docvalue_fields on knn_vector fields. When no format is specified in the request, vectors are now returned as
base64-encoded little-endian float byte strings instead of JSON numeric arrays.

This builds on #3321 which added docvalue_fields support with array format only. The binary default provides ~2x throughput improvement over the array format for JSON
transport (the most common case), while maintaining the same performance for binary transports (CBOR/SMILE) where both formats are already efficient.

Benchmark highlights (768D Cohere vectors, k=1000)

Quick Setup to validate: 768-dimensional Cohere vectors, k=1000, 1000 queries, single node on my macbook. JVM: 4gb.

Scenario (JSON transport) p50 latency QPS Speedup vs _source
_source (baseline) 63.5 ms 15.3
docvalue_fields (array) 44.5 ms 20.5 1.34x
docvalue_fields (binary, default) 21.7 ms 40.9 2.68x

Binary format also reduces JSON response payload by ~30-40% for high-dimensional vectors since base64 encodes 768 floats in ~4 KB vs ~6 KB for a JSON numeric array.

Format selection

Users can explicitly choose the format:

"docvalue_fields": [{"field": "my_vector", "format": "binary"}]   // base64 string (default)
"docvalue_fields": [{"field": "my_vector", "format": "array"}]    // JSON numeric array
"docvalue_fields": ["my_vector"]                                   // base64 string (default)

Related Issues

Resolves #3315

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff.
  • Public documentation issue/PR created.

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.

@github-actions

github-actions Bot commented May 17, 2026

Copy link
Copy Markdown

PR Reviewer Guide 🔍

(Review updated until commit 2d2b804)

Here are some key observations to aid the review process:

🧪 PR contains tests
🔒 No security concerns identified
✅ No TODO sections
🔀 No multiple PR themes
⚡ Recommended focus areas for review

Possible Issue

The encodeToBinary method allocates a ByteBuffer but does not flip it after writing. While buffer.array() returns the backing array directly, this works only because the buffer is fully written. If the buffer were used for reading or partial writes, missing flip() would cause incorrect behavior. This is not a bug in the current code path, but it's fragile and could break if the method is refactored to read from the buffer instead of using array().

public static String encodeToBinary(final float[] vector) {
    final ByteBuffer buffer = ByteBuffer.allocate(vector.length * Float.BYTES).order(ByteOrder.LITTLE_ENDIAN);
    buffer.asFloatBuffer().put(vector); // Bulk operation optimized by the JVM
    final byte[] bytes = buffer.array();
    return BASE64_ENCODER.encodeToString(bytes);
Possible Issue

The comment on line 168 states "We don't need a conditional clone here since encodeToBinary will convert the array to string." However, if encodeToBinary is later changed to return the array directly or if the binary path is modified, this could lead to vector array reuse bugs where the same array reference is shared across multiple documents. The current implementation is safe, but the reasoning is tied to implementation details that may change.

// We don't need a conditional clone here since encodeToBinary will convert the array to string.
if (isBinary) {
    return KNNVectorDocValueFormat.encodeToBinary((float[]) vectorValues.getVector());
}
// We need a conditional clone since vector returned from here will be added in a map, so we do the clone
// since vectorValues keep a single copy of vector array for all docs.
return vectorValues.conditionalCloneVector();

@github-actions

github-actions Bot commented May 17, 2026

Copy link
Copy Markdown

PR Code Suggestions ✨

Latest suggestions up to 2d2b804

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
General
Add explicit null check before instanceof

The null check for format should occur before the instanceof check. Currently, if
format is null, the instanceof will return false and throw an
IllegalArgumentException with a confusing message showing "null" as the format type.

src/main/java/org/opensearch/knn/index/KNNVectorDVLeafFieldData.java [121-125]

+if (format == null) {
+    throw new IllegalArgumentException(
+        "DocValueFormat cannot be null for knn_vector field '" + fieldName + "'"
+    );
+}
 if (!(format instanceof KNNVectorDocValueFormat knnFormat)) {
     throw new IllegalArgumentException(
         "Unsupported DocValueFormat [" + format + "] for knn_vector field '" + fieldName + "'. Expected KNNVectorDocValueFormat."
     );
 }
Suggestion importance[1-10]: 5

__

Why: The suggestion improves error messaging by distinguishing between null and wrong type. However, the test testGetLeafValueFetcher_nullFormat_throwsIllegalArgument at line 254 expects the current error message for null, so this would require test updates. The improvement is moderate since instanceof already handles null safely.

Low

Previous suggestions

Suggestions up to commit 95f3738
CategorySuggestion                                                                                                                                    Impact
General
Ensure buffer position consistency

The asFloatBuffer() creates a view that shares the same backing array but has
independent position tracking. After put(vector), the main buffer's position remains
at 0, so buffer.array() returns the correct bytes. However, for clarity and to avoid
potential issues if buffer operations are added later, explicitly set the buffer's
limit or use the FloatBuffer's position.

src/main/java/org/opensearch/knn/index/KNNVectorDocValueFormat.java [62-67]

 public static String encodeToBinary(@NonNull final float[] vector) {
     final ByteBuffer buffer = ByteBuffer.allocate(vector.length * Float.BYTES).order(ByteOrder.LITTLE_ENDIAN);
     buffer.asFloatBuffer().put(vector);
+    buffer.position(buffer.capacity()); // Explicitly advance position to match written data
     final byte[] bytes = buffer.array();
     return BASE64_ENCODER.encodeToString(bytes);
 }
Suggestion importance[1-10]: 2

__

Why: The suggestion to set buffer.position(buffer.capacity()) is unnecessary because buffer.array() returns the entire backing array regardless of position. The current code works correctly, and the suggested change adds no functional benefit. While it might marginally improve code clarity for future modifications, the impact is minimal.

Low
Suggestions up to commit d7fbc2f
CategorySuggestion                                                                                                                                    Impact
Possible issue
Add null check for vector parameter

Add null check for the input vector parameter to prevent NullPointerException. The
method should validate the input before attempting to allocate a buffer or perform
encoding operations.

src/main/java/org/opensearch/knn/index/KNNVectorDocValueFormat.java [61-66]

 public static String encodeToBinary(final float[] vector) {
+    if (vector == null) {
+        throw new IllegalArgumentException("Vector cannot be null");
+    }
     final ByteBuffer buffer = ByteBuffer.allocate(vector.length * Float.BYTES).order(ByteOrder.LITTLE_ENDIAN);
     buffer.asFloatBuffer().put(vector); // Bulk operation optimized by the JVM
     final byte[] bytes = buffer.array();
     return BASE64_ENCODER.encodeToString(bytes);
 }
Suggestion importance[1-10]: 7

__

Why: Adding a null check for the vector parameter in encodeToBinary is a valid defensive programming practice that prevents NullPointerException. However, the method is called internally from controlled contexts where null vectors are unlikely, limiting the practical impact.

Medium
Validate vector before binary encoding

Add validation to ensure the vector returned by vectorValues.getVector() is not null
before casting and encoding. This prevents potential NullPointerException when
encoding binary format.

src/main/java/org/opensearch/knn/index/KNNVectorDVLeafFieldData.java [163-165]

 if (binary) {
-    return KNNVectorDocValueFormat.encodeToBinary((float[]) vectorValues.getVector());
+    Object vector = vectorValues.getVector();
+    if (vector == null) {
+        throw new IllegalStateException("Vector value is null for document");
+    }
+    return KNNVectorDocValueFormat.encodeToBinary((float[]) vector);
 }
Suggestion importance[1-10]: 6

__

Why: Adding null validation before casting and encoding the vector is a reasonable safety measure. However, vectorValues.getVector() is expected to return valid vectors in normal operation, and the null check in encodeToBinary (from suggestion 1) would also catch this case, reducing the necessity of this check.

Low
General
Add null safety for format parameter

Add null check for the format parameter before performing instanceof check and
casting. If format is null, the instanceof check will return false, but the code
should explicitly handle this case to avoid potential issues.

src/main/java/org/opensearch/knn/index/KNNVectorDVLeafFieldData.java [140]

-final boolean binary = format instanceof KNNVectorDocValueFormat && ((KNNVectorDocValueFormat) format).isBinary();
+final boolean binary = format != null && format instanceof KNNVectorDocValueFormat && ((KNNVectorDocValueFormat) format).isBinary();
Suggestion importance[1-10]: 3

__

Why: While adding explicit null check improves code clarity, the instanceof operator already handles null safely (returns false for null). The suggestion is technically correct but offers minimal practical improvement since the existing code already handles null correctly.

Low
Suggestions up to commit d7fbc2f
CategorySuggestion                                                                                                                                    Impact
Possible issue
Add null check for vector parameter

Add null check for the vector parameter to prevent NullPointerException. Without
this check, passing a null vector will cause the method to fail when accessing
vector.length.

src/main/java/org/opensearch/knn/index/KNNVectorDocValueFormat.java [61-66]

 public static String encodeToBinary(final float[] vector) {
+    if (vector == null) {
+        throw new IllegalArgumentException("Vector cannot be null");
+    }
     final ByteBuffer buffer = ByteBuffer.allocate(vector.length * Float.BYTES).order(ByteOrder.LITTLE_ENDIAN);
     buffer.asFloatBuffer().put(vector); // Bulk operation optimized by the JVM
     final byte[] bytes = buffer.array();
     return BASE64_ENCODER.encodeToString(bytes);
 }
Suggestion importance[1-10]: 7

__

Why: Adding a null check prevents NullPointerException when vector is null. However, this is a defensive programming practice rather than a critical bug fix, as the calling code should ensure valid input.

Medium
Add type safety before casting vector

Add type safety check before casting to float[]. If vectorValues.getVector() returns
a non-float array type, the cast will fail with ClassCastException at runtime.

src/main/java/org/opensearch/knn/index/KNNVectorDVLeafFieldData.java [163-165]

 if (binary) {
-    return KNNVectorDocValueFormat.encodeToBinary((float[]) vectorValues.getVector());
+    Object vector = vectorValues.getVector();
+    if (!(vector instanceof float[])) {
+        throw new IllegalStateException("Expected float[] vector but got: " + vector.getClass().getName());
+    }
+    return KNNVectorDocValueFormat.encodeToBinary((float[]) vector);
 }
Suggestion importance[1-10]: 6

__

Why: Adding a type check before casting prevents potential ClassCastException. However, the method already throws UnsupportedOperationException for non-FLOAT types (line 116-117), making this additional check somewhat redundant but still useful for defensive programming.

Low
General
Add null safety for format parameter

Add null check for the format parameter before performing instanceof check. Although
instanceof handles null safely, explicitly checking prevents potential issues if the
format is used elsewhere in the method without null safety.

src/main/java/org/opensearch/knn/index/KNNVectorDVLeafFieldData.java [140]

-final boolean binary = format instanceof KNNVectorDocValueFormat && ((KNNVectorDocValueFormat) format).isBinary();
+final boolean binary = format != null && format instanceof KNNVectorDocValueFormat && ((KNNVectorDocValueFormat) format).isBinary();
Suggestion importance[1-10]: 3

__

Why: While adding explicit null check improves code clarity, instanceof already handles null safely (returns false), making this a minor defensive improvement rather than a bug fix.

Low

@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit d7fbc2f

@codecov

codecov Bot commented May 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.47%. Comparing base (67033ce) to head (2d2b804).

Additional details and impacted files
@@             Coverage Diff              @@
##               main    #3324      +/-   ##
============================================
- Coverage     83.53%   83.47%   -0.07%     
- Complexity     4287     4296       +9     
============================================
  Files           450      451       +1     
  Lines         15552    15584      +32     
  Branches       2015     2018       +3     
============================================
+ Hits          12991    13008      +17     
- Misses         1770     1782      +12     
- Partials        791      794       +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit 95f3738

Comment thread src/main/java/org/opensearch/knn/index/mapper/KNNVectorFieldType.java Outdated
Comment thread src/main/java/org/opensearch/knn/index/KNNVectorDocValueFormat.java Outdated
@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit eced12b

@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit 1bb11f9

Comment thread src/main/java/org/opensearch/knn/index/mapper/KNNVectorFieldType.java Outdated
Comment thread src/main/java/org/opensearch/knn/index/KNNVectorDocValueFormat.java Outdated
@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit a6a9b04

@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit 7b4daf7

VijayanB
VijayanB previously approved these changes May 19, 2026
@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit 5d92e71

VijayanB
VijayanB previously approved these changes May 20, 2026
Comment thread src/main/java/org/opensearch/knn/index/KNNVectorDVLeafFieldData.java Outdated
…fields

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

Copy link
Copy Markdown

Persistent review updated to latest commit 2d2b804

@Vikasht34 Vikasht34 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Changes Looks Good , I don't have any concern on Changes or Code.

@navneet1v
navneet1v merged commit 11bd374 into opensearch-project:main May 21, 2026
54 of 56 checks passed
naveentatikonda pushed a commit that referenced this pull request Jun 18, 2026
* Enhance unit test coverage for 32x defaults

Signed-off-by: Kunal Kotwani <kkotwani@amazon.com>

* Add BwC test coverage (#3329)

Signed-off-by: Kunal Kotwani <kkotwani@amazon.com>

* Add base64 binary encoding as default format for knn_vector docvalue_fields (#3324)

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

* Add issues write permission to untriaged label workflow (#3332)

Signed-off-by: shreyah963 <shreyab963@gmail.com>

* Fix score to radius conversion for IP with faiss (#3336)

Signed-off-by: Kunal Kotwani <kkotwani@amazon.com>
Co-authored-by: Tejas Shah <shatejas@amazon.com>

* Add ci.opensearch.org maven2 mirror to avoid throttling (#3345)

Signed-off-by: Sayali Gaikawad <gaiksaya@amazon.com>

* [AUTO] Add release notes for 3.7.0 (#3342)

Signed-off-by: opensearch-ci-bot <opensearch-infra@amazon.com>

* Fix derived source for mixed-case vector fields (#3313)

* Fix derived source for mixed-case vector fields

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Add BWC coverage for derived source field casing

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Add changelog entry for mixed-case derived source fix

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Handle case-insensitive conflicts by preferring vector field

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Avoid stream wrappers for derived field lookup

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Handle ambiguous case-insensitive matches without vector hints

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Update src/main/java/org/opensearch/knn/index/codec/KNN10010Codec/KNN10010DerivedSourceStoredFieldsFormat.java

Co-authored-by: Tejas Shah <shatejas@amazon.com>
Signed-off-by: Wonjae Lee <38933452+leewjae@users.noreply.github.com>

* Apply spotless formatting for derived source field resolution

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Avoid guessing when case-insensitive matches lack vector hints

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Simplify case-insensitive derived field matching

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Trigger CI rerun for BWC investigation

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

* Add native engine field info coverage

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>

---------

Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>
Signed-off-by: Wonjae Lee <38933452+leewjae@users.noreply.github.com>
Signed-off-by: Tejas Shah <shatejas@amazon.com>
Co-authored-by: Tejas Shah <shatejas@amazon.com>
Co-authored-by: Navneet Verma <navneev@amazon.com>

* Fixes RescoreParser to pass the rescore flag (#3343)

* Fixes RescoreParser to pass the rescore flag

For multinode or coordinator-data node setup, rescore set to false is
not passed through streams. This causes rescoring to execute even when
its not disabled explicitly by user

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

* Updates Changelogs, improves code cov

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

* Makes the coordinator port dynamic

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

* Adds BWC test for mode and compression

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

* Does not create compressed indices before 2.18

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

* Fixes bwc

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

---------

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

* Merge rescore-radial-quantized feature branch to main (#3347)

* Rescoring after radial search on quantized index. [Task 1 - 4] (#3300)

* Bumped gradle to 9.4.1 and jacoco to 0.8.14 (#3308)

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

* Use KNN1040ScalarQuantizedVectorsFormat for Faiss SQ flat format (#3302)

The Faiss SQ format was using Lucene's Lucene104ScalarQuantizedVectorsFormat
directly, which lacks the prefetch-enabled raw vector reader that
KNN1040ScalarQuantizedVectorsFormat provides. This meant exact search
rescoring was missing I/O prefetch during graph traversal.

Changes:
- Switch faissSqFlatFormat from Lucene104ScalarQuantizedVectorsFormat to
  KNN1040ScalarQuantizedVectorsFormat in Faiss1040ScalarQuantizedKnnVectorsFormat
- Add @VisibleForTesting getFlatVectorsReader() to
  Faiss1040ScalarQuantizedKnnVectorsReader to replace reflection in tests
- Add testGetRandomVectorScorer_returnsPrefetchableScorer in
  KNN1040ScalarQuantizedVectorsFormatTests verifying the scorer is
  PrefetchableRandomVectorScorer via a real write/read cycle
- Replace reflection with getter in
  Faiss1040ScalarQuantizedKnnVectorsFormatTests.testFieldsReader_thenWrapsFlatReaderWithPrefetchSupport

Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>

* Allow minScore, maxDistance for 32x SQ index.

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>

Pass compression and quantization config to RNN query builder.

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>

Added RescoreRadialSearchQuery.

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>

Wiring `RescoreRadialSearchQuery` wrapper in `RNNQueryFactory`

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>

---------

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>
Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
Signed-off-by: Dooyong Kim <kdooyong@amazon.com>
Co-authored-by: Andrew Klepchick <aklepchi@amazon.com>
Co-authored-by: Vijayan Balasubramanian <balasvij@amazon.com>

* Rescore radial search quantized complete (#3337)

* Added exact search logic after radial.

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>

* Adding 2nd rescoring after radial search on quantized index.

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>

---------

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>

* Update changelog

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>

---------

Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>
Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
Signed-off-by: Dooyong Kim <kdooyong@amazon.com>
Co-authored-by: Andrew Klepchick <aklepchi@amazon.com>
Co-authored-by: Vijayan Balasubramanian <balasvij@amazon.com>

* Add support for binary and byte field support in doc_values (#3340)

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

* Pin GitHub Actions to commit SHAs (#3339)

Signed-off-by: Divya Madala <divyaasm@amazon.com>
Co-authored-by: Tejas Shah <shatejas@amazon.com>

* Turn off ACORN for MOS (#3346)

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

* Add base64 encoded vector indexing support for knn_vector fields (#3350)

Vectors can now be indexed as base64-encoded strings in addition to JSON
arrays. Float vectors use little-endian byte encoding (symmetric with
the doc_values binary output format), while byte/binary vectors use raw
byte encoding. This enables efficient bulk ingestion pipelines that
avoid JSON array serialization overhead.

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

* Made MemoryOptimizedSearchWarmup skip MemoryOptimizedSearchOldIndicesNotSupportedException. (#3344)

Signed-off-by: Dooyong Kim <kdooyong@amazon.com>
Signed-off-by: Doo Yong Kim <kdooyong@amazon.com>

* Integrated proper ef_search functionality into MOS and Lucene with oversample_factor (#3331)

* Check to see if Lucene's search budget has exhausted when deciding to exact search (#3354)

* Update opensearch-build workflow references from commit SHA to main (#3363)

Signed-off-by: Divya Madala <divyaasm@amazon.com>

* Pinned the commit for tj-actions/changed-files for version v47.0.0 (#3367)

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

---------

Signed-off-by: Kunal Kotwani <kkotwani@amazon.com>
Signed-off-by: Navneet Verma <navneev@amazon.com>
Signed-off-by: shreyah963 <shreyab963@gmail.com>
Signed-off-by: Sayali Gaikawad <gaiksaya@amazon.com>
Signed-off-by: opensearch-ci-bot <opensearch-infra@amazon.com>
Signed-off-by: Wonjae Lee <wonjae.lee@dremio.com>
Signed-off-by: Wonjae Lee <38933452+leewjae@users.noreply.github.com>
Signed-off-by: Tejas Shah <shatejas@amazon.com>
Signed-off-by: Andrew Klepchick <aklepchi@amazon.com>
Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
Signed-off-by: Dooyong Kim <kdooyong@amazon.com>
Signed-off-by: Divya Madala <divyaasm@amazon.com>
Signed-off-by: Doo Yong Kim <kdooyong@amazon.com>
Co-authored-by: Navneet Verma <navneev@amazon.com>
Co-authored-by: Shreya Bhatta <shreyab963@gmail.com>
Co-authored-by: Tejas Shah <shatejas@amazon.com>
Co-authored-by: Sayali Gaikawad <gaiksaya@amazon.com>
Co-authored-by: opensearch-ci <83309141+opensearch-ci-bot@users.noreply.github.com>
Co-authored-by: Wonjae Lee <38933452+leewjae@users.noreply.github.com>
Co-authored-by: Doo Yong Kim <kdooyong@amazon.com>
Co-authored-by: Andrew Klepchick <aklepchi@amazon.com>
Co-authored-by: Vijayan Balasubramanian <balasvij@amazon.com>
Co-authored-by: Divya Madala <113469545+Divyaasm@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Support docvalue_fields for retrieving KNN vectors without _source parsing

5 participants