LangChain4j Qdrant integration providing a vector store embedding implementation for Qdrant database with metadata filtering support
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
A vector store embedding implementation for Qdrant database that integrates with the LangChain4j framework.
Package: dev.langchain4j:langchain4j-qdrant:1.11.0
Java: 17+
Main Class: QdrantEmbeddingStore
Interface: EmbeddingStore<TextSegment>
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'import dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore;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();// 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()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)EmbeddingSearchResult<TextSegment> search(EmbeddingSearchRequest request)void remove(String id)
void removeAll(Collection<String> ids)
void removeAll(Filter filter)
void removeAll()void clearStore()
void close()For detailed information, see:
// 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;Need to initialize store? → See Setup for configuration options
Need to add embeddings?
add(Embedding)add(Embedding, TextSegment)addAll(List<Embedding>)Need to search?
EmbeddingSearchRequest with query, maxResults, minScore.filter(Filter) to requestNeed to remove?
remove(String id)removeAll(Collection<String> ids)removeAll(Filter filter)removeAll()Need metadata filtering? → See Filters for complete syntax
Getting errors? → See Error Handling
The library wraps the Qdrant gRPC client and provides:
Before using this library:
See Setup for detailed prerequisites and configuration.
This library implements the EmbeddingStore<TextSegment> interface and integrates seamlessly with:
TextSegment and Metadata supportEmbeddingSearchRequest supportExample 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.
QdrantEmbeddingStore store = QdrantEmbeddingStore.builder()
.collectionName("my-collection")
.build();QdrantEmbeddingStore store = QdrantEmbeddingStore.builder()
.host("your-cluster.qdrant.io")
.port(6334)
.collectionName("my-collection")
.useTls(true)
.apiKey("your-api-key")
.build();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