Skip to content

Latest commit

 

History

History
164 lines (124 loc) · 4.75 KB

README.md

File metadata and controls

164 lines (124 loc) · 4.75 KB

Qdrant   Java

Java library for the Qdrant vector search engine.

Javadoc Tests Apache 2.0 License Discord Roadmap 2023

Qdrant Java Client

Java client library with handy utility methods and overloads for interfacing with Qdrant.

📥 Installation

Not yet published.

Important

Requires Java 8 or above.

To install the library, add the following lines to your build config file.

Maven

<dependency>
  <groupId>io.qdrant</groupId>
  <artifactId>client</artifactId>
  <version>1.0</version>
</dependency>

Scala SBT

libraryDependencies += "io.qdrant" % "client" % "1.0"

Gradle

implementation 'io.qdrant:client:1.0'

📖 Documentation

🔌 Connecting to Qdrant

Note

The library uses Qdrant's GRPC interface. The default port being 6334.

Uses TLS if the URL protocol is https, plaintext otherwise.

Connecting to a local Qdrant instance

import io.qdrant.client.QdrantClient;

QdrantClient client = new QdrantClient("http://localhost:6334");

Connecting to Qdrant cloud

import io.qdrant.client.QdrantClient;

QdrantClient client = new QdrantClient("https://xyz-eg.eu-central.aws.cloud.qdrant.io:6334", "<your-api-key>");

🧪 Example Usage

Click to expand example

You can connect to Qdrant by instantiating a QdrantClient instance.

import io.qdrant.client.QdrantClient;

QdrantClient client = new QdrantClient("http://localhost:6334");

System.out.println(client.listCollections());

Output:

collections {
name: "Documents"
}
collections {
name: "some_collection"
}
time: 7.04541E-4

We can now perform operations on the DB. Like creating a collection, adding a point.

The library offers handy utility methods for constructing GRPC structures.

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.qdrant.client.utils.*;

String collectionName = "Documents";

client.recreateCollection(collectionName, 6, Distance.Cosine);

Map<String, Object> map = new HashMap<>();
map.put("name", "John Doe");
map.put("age", 42);
map.put("married", true);

PointStruct point =
  PointUtil.point(
    0,
    VectorUtil.toVector(0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f),
    PayloadUtil.toPayload(map));
List<PointStruct> points = Arrays.asList(point);
client.upsertPoints(collectionName, points, null);

Performing a search on the vectors with filtering

import io.qdrant.client.grpc.Points.Filter;
import io.qdrant.client.grpc.Points.SearchPoints;
import io.qdrant.client.grpc.Points.SearchResponse;

import io.qdrant.client.utils.*;

Filter filter = FilterUtil.must(FilterUtil.fieldCondition("age", FilterUtil.match(42)));
      
SearchPoints request = SearchPoints.newBuilder()
        .setCollectionName(collectionName)
        .addAllVector(Arrays.asList(0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f))
        .setFilter(filter)
        .setWithPayload(SelectorUtil.withPayload())
        .setLimit(10)
        .build();
SearchResponse result = client.searchPoints(request);

ScoredPoint result = results.getResult(0);
            
System.out.println("Similarity: " + result.getScore());
System.out.println("Payload: " + PayloadUtil.toMap(result.getPayload()));

Output:

Similarity: 0.9999999
Payload: {name=John Doe, married=true, age=42}

⚖️ LICENSE

Apache 2.0 © 2023