Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# The version of qdrant to use to download protos
qdrantProtosVersion=v1.15.0
qdrantProtosVersion=dev

# The version of qdrant docker image to run integration tests against
qdrantVersion=v1.15.0
qdrantVersion=dev

# The version of the client to generate
packageVersion=1.15.0
packageVersion=1.16.0
39 changes: 22 additions & 17 deletions src/main/java/io/qdrant/client/VectorFactory.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package io.qdrant.client;

import com.google.common.primitives.Floats;
import io.qdrant.client.grpc.Points.DenseVector;
import io.qdrant.client.grpc.Points.Document;
import io.qdrant.client.grpc.Points.Image;
import io.qdrant.client.grpc.Points.InferenceObject;
import io.qdrant.client.grpc.Points.SparseIndices;
import io.qdrant.client.grpc.Points.MultiDenseVector;
import io.qdrant.client.grpc.Points.SparseVector;
import io.qdrant.client.grpc.Points.Vector;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -21,7 +23,9 @@ private VectorFactory() {}
* @return A new instance of {@link Vector}
*/
public static Vector vector(List<Float> values) {
return Vector.newBuilder().addAllData(values).build();
return Vector.newBuilder()
.setDense(DenseVector.newBuilder().addAllData(values).build())
.build();
}

/**
Expand All @@ -31,7 +35,9 @@ public static Vector vector(List<Float> values) {
* @return A new instance of {@link Vector}
*/
public static Vector vector(float... values) {
return Vector.newBuilder().addAllData(Floats.asList(values)).build();
return Vector.newBuilder()
.setDense(DenseVector.newBuilder().addAllData(Floats.asList(values)).build())
.build();
}

/**
Expand All @@ -43,8 +49,7 @@ public static Vector vector(float... values) {
*/
public static Vector vector(List<Float> vector, List<Integer> indices) {
return Vector.newBuilder()
.addAllData(vector)
.setIndices(SparseIndices.newBuilder().addAllData(indices).build())
.setSparse(SparseVector.newBuilder().addAllValues(vector).addAllIndices(indices).build())
.build();
}

Expand Down Expand Up @@ -85,10 +90,13 @@ public static Vector vector(InferenceObject object) {
* @return A new instance of {@link Vector}
*/
public static Vector multiVector(List<List<Float>> vectors) {
int vectorSize = vectors.size();
List<Float> flatVector = vectors.stream().flatMap(List::stream).collect(Collectors.toList());

return Vector.newBuilder().addAllData(flatVector).setVectorsCount(vectorSize).build();
List<DenseVector> denseVectors =
vectors.stream()
.map(v -> DenseVector.newBuilder().addAllData(v).build())
.collect(Collectors.toList());
return Vector.newBuilder()
.setMultiDense(MultiDenseVector.newBuilder().addAllVectors(denseVectors).build())
.build();
}

/**
Expand All @@ -98,15 +106,12 @@ public static Vector multiVector(List<List<Float>> vectors) {
* @return A new instance of {@link Vector}
*/
public static Vector multiVector(float[][] vectors) {
int vectorSize = vectors.length;

List<Float> flatVector = new ArrayList<>();
List<DenseVector> denseVectors = new ArrayList<>();
for (float[] vector : vectors) {
for (float value : vector) {
flatVector.add(value);
}
denseVectors.add(DenseVector.newBuilder().addAllData(Floats.asList(vector)).build());
}

return Vector.newBuilder().addAllData(flatVector).setVectorsCount(vectorSize).build();
return Vector.newBuilder()
.setMultiDense(MultiDenseVector.newBuilder().addAllVectors(denseVectors).build())
.build();
}
}
16 changes: 8 additions & 8 deletions src/test/java/io/qdrant/client/ApiKeyTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
import io.grpc.ManagedChannel;
import io.grpc.Status;
import io.grpc.StatusRuntimeException;
import io.qdrant.client.grpc.QdrantOuterClass.HealthCheckReply;
import io.qdrant.client.grpc.QdrantOuterClass.HealthCheckRequest;
import io.qdrant.client.grpc.Collections.ListCollectionsRequest;
Copy link
Member Author

Choose a reason for hiding this comment

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

Health check isn't behind auth anymore.
So we use a different API for auth tests.

import io.qdrant.client.grpc.Collections.ListCollectionsResponse;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.AfterEach;
Expand Down Expand Up @@ -44,15 +44,14 @@ public void teardown() throws InterruptedException {

@Test
public void client_with_api_key_can_connect() throws ExecutionException, InterruptedException {
HealthCheckReply healthCheckReply;
ListCollectionsResponse listCollectionsResponse;
try (QdrantGrpcClient grpcClient =
QdrantGrpcClient.newBuilder(channel).withApiKey("password!").build()) {
healthCheckReply =
grpcClient.qdrant().healthCheck(HealthCheckRequest.getDefaultInstance()).get();
listCollectionsResponse =
grpcClient.collections().list(ListCollectionsRequest.getDefaultInstance()).get();
}

assertNotNull(healthCheckReply.getTitle());
assertNotNull(healthCheckReply.getVersion());
assertNotNull(listCollectionsResponse.getCollectionsList());
}

@Test
Expand All @@ -61,7 +60,8 @@ public void client_without_api_key_cannot_connect() {
ExecutionException executionException =
assertThrows(
ExecutionException.class,
() -> grpcClient.qdrant().healthCheck(HealthCheckRequest.getDefaultInstance()).get());
() ->
grpcClient.collections().list(ListCollectionsRequest.getDefaultInstance()).get());
Throwable cause = executionException.getCause();
assertEquals(StatusRuntimeException.class, cause.getClass());
StatusRuntimeException statusRuntimeException = (StatusRuntimeException) cause;
Expand Down
Loading