Skip to content

qdrant/go-client

Repository files navigation

Qdrant Golang

Go client for the Qdrant vector search engine.

Godoc Tests Apache 2.0 License Discord Roadmap 2025

Go client library with handy utilities for interfacing with Qdrant.

📥 Installation

go get -u github.com/qdrant/go-client

📖 Documentation

🔌 Getting started

Creating a client

A client can be instantiated with

import "github.com/qdrant/go-client/qdrant"

client, err := qdrant.NewClient(&qdrant.Config{
  Host: "localhost",
  Port: 6334,
})

Which creates a client that will connect to Qdrant on http://localhost:6334.

Internally, the high-level client uses a low-level gRPC client to interact with Qdrant. qdrant.Config provides additional options to control how the gRPC client is configured. The following example configures API key authentication with TLS:

import "github.com/qdrant/go-client/qdrant"

client, err := qdrant.NewClient(&qdrant.Config{
	Host:   "xyz-example.eu-central.aws.cloud.qdrant.io",
	Port:   6334,
	APIKey: "<your-api-key>",
	UseTLS: true,  // uses default config with minimum TLS version set to 1.3
	// PoolSize: 3,
	// KeepAliveTime: 10,
	// KeepAliveTimeout: 2,
	// TLSConfig: &tls.Config{...},
	// GrpcOptions: []grpc.DialOption{},
})

Working with collections

Once a client has been created, create a new collection

import (
	"context"

	"github.com/qdrant/go-client/qdrant"
)

client.CreateCollection(context.Background(), &qdrant.CreateCollection{
	CollectionName: "{collection_name}",
	VectorsConfig: qdrant.NewVectorsConfig(&qdrant.VectorParams{
		Size:     4,
		Distance: qdrant.Distance_Cosine,
	}),
})

Insert vectors into the collection

operationInfo, err := client.Upsert(context.Background(), &qdrant.UpsertPoints{
	CollectionName: "{collection_name}",
	Points: []*qdrant.PointStruct{
		{
			Id:      qdrant.NewIDNum(1),
			Vectors: qdrant.NewVectors(0.05, 0.61, 0.76, 0.74),
			Payload: qdrant.NewValueMap(map[string]any{"city": "London"}),
		},
		{
			Id:      qdrant.NewIDNum(2),
			Vectors: qdrant.NewVectors(0.19, 0.81, 0.75, 0.11),
			Payload: qdrant.NewValueMap(map[string]any{"age": 32}),
		},
		{
			Id:      qdrant.NewIDNum(3),
			Vectors: qdrant.NewVectors(0.36, 0.55, 0.47, 0.94),
			Payload: qdrant.NewValueMap(map[string]any{"vegan": true}),
		},
	},
})

Search for similar vectors

searchResult, err := client.Query(context.Background(), &qdrant.QueryPoints{
	CollectionName: "{collection_name}",
	Query:          qdrant.NewQuery(0.2, 0.1, 0.9, 0.7),
})

Search for similar vectors with a filtering condition

searchResult, err := client.Query(context.Background(), &qdrant.QueryPoints{
	CollectionName: "{collection_name}",
	Query:          qdrant.NewQuery(0.2, 0.1, 0.9, 0.7),
	Filter: &qdrant.Filter{
		Must: []*qdrant.Condition{
			qdrant.NewMatch("city", "London"),
		},
	},
	WithPayload: qdrant.NewWithPayload(true),
})

⚖️ LICENSE

Apache 2.0

About

Go client for Qdrant vector search engine

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 17