tenqz/qdrant

Simple PHP client for Qdrant vector database. Easy-to-use library for storing, searching, and managing vector embeddings in AI and machine learning applications.

Installs: 14

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/tenqz/qdrant

v1.0.0 2025-10-03 13:35 UTC

This package is auto-updated.

Last update: 2025-10-03 13:36:41 UTC


README

Qdrant PHP Client Library

Qdrant PHP Client

A simple PHP library for Qdrant vector database

Build Status Total Downloads Latest Stable Version License

๐Ÿ“– About

Qdrant PHP Client is a simple and easy library for working with Qdrant vector database. It helps you store and search vectors (embeddings) for AI and machine learning applications.

Version 1.0.0 includes complete API support for collections, points, search, and recommendations.

โœจ Features

  • ๐Ÿš€ Easy to use โ€” Simple API, clear code
  • ๐Ÿ” Vector Search โ€” Find similar items by vector similarity
  • ๐Ÿ“Š Batch Operations โ€” Work with many items at once
  • ๐ŸŽฏ Filters โ€” Search with conditions (price, category, etc.)
  • ๐Ÿ’ก Recommendations โ€” Get recommendations based on examples
  • ๐Ÿงช 100% Tested โ€” All features have tests
  • ๐Ÿ˜ PHP 7.2+ โ€” Works with old and new PHP versions
  • โšก Fast โ€” Uses cURL for speed

๐Ÿ“‹ Requirements

  • PHP 7.2 or higher
  • Extensions: ext-curl, ext-json
  • Qdrant server (local or cloud)

๐Ÿ“ฆ Installation

Install via Composer:

composer require tenqz/qdrant

๐Ÿš€ Quick Start

<?php

use Tenqz\Qdrant\QdrantClient;
use Tenqz\Qdrant\Transport\Infrastructure\Factory\CurlHttpClientFactory;

// 1. Create client
$factory = new CurlHttpClientFactory();
$httpClient = $factory->create('localhost', 6333);
$client = new QdrantClient($httpClient);

// 2. Create collection
$client->createCollection('my_collection', 4, 'Cosine');

// 3. Add vectors with data
$client->upsertPoints('my_collection', [
    ['id' => 1, 'vector' => [0.1, 0.2, 0.3, 0.4], 'payload' => ['city' => 'Berlin']],
    ['id' => 2, 'vector' => [0.5, 0.6, 0.7, 0.8], 'payload' => ['city' => 'London']],
]);

// 4. Search for similar vectors
$results = $client->search('my_collection', [0.2, 0.1, 0.9, 0.7], 5);

See examples/basicUsage.php and examples/README.md for complete examples of all features.

๐Ÿ“š API Methods

Collections

Method Description Example
createCollection() Create new collection $client->createCollection('my_vectors', 128, 'Cosine')
getCollection() Get collection info $client->getCollection('my_vectors')
listCollections() List all collections $client->listCollections()
deleteCollection() Delete collection $client->deleteCollection('my_vectors')

Points Operations

Method Description Example
upsertPoints() Add or update points $client->upsertPoints('my_vectors', $points)
getPoint() Get one point by ID $client->getPoint('my_vectors', 1)
getPoints() Get multiple points $client->getPoints('my_vectors', [1, 2, 3])
deletePoints() Delete points $client->deletePoints('my_vectors', [1, 2, 3])
setPayload() Update point metadata $client->setPayload('my_vectors', ['new' => true], [1, 2])
deletePayload() Delete metadata fields $client->deletePayload('my_vectors', ['old_field'], [1, 2])
scroll() Get points page by page $client->scroll('my_vectors', 100)
countPoints() Count points $client->countPoints('my_vectors')

Search & Recommendations

Method Description Example
search() Find similar vectors $client->search('my_vectors', [0.1, 0.2], 10)
searchBatch() Multiple searches at once $client->searchBatch('my_vectors', [$query1, $query2])
recommend() Get recommendations $client->recommend('my_vectors', [1, 5], [3], 10)

๐Ÿ’ก Examples

See examples/basicUsage.php for complete examples of:

  • Creating collections with different settings
  • Adding and updating data
  • Vector similarity search
  • Search with filters (price, category, etc.)
  • Recommendations (like/unlike items)
  • Batch operations
  • Pagination with scroll
  • And more!

Run the example:

php examples/basicUsage.php

๐Ÿ›ก๏ธ Error Handling

use Tenqz\Qdrant\Transport\Domain\Exception\TransportException;
use Tenqz\Qdrant\Transport\Domain\Exception\HttpException;
use Tenqz\Qdrant\Transport\Domain\Exception\NetworkException;

try {
    $result = $client->search('my_collection', [0.1, 0.2], 10);
    
} catch (HttpException $e) {
    // HTTP errors (404, 500, etc.)
    echo "HTTP Error {$e->getStatusCode()}: {$e->getMessage()}\n";
    print_r($e->getResponse());
    
} catch (NetworkException $e) {
    // Network problems (connection failed, timeout)
    echo "Network Error: {$e->getMessage()}\n";
    
} catch (TransportException $e) {
    // Other transport errors
    echo "Error: {$e->getMessage()}\n";
}

Error Types

  • HttpException โ€” HTTP errors like 404 Not Found, 500 Server Error
  • NetworkException โ€” Connection problems, timeouts, DNS errors
  • SerializationException โ€” JSON parsing errors
  • TransportException โ€” Base class for all errors (catch-all)

๐Ÿงช Testing

Run tests:

composer install
composer test

๐Ÿ“– Documentation

๐Ÿค Contributing

Contributions are welcome! Please see CONTRIBUTING.md for detailed guidelines.

Quick steps:

  1. Fork the repository
  2. Create a feature branch
  3. Write tests for new features
  4. Submit a pull request

๐Ÿ“„ License

MIT License. See LICENSE for details.

๐Ÿ“ž Contact

Author: Oleg Patsay
Email: smmartbiz@gmail.com
GitHub: tenqz/qdrant

โญ Like this project? Give it a star on GitHub!