Skip to content

Commit 89fbe88

Browse files
committed
refactor: use Target-Vector API for nearVector requests
1 parent 4d5bd06 commit 89fbe88

4 files changed

Lines changed: 83 additions & 25 deletions

File tree

src/main/java/io/weaviate/client6/v1/api/collections/aggregate/AbstractAggregateClient.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.weaviate.client6.v1.api.collections.query.NearThermal;
1616
import io.weaviate.client6.v1.api.collections.query.NearVector;
1717
import io.weaviate.client6.v1.api.collections.query.NearVideo;
18+
import io.weaviate.client6.v1.api.collections.query.Target;
1819
import io.weaviate.client6.v1.internal.ObjectBuilder;
1920
import io.weaviate.client6.v1.internal.grpc.GrpcTransport;
2021
import io.weaviate.client6.v1.internal.orm.CollectionDescriptor;
@@ -197,7 +198,7 @@ public GroupedResponseT hybrid(Hybrid filter, Function<Aggregation.Builder, Obje
197198
* @see AggregateResponse
198199
*/
199200
public ResponseT nearVector(float[] vector, Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn) {
200-
return nearVector(NearVector.of(vector), fn);
201+
return nearVector(NearVector.of(Target.vector(vector)), fn);
201202
}
202203

203204
/**
@@ -214,7 +215,7 @@ public ResponseT nearVector(float[] vector, Function<Aggregation.Builder, Object
214215
*/
215216
public ResponseT nearVector(float[] vector, Function<NearVector.Builder, ObjectBuilder<NearVector>> nv,
216217
Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn) {
217-
return nearVector(NearVector.of(vector, nv), fn);
218+
return nearVector(NearVector.of(Target.vector(vector), nv), fn);
218219
}
219220

220221
/**
@@ -248,7 +249,7 @@ public ResponseT nearVector(NearVector filter, Function<Aggregation.Builder, Obj
248249
*/
249250
public GroupedResponseT nearVector(float[] vector, Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn,
250251
GroupBy groupBy) {
251-
return nearVector(NearVector.of(vector), fn, groupBy);
252+
return nearVector(NearVector.of(Target.vector(vector)), fn, groupBy);
252253
}
253254

254255
/**
@@ -268,7 +269,7 @@ public GroupedResponseT nearVector(float[] vector, Function<Aggregation.Builder,
268269
*/
269270
public GroupedResponseT nearVector(float[] vector, Function<NearVector.Builder, ObjectBuilder<NearVector>> nv,
270271
Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn, GroupBy groupBy) {
271-
return nearVector(NearVector.of(vector, nv), fn, groupBy);
272+
return nearVector(NearVector.of(Target.vector(vector), nv), fn, groupBy);
272273
}
273274

274275
/**

src/main/java/io/weaviate/client6/v1/api/collections/data/InsertManyRequest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import io.weaviate.client6.v1.api.collections.CollectionHandleDefaults;
1111
import io.weaviate.client6.v1.api.collections.ObjectMetadata;
1212
import io.weaviate.client6.v1.api.collections.WeaviateObject;
13-
import io.weaviate.client6.v1.internal.Debug;
1413
import io.weaviate.client6.v1.internal.MapUtil;
1514
import io.weaviate.client6.v1.internal.grpc.ByteStringUtil;
1615
import io.weaviate.client6.v1.internal.grpc.Rpc;
@@ -162,8 +161,6 @@ public static <T> void buildObject(WeaviateProtoBatch.BatchObject.Builder object
162161
.setNonRefProperties(nonRef)
163162
.addAllSingleTargetRefProps(singleRef)
164163
.addAllMultiTargetRefProps(multiRef));
165-
166-
Debug.printProto(object);
167164
}
168165

169166
@SuppressWarnings("unchecked")

src/main/java/io/weaviate/client6/v1/api/collections/query/AbstractQueryClient.java

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ public GroupedResponseT hybrid(Hybrid query, GroupBy groupBy) {
317317
* error status code.
318318
*/
319319
public ResponseT nearVector(float[] vector) {
320-
return nearVector(NearVector.of(vector));
320+
return nearVector(Target.vector(vector));
321321
}
322322

323323
/**
@@ -329,7 +329,31 @@ public ResponseT nearVector(float[] vector) {
329329
* error status code.
330330
*/
331331
public ResponseT nearVector(float[] vector, Function<NearVector.Builder, ObjectBuilder<NearVector>> fn) {
332-
return nearVector(NearVector.of(vector, fn));
332+
return nearVector(Target.vector(vector), fn);
333+
}
334+
335+
/**
336+
* Query collection objects using near vector search.
337+
*
338+
* @param searchTarget Target query vectors.
339+
* @throws WeaviateApiException in case the server returned with an
340+
* error status code.
341+
*/
342+
public ResponseT nearVector(NearVectorTarget searchTarget) {
343+
return performRequest(NearVector.of(searchTarget));
344+
}
345+
346+
/**
347+
* Query collection objects using near vector search.
348+
*
349+
* @param searchTarget Target query vectors.
350+
* @param fn Lambda expression for optional parameters.
351+
* @throws WeaviateApiException in case the server returned with an
352+
* error status code.
353+
*/
354+
public ResponseT nearVector(NearVectorTarget searchTarget,
355+
Function<NearVector.Builder, ObjectBuilder<NearVector>> fn) {
356+
return performRequest(NearVector.of(searchTarget, fn));
333357
}
334358

335359
/**
@@ -356,7 +380,7 @@ public ResponseT nearVector(NearVector query) {
356380
* @see QueryResponseGrouped
357381
*/
358382
public GroupedResponseT nearVector(float[] vector, GroupBy groupBy) {
359-
return nearVector(NearVector.of(vector), groupBy);
383+
return nearVector(Target.vector(vector), groupBy);
360384
}
361385

362386
/**
@@ -374,7 +398,42 @@ public GroupedResponseT nearVector(float[] vector, GroupBy groupBy) {
374398
*/
375399
public GroupedResponseT nearVector(float[] vector, Function<NearVector.Builder, ObjectBuilder<NearVector>> fn,
376400
GroupBy groupBy) {
377-
return nearVector(NearVector.of(vector, fn), groupBy);
401+
return nearVector(Target.vector(vector), fn, groupBy);
402+
}
403+
404+
/**
405+
* Query collection objects using near vector search.
406+
*
407+
* @param searchTarget Target query vectors.
408+
* @param groupBy Group-by clause.
409+
* @return Grouped query result.
410+
* @throws WeaviateApiException in case the server returned with an
411+
* error status code.
412+
*
413+
* @see GroupBy
414+
* @see QueryResponseGrouped
415+
*/
416+
public GroupedResponseT nearVector(NearVectorTarget searchTarget,
417+
GroupBy groupBy) {
418+
return performRequest(NearVector.of(searchTarget), groupBy);
419+
}
420+
421+
/**
422+
* Query collection objects using near vector search.
423+
*
424+
* @param searchTarget Target query vectors.
425+
* @param fn Lambda expression for optional parameters.
426+
* @return Grouped query result.
427+
* @throws WeaviateApiException in case the server returned with an
428+
* error status code.
429+
*
430+
* @see GroupBy
431+
* @see QueryResponseGrouped
432+
*/
433+
public GroupedResponseT nearVector(NearVectorTarget searchTarget,
434+
Function<NearVector.Builder, ObjectBuilder<NearVector>> fn,
435+
GroupBy groupBy) {
436+
return performRequest(NearVector.of(searchTarget, fn), groupBy);
378437
}
379438

380439
/**

src/main/java/io/weaviate/client6/v1/api/collections/query/NearVector.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,31 @@
44

55
import io.weaviate.client6.v1.api.collections.aggregate.AggregateObjectFilter;
66
import io.weaviate.client6.v1.internal.ObjectBuilder;
7-
import io.weaviate.client6.v1.internal.grpc.ByteStringUtil;
87
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoAggregate;
9-
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBase;
108
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
119
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1210

13-
public record NearVector(float[] vector, Float distance, Float certainty, BaseQueryOptions common)
11+
public record NearVector(NearVectorTarget searchTarget, Float distance, Float certainty, BaseQueryOptions common)
1412
implements QueryOperator, AggregateObjectFilter {
1513

16-
public static final NearVector of(float[] vector) {
17-
return of(vector, ObjectBuilder.identity());
14+
public static final NearVector of(NearVectorTarget searchTarget) {
15+
return of(searchTarget, ObjectBuilder.identity());
1816
}
1917

20-
public static final NearVector of(float[] vector, Function<Builder, ObjectBuilder<NearVector>> fn) {
21-
return fn.apply(new Builder(vector)).build();
18+
public static final NearVector of(NearVectorTarget searchTarget, Function<Builder, ObjectBuilder<NearVector>> fn) {
19+
return fn.apply(new Builder(searchTarget)).build();
2220
}
2321

2422
public NearVector(Builder builder) {
25-
this(builder.vector, builder.distance, builder.certainty, builder.baseOptions());
23+
this(builder.searchTarget, builder.distance, builder.certainty, builder.baseOptions());
2624
}
2725

2826
public static class Builder extends BaseVectorSearchBuilder<Builder, NearVector> {
2927
// Required query parameters.
30-
private final float[] vector;
28+
private final NearVectorTarget searchTarget;
3129

32-
public Builder(float[] vector) {
33-
this.vector = vector;
30+
public Builder(NearVectorTarget searchTarget) {
31+
this.searchTarget = searchTarget;
3432
}
3533

3634
@Override
@@ -56,9 +54,12 @@ public void appendTo(WeaviateProtoAggregate.AggregateRequest.Builder req) {
5654
// This is made package-private for Hybrid to see. Should we refactor?
5755
WeaviateProtoBaseSearch.NearVector.Builder protoBuilder() {
5856
var nearVector = WeaviateProtoBaseSearch.NearVector.newBuilder();
59-
nearVector.addVectors(WeaviateProtoBase.Vectors.newBuilder()
60-
.setType(WeaviateProtoBase.Vectors.VectorType.VECTOR_TYPE_SINGLE_FP32)
61-
.setVectorBytes(ByteStringUtil.encodeVectorSingle(vector)));
57+
58+
searchTarget.appendVectors(nearVector);
59+
var targets = WeaviateProtoBaseSearch.Targets.newBuilder();
60+
if (searchTarget.appendTargets(targets)) {
61+
nearVector.setTargets(targets);
62+
}
6263

6364
if (certainty != null) {
6465
nearVector.setCertainty(certainty);

0 commit comments

Comments
 (0)