Skip to content

Commit 557aeaa

Browse files
authored
Add directIO and bfloat16 for bbq and unquantized HNSW vector field types (#135940)
Currently behind a feature flag, pending further development
1 parent 50c247c commit 557aeaa

File tree

59 files changed

+3164
-311
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+3164
-311
lines changed

qa/ccs-common-rest/src/yamlRestTest/java/org/elasticsearch/test/rest/yaml/CcsCommonYamlTestSuiteIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ public class CcsCommonYamlTestSuiteIT extends ESClientYamlSuiteTestCase {
9696
// geohex_grid requires gold license
9797
.setting("xpack.license.self_generated.type", "trial")
9898
.feature(FeatureFlag.TIME_SERIES_MODE)
99-
.feature(FeatureFlag.SYNTHETIC_VECTORS);
99+
.feature(FeatureFlag.SYNTHETIC_VECTORS)
100+
.feature(FeatureFlag.GENERIC_VECTOR_FORMAT);
100101

101102
private static ElasticsearchCluster remoteCluster = ElasticsearchCluster.local()
102103
.name(REMOTE_CLUSTER_NAME)

qa/ccs-common-rest/src/yamlRestTest/java/org/elasticsearch/test/rest/yaml/RcsCcsCommonYamlTestSuiteIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public class RcsCcsCommonYamlTestSuiteIT extends ESClientYamlSuiteTestCase {
9696
.setting("xpack.security.remote_cluster_client.ssl.enabled", "false")
9797
.feature(FeatureFlag.TIME_SERIES_MODE)
9898
.feature(FeatureFlag.SYNTHETIC_VECTORS)
99+
.feature(FeatureFlag.GENERIC_VECTOR_FORMAT)
99100
.user("test_admin", "x-pack-test-password");
100101

101102
private static ElasticsearchCluster fulfillingCluster = ElasticsearchCluster.local()

qa/smoke-test-multinode/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestMultiNodeClientYamlTestSuiteIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class SmokeTestMultiNodeClientYamlTestSuiteIT extends ESClientYamlSuiteTe
3838
.feature(FeatureFlag.DOC_VALUES_SKIPPER)
3939
.feature(FeatureFlag.SYNTHETIC_VECTORS)
4040
.feature(FeatureFlag.RANDOM_SAMPLING)
41+
.feature(FeatureFlag.GENERIC_VECTOR_FORMAT)
4142
.build();
4243

4344
public SmokeTestMultiNodeClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) {

rest-api-spec/src/yamlRestTest/java/org/elasticsearch/test/rest/ClientYamlTestSuiteIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class ClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase {
3838
.feature(FeatureFlag.DOC_VALUES_SKIPPER)
3939
.feature(FeatureFlag.SYNTHETIC_VECTORS)
4040
.feature(FeatureFlag.RANDOM_SAMPLING)
41+
.feature(FeatureFlag.GENERIC_VECTOR_FORMAT)
4142
.build();
4243

4344
public ClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) {

rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/search.vectors/200_dense_vector_docvalue_fields.yml

Lines changed: 100 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ setup:
123123
- match: {hits.hits.0.fields.vector5.0: [1, 111, -13, 15, -128]}
124124
- match: {hits.hits.0.fields.vector6.0: [-1, 11, 0, 12, 111]}
125125

126-
127126
- match: {hits.hits.1._id: "2"}
128127
- match: {hits.hits.1.fields.name.0: "moose.jpg"}
129128

@@ -143,7 +142,6 @@ setup:
143142
- match: {hits.hits.1.fields.vector4.0: [-1, 50, -1, 1, 120]}
144143
- match: {hits.hits.1.fields.vector5.0: [1, 111, -13, 15, -128]}
145144

146-
147145
- match: {hits.hits.2._id: "3"}
148146
- match: {hits.hits.2.fields.name.0: "rabbit.jpg"}
149147

@@ -161,3 +159,103 @@ setup:
161159
- close_to: { hits.hits.2.fields.vector2.0.4: { value: -100.0, error: 0.001 } }
162160

163161
- match: {hits.hits.2.fields.vector3.0: [-1, 100, -13, 15, -128]}
162+
163+
---
164+
"dense_vector docvalues with bfloat16":
165+
- requires:
166+
cluster_features: [ "mapper.vectors.generic_vector_format" ]
167+
reason: Needs generic vector support
168+
- do:
169+
indices.create:
170+
index: test-bfloat16
171+
body:
172+
mappings:
173+
properties:
174+
name:
175+
type: keyword
176+
vector7:
177+
type: dense_vector
178+
element_type: bfloat16
179+
dims: 5
180+
index: true
181+
vector8:
182+
type: dense_vector
183+
element_type: bfloat16
184+
dims: 5
185+
index: false
186+
187+
- do:
188+
index:
189+
index: test-bfloat16
190+
id: "1"
191+
body:
192+
name: cow.jpg
193+
vector7: [230.0, 300.33, -34.8988, 15.555, -200.0]
194+
vector8: [130.0, 115.0, -1.02, 15.555, -100.0]
195+
- do:
196+
index:
197+
index: test-bfloat16
198+
id: "2"
199+
body:
200+
name: moose.jpg
201+
vector7: [-0.5, 100.0, -13, 14.8, -156.0]
202+
- do:
203+
index:
204+
index: test-bfloat16
205+
id: "3"
206+
body:
207+
name: rabbit.jpg
208+
vector8: [130.0, 115.0, -1.02, 15.555, -100.0]
209+
210+
- do:
211+
indices.refresh: {}
212+
213+
- do:
214+
search:
215+
_source: false
216+
index: test-bfloat16
217+
body:
218+
docvalue_fields: [name, vector7, vector8]
219+
sort: name
220+
221+
- match: {hits.hits.0._id: "1"}
222+
- match: {hits.hits.0.fields.name.0: "cow.jpg"}
223+
224+
- length: {hits.hits.0.fields.vector7.0: 5}
225+
- length: {hits.hits.0.fields.vector8.0: 5}
226+
227+
- close_to: { hits.hits.0.fields.vector7.0.0: { value: 230.0, error: 0.1 } }
228+
- close_to: { hits.hits.0.fields.vector7.0.1: { value: 300.33, error: 0.1 } }
229+
- close_to: { hits.hits.0.fields.vector7.0.2: { value: -34.8988, error: 0.1 } }
230+
- close_to: { hits.hits.0.fields.vector7.0.3: { value: 15.555, error: 0.1 } }
231+
- close_to: { hits.hits.0.fields.vector7.0.4: { value: -200.0, error: 0.1 } }
232+
233+
- close_to: { hits.hits.0.fields.vector8.0.0: { value: 130.0, error: 0.1 } }
234+
- close_to: { hits.hits.0.fields.vector8.0.1: { value: 115.0, error: 0.1 } }
235+
- close_to: { hits.hits.0.fields.vector8.0.2: { value: -1.02, error: 0.1 } }
236+
- close_to: { hits.hits.0.fields.vector8.0.3: { value: 15.555, error: 0.1 } }
237+
- close_to: { hits.hits.0.fields.vector8.0.4: { value: -100.0, error: 0.1 } }
238+
239+
- match: {hits.hits.1._id: "2"}
240+
- match: {hits.hits.1.fields.name.0: "moose.jpg"}
241+
242+
- length: {hits.hits.1.fields.vector7.0: 5}
243+
- match: {hits.hits.1.fields.vector8: null}
244+
245+
- close_to: { hits.hits.1.fields.vector7.0.0: { value: -0.5, error: 0.1 } }
246+
- close_to: { hits.hits.1.fields.vector7.0.1: { value: 100.0, error: 0.1 } }
247+
- close_to: { hits.hits.1.fields.vector7.0.2: { value: -13, error: 0.1 } }
248+
- close_to: { hits.hits.1.fields.vector7.0.3: { value: 14.8, error: 0.1 } }
249+
- close_to: { hits.hits.1.fields.vector7.0.4: { value: -156.0, error: 0.1 } }
250+
251+
- match: {hits.hits.2._id: "3"}
252+
- match: {hits.hits.2.fields.name.0: "rabbit.jpg"}
253+
254+
- length: {hits.hits.2.fields.vector8.0: 5}
255+
- match: {hits.hits.2.fields.vector7: null}
256+
257+
- close_to: { hits.hits.2.fields.vector8.0.0: { value: 130.0, error: 0.1 } }
258+
- close_to: { hits.hits.2.fields.vector8.0.1: { value: 115.0, error: 0.1 } }
259+
- close_to: { hits.hits.2.fields.vector8.0.2: { value: -1.02, error: 0.1 } }
260+
- close_to: { hits.hits.2.fields.vector8.0.3: { value: 15.555, error: 0.1 } }
261+
- close_to: { hits.hits.2.fields.vector8.0.4: { value: -100.0, error: 0.1 } }

0 commit comments

Comments
 (0)