
Qdrant
Wire Qdrant vector search and LangChain4j RAG into a Spring Boot backend with copy-paste Java structure and dependencies.
Overview
Qdrant is an agent skill for the Build phase that provides Spring Boot and Java examples for integrating Qdrant vector search and LangChain4j RAG into backend APIs.
Install
npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill qdrantWhat is this skill?
- Full Spring Boot layout: QdrantConfig, Langchain4jConfig, SearchController, RagController
- Pinned dependency examples for io.qdrant client 1.15.0 and LangChain4j 1.7.0 integrations
- VectorSearchService and RagService patterns for semantic retrieval
- LangChain4j Qdrant embedding store plus all-MiniLM embedding model reference
- REST-facing search and RAG controllers for productized semantic features
- Qdrant Java client example version 1.15.0
- LangChain4j integration examples at version 1.7.0
- Seven-package Spring Boot layout (config, controller, service, application entry)
Adoption & trust: 1.1k installs on skills.sh; 271 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are building RAG or semantic search in Java but lack a coherent Spring Boot + Qdrant + LangChain4j project structure and dependency set.
Who is it for?
Indie SaaS backends on Spring Boot adding Qdrant-backed search or RAG endpoints with LangChain4j.
Skip if: Python-only stacks, frontend-only embedding UX, or teams that want managed vector DB abstractions without running Qdrant infrastructure.
When should I use this skill?
Integrating Qdrant with Java or Spring Boot for vector search, embedding stores, or LangChain4j RAG endpoints.
What do I get? / Deliverables
You get a documented multi-layer Spring app with Qdrant config, search/RAG services, and REST controllers ready to adapt to your domain collections and prompts.
- Spring Boot project structure with Qdrant and LangChain4j configuration classes
- VectorSearchService and RagService implementation patterns
- Search and RAG REST controller stubs
Recommended Skills
Journey fit
The skill is implementation-heavy Java/Spring integration for vector stores and RAG endpoints—canonical placement is Build backend, not a cross-journey methodology. Backend subphase covers services, controllers, and persistence adapters; Qdrant client, config beans, and search/RAG services fit that layer.
How it compares
Skill package for JVM Qdrant integration—not a hosted Pinecone MCP connector or a generic SQL database skill.
Common Questions / FAQ
Who is qdrant for?
Java and Spring Boot developers integrating Qdrant as the vector store behind search and RAG features in a solo-built API or SaaS.
When should I use qdrant?
During Build backend work when you scaffold Qdrant client config, embedding stores, VectorSearchService, RagService, and exposing controllers—after you have a Qdrant instance reachable from your app.
Is qdrant safe to install?
It is documentation and code templates referencing public Maven artifacts; review the Security Audits panel on this Prism page and pin versions you trust in your own pom.xml.
SKILL.md
READMESKILL.md - Qdrant
# Qdrant for Java: Complete Examples This file provides comprehensive code examples for integrating Qdrant with Java and Spring Boot applications. ## 1. Complete Spring Boot Application with Qdrant This example demonstrates a full Spring Boot application with Qdrant integration for vector search. ### Project Structure ``` /src/main/java/com/example/qdrantdemo/ ├── QdrantDemoApplication.java ├── config/ │ ├── QdrantConfig.java │ └── Langchain4jConfig.java ├── controller/ │ ├── SearchController.java │ └── RagController.java ├── service/ │ ├── VectorSearchService.java │ └── RagService.java └── Application.properties ``` ### Dependencies (pom.xml) ```xml <dependencies> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Qdrant Java Client --> <dependency> <groupId>io.qdrant</groupId> <artifactId>client</artifactId> <version>1.15.0</version> </dependency> <!-- LangChain4j --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-qdrant</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-all-minilm-l6-v2</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai</artifactId> <version>1.7.0</version> </dependency> </dependencies> ``` ### Application Configuration (application.properties) ```properties # Qdrant Configuration qdrant.host=localhost qdrant.port=6334 qdrant.api-key= # OpenAI Configuration (for RAG) openai.api-key=YOUR_OPENAI_API_KEY ``` ### Qdrant Configuration ```java package com.example.qdrantdemo.config; import io.qdrant.client.QdrantClient; import io.qdrant.client.QdrantGrpcClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class QdrantConfig { @Value("${qdrant.host:localhost}") private String host; @Value("${qdrant.port:6334}") private int port; @Value("${qdrant.api-key:}") private String apiKey; @Bean public QdrantClient qdrantClient() { QdrantGrpcClient grpcClient = QdrantGrpcClient.newBuilder(host, port, false) .withApiKey(apiKey) .build(); return new QdrantClient(grpcClient); } } ``` ### Vector Search Service ```java package com.example.qdrantdemo.service; import io.qdrant.client.QdrantClient; import io.qdrant.client.grpc.Collections.Distance; import io.qdrant.client.grpc.Collections.VectorParams; import io.qdrant.client.grpc.Points.PointStruct; import io.qdrant.client.grpc.Points.QueryPoints; import io.qdrant.client.grpc.Points.ScoredPoint; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jakarta.annotation.PostConstruct; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import static io.qdrant.client.PointIdFactory.id; import static io.qdrant.client.ValueFactory.value; import static io.qdrant.client.VectorsFactory.vectors; import static io.qdrant.client.QueryFactory.nearest; @Service public class VectorSearchService { private final QdrantClient client; @Autowired private EmbeddingService embeddingService; // Helper service for embeddings public static final String COLLECTION_NAME = "document-search"; public static final int VECTOR_SIZE = 384; // For AllMiniLM-L6-v2 public VectorSearchService(QdrantClient client) { this.client = client; }