Skip to the content.

API Reference

This document provides a detailed reference for the key classes and methods in the Qdrant Multi-Node Cluster project. Understanding these APIs will help you interact with the Qdrant cluster and build your own vector search applications.

QdrantClusterDemo Class

The QdrantClusterDemo class is the primary interface for interacting with the Qdrant cluster. It provides methods for collection management, data insertion, and vector search operations.

from qdrant_demo.core.cluster_demo import QdrantClusterDemo

demo = QdrantClusterDemo(host="localhost", port=6333)

Constructor

def __init__(self, host: str = settings.QDRANT_HOST, port: int = settings.QDRANT_PORT)

Parameters:

Returns:

Methods

run_demo

def run_demo(self) -> None

Runs the complete demonstration, including setting up a collection, inserting data, demonstrating vector search, and displaying collection statistics.

Parameters: None

Returns: None

setup_collection

def setup_collection(self) -> None

Sets up a collection with advanced configuration, including sharding and replication.

Parameters: None

Returns: None

Example:

demo = QdrantClusterDemo()
demo.setup_collection()

insert_data

def insert_data(self, count: int = settings.DEFAULT_POINT_COUNT) -> None

Inserts a specified number of random vectors with payload data.

Parameters:

Returns: None

Example:

# Insert 1000 random vectors
demo.insert_data(1000)
def demonstrate_vector_search(self) -> None

Demonstrates basic vector search capabilities, including filtered searches.

Parameters: None

Returns: None

Example:

demo.demonstrate_vector_search()

demonstrate_scrolling

def demonstrate_scrolling(
    self, 
    batches: int = settings.DEFAULT_BATCH_COUNT, 
    batch_size: int = settings.DEFAULT_BATCH_SIZE
) -> None

Demonstrates the scrolling API for paginating through large result sets.

Parameters:

Returns: None

Example:

# Retrieve 5 batches of 20 points each
demo.demonstrate_scrolling(batches=5, batch_size=20)

get_cluster_stats

def get_cluster_stats(self) -> None

Retrieves and displays collection and cluster statistics.

Parameters: None

Returns: None

Example:

demo.get_cluster_stats()

Data Generator Utilities

The data_generator module provides utilities for generating random vector data.

from qdrant_demo.utils import data_generator

Functions

generate_random_vector

def generate_random_vector(vector_size: int = settings.VECTOR_SIZE) -> List[float]

Generates a random vector of specified dimensions.

Parameters:

Returns:

Example:

# Generate a random vector with 768 dimensions
vector = data_generator.generate_random_vector(768)

generate_random_category

def generate_random_category() -> str

Generates a random category from the predefined list.

Parameters: None

Returns:

Example:

category = data_generator.generate_random_category()

generate_payload

def generate_payload() -> Dict[str, Any]

Generates a random payload for a vector point.

Parameters: None

Returns:

Example:

payload = data_generator.generate_payload()

Direct Qdrant Client Usage

For more advanced use cases, you can use the Qdrant client directly:

from qdrant_client import QdrantClient
from qdrant_client.http import models

client = QdrantClient(host="localhost", port=6333)

Creating a Collection

client.create_collection(
    collection_name="my_collection",
    shard_number=4,
    vectors_config=models.VectorParams(
        size=768, 
        distance=models.Distance.COSINE
    ),
    optimizers_config=models.OptimizersConfigDiff(
        indexing_threshold=20000,
        memmap_threshold=50000
    ),
    on_disk_payload=True
)

Inserting Points

client.upsert(
    collection_name="my_collection",
    points=[
        models.PointStruct(
            id=1,
            vector=[0.1, 0.2, 0.3, ...],
            payload={"category": "electronics", "score": 7.5}
        ),
    ],
)
search_result = client.search(
    collection_name="my_collection",
    query_vector=[0.1, 0.2, 0.3, ...],
    limit=5
)
filtered_search_result = client.search(
    collection_name="my_collection",
    query_vector=[0.1, 0.2, 0.3, ...],
    query_filter=models.Filter(
        must=[
            models.FieldCondition(
                key="category",
                match=models.MatchValue(value="electronics")
            ),
            models.FieldCondition(
                key="score",
                range=models.Range(
                    gte=5.0,
                )
            )
        ]
    ),
    limit=5
)

Pagination with Scrolling

offset = None
batch_size = 10

while True:
    scroll_result = client.scroll(
        collection_name="my_collection",
        limit=batch_size,
        offset=offset,
        with_payload=True,
        with_vectors=False,
    )
    points, offset = scroll_result
    
    # Process points here...
    
    if offset is None:
        break  # No more points to retrieve

Getting Collection Information

collection_info = client.get_collection("my_collection")

Command Line Interface

The project provides a command-line interface for running the demo:

python src/run_demo.py --host localhost --port 6333 --points 2000

Arguments