CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-dev-langchain4j--langchain4j-qdrant

LangChain4j Qdrant integration providing a vector store embedding implementation for Qdrant database with metadata filtering support

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

index.mddocs/

LangChain4j Qdrant Integration

A vector store embedding implementation for Qdrant database that integrates with the LangChain4j framework.

Quick Reference

Package: dev.langchain4j:langchain4j-qdrant:1.11.0 Java: 17+ Main Class: QdrantEmbeddingStore Interface: EmbeddingStore<TextSegment>

Installation

Maven:

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-qdrant</artifactId>
    <version>1.11.0</version>
</dependency>

Gradle:

implementation 'dev.langchain4j:langchain4j-qdrant:1.11.0'

Core Import

import dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore;

Minimal Example

import dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
import dev.langchain4j.store.embedding.EmbeddingSearchResult;

// Create store
QdrantEmbeddingStore store = QdrantEmbeddingStore.builder()
    .collectionName("my-collection")
    .build();

// Add embedding
Embedding embedding = Embedding.from(new float[]{0.1f, 0.2f, 0.3f});
TextSegment segment = TextSegment.from("Sample text");
String id = store.add(embedding, segment);

// Search
Embedding query = Embedding.from(new float[]{0.11f, 0.21f, 0.31f});
EmbeddingSearchRequest request = EmbeddingSearchRequest.builder()
    .queryEmbedding(query)
    .maxResults(5)
    .minScore(0.7)
    .build();
EmbeddingSearchResult<TextSegment> results = store.search(request);

// Clean up
store.close();

Key Capabilities

  • Add embeddings: With or without IDs, text segments, and metadata
  • Search embeddings: Cosine similarity search with optional metadata filtering
  • Remove embeddings: By ID, multiple IDs, filter, or clear all
  • Metadata support: String, Integer, Long, Double, Float, UUID
  • Filter operations: Equality, comparison, range, logical (AND/OR/NOT)

API Quick Reference

Store Creation

// Builder pattern (recommended)
QdrantEmbeddingStore.builder()
    .collectionName(String)    // REQUIRED
    .host(String)              // Default: "localhost"
    .port(int)                 // Default: 6334
    .useTls(boolean)           // Default: false
    .apiKey(String)            // Optional
    .payloadTextKey(String)    // Default: "text_segment"
    .client(QdrantClient)      // Optional custom client
    .build()

Add Operations

String add(Embedding embedding)
void add(String id, Embedding embedding)
String add(Embedding embedding, TextSegment textSegment)
List<String> addAll(List<Embedding> embeddings)
void addAll(List<String> ids, List<Embedding> embeddings, List<TextSegment> textSegments)

Search Operations

EmbeddingSearchResult<TextSegment> search(EmbeddingSearchRequest request)

Remove Operations

void remove(String id)
void removeAll(Collection<String> ids)
void removeAll(Filter filter)
void removeAll()

Lifecycle

void clearStore()
void close()

Documentation Structure

For detailed information, see:

  • API Reference - Complete API signatures and constructors
  • Examples - Common usage patterns and code examples
  • Filters - Metadata filtering syntax and operations
  • Setup - Prerequisites, Qdrant configuration, connection options
  • Error Handling - Exception types and handling patterns

Common Imports

// Core classes
import dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.data.document.Metadata;

// Search
import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
import dev.langchain4j.store.embedding.EmbeddingSearchResult;
import dev.langchain4j.store.embedding.EmbeddingMatch;

// Filters
import dev.langchain4j.store.embedding.filter.Filter;
import static dev.langchain4j.store.embedding.filter.MetadataFilterBuilder.*;

// Qdrant client (optional)
import io.qdrant.client.QdrantClient;
import io.qdrant.client.QdrantGrpcClient;

Quick Decision Tree

Need to initialize store? → See Setup for configuration options

Need to add embeddings?

  • Single embedding → add(Embedding)
  • With text/metadata → add(Embedding, TextSegment)
  • Multiple embeddings → addAll(List<Embedding>)
  • See Examples

Need to search?

  • Basic search → Build EmbeddingSearchRequest with query, maxResults, minScore
  • With filters → Add .filter(Filter) to request
  • See Examples and Filters

Need to remove?

  • Single → remove(String id)
  • Multiple → removeAll(Collection<String> ids)
  • By metadata → removeAll(Filter filter)
  • Everything → removeAll()

Need metadata filtering? → See Filters for complete syntax

Getting errors? → See Error Handling

Architecture Notes

The library wraps the Qdrant gRPC client and provides:

  • Vector Storage: Stores embeddings as Qdrant points with UUID-based identifiers
  • Metadata Management: Bidirectional conversion between LangChain4j Metadata and Qdrant payload
  • Filter Translation: Converts LangChain4j filter expressions to Qdrant filter format
  • Similarity Search: Cosine similarity-based vector search with optional filtering
  • Type Conversion: Handles conversion between Java types and Qdrant Value types

Prerequisites Checklist

Before using this library:

  1. ✓ Running Qdrant instance (local or cloud)
  2. ✓ Qdrant collection created with vector dimensions matching your embeddings
  3. ✓ Collection configured with cosine distance

See Setup for detailed prerequisites and configuration.

Integration with LangChain4j

This library implements the EmbeddingStore<TextSegment> interface and integrates seamlessly with:

  • Embedding Models: Any LangChain4j embedding model
  • Document Processing: TextSegment and Metadata support
  • Semantic Search: Native EmbeddingSearchRequest support
  • Retrieval Systems: Compatible with RAG and retrieval patterns

Example with embedding model:

import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.embedding.AllMiniLmL6V2QuantizedEmbeddingModel;

EmbeddingModel model = new AllMiniLmL6V2QuantizedEmbeddingModel();
QdrantEmbeddingStore store = QdrantEmbeddingStore.builder()
    .collectionName("documents")
    .build();

TextSegment segment = TextSegment.from("Sample text");
Embedding embedding = model.embed(segment).content();
store.add(embedding, segment);

See Examples for complete integration patterns.

Configuration Patterns

Local Development

QdrantEmbeddingStore store = QdrantEmbeddingStore.builder()
    .collectionName("my-collection")
    .build();

Cloud Deployment

QdrantEmbeddingStore store = QdrantEmbeddingStore.builder()
    .host("your-cluster.qdrant.io")
    .port(6334)
    .collectionName("my-collection")
    .useTls(true)
    .apiKey("your-api-key")
    .build();

Custom Client

QdrantClient client = new QdrantClient(
    QdrantGrpcClient.newBuilder("localhost", 6334, false)
        .withApiKey("your-api-key")
        .build()
);
QdrantEmbeddingStore store = QdrantEmbeddingStore.builder()
    .client(client)
    .collectionName("my-collection")
    .build();

See Setup for more configuration options.

Install with Tessl CLI

npx tessl i tessl/maven-dev-langchain4j--langchain4j-qdrant@1.11.0

docs

api.md

error-handling.md

examples.md

filters.md

index.md

setup.md

tile.json