qdrant は何をしますか?
LangChain4j を使用した Qdrant ベクトルデータベース統合パターンを提供します。Java アプリケーション向けに、埋め込みストレージ、類似性検索、ベクトル管理を処理します。RAG システム、セマンティック検索、レコメンデーションエンジン向けのベクトルベース検索を実装する際に使用します。
概要
このスキルは、Java アプリケーションで Qdrant ベクトルデータベースと LangChain4j を統合するためのパターンを文書化しています。ベクトルエンベディングの保存と検索を効率化し、セマンティック検索、RAG(検索拡張生成)、レコメンデーションシステムを実現します。
前提条件
- Java 17 以上
- Maven または Gradle
- Qdrant サーバー(ローカルまたはリモート)
- LangChain4j 統合依存関係
設定
Maven 依存関係
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-qdrant</artifactId>
<version>${langchain4j.version}</version>
</dependency>
Qdrant クライアント設定
import dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore;
import io.qdrant.client.QdrantClient;
import io.qdrant.client.QdrantGrpcClient;
String qdrantHost = System.getenv("QDRANT_HOST");
int qdrantPort = Integer.parseInt(System.getenv("QDRANT_PORT"));
QdrantClient client = new QdrantClient(QdrantGrpcClient.newBuilder(qdrantHost, qdrantPort).build());
埋め込みストアの作成
QdrantEmbeddingStore embeddingStore = QdrantEmbeddingStore.builder()
.client(client)
.collectionName("my_collection")
.build();
類似性検索
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
import dev.langchain4j.store.embedding.EmbeddingSearchResult;
EmbeddingSearchRequest request = EmbeddingSearchRequest.builder()
.queryEmbedding(embedding)
.maxResults(10)
.build();
EmbeddingSearchResult result = embeddingStore.search(request);
for (EmbeddingMatch match : result.matches()) {
System.out.println(match.score() + ": " + match.embedded().text());
}
コレクション管理
コレクションの作成
import io.qdrant.client.grpc.Collections.CollectionConfig;
import io.qdrant.client.grpc.Collections.CreateCollection;
CreateCollection request = CreateCollection.newBuilder()
.setCollectionName("my_collection")
.setVectorSize(384)
.setDistance(Distance.Cosine)
.build();
client.createCollectionAsync(request).get();
コレクションの削除
client.deleteCollectionAsync("my_collection").get();
環境変数
QDRANT_HOST- Qdrant サーバーのホスト名(デフォルト:localhost)QDRANT_PORT- Qdrant サーバーの gRPC ポート(デフォルト:6334)QDRANT_API_KEY- Qdrant クラウドの場合の API キー(オプション)
ベストプラクティス
- コレクションを作成する際は、エンベディングモデルに適したベクトルサイズを選択する。
- 距離メトリックを選択する際は、コサイン類似度を一般的なユースケースに使用する。
- パフォーマンスを向上させるために、コレクションを適切にインデックス化する。
- Qdrant サーバーがアプリケーションインスタンスから到達可能であることを確認する。
トラブルシューティング
- 接続エラー: Qdrant サーバーが実行中で、適切なポートでリッスンしていることを確認する。
- コレクションが見つかりません: 事前にコレクションを作成するか、自動コレクション作成を有効にする。
- ベクトルサイズの不一致: Qdrant 内のベクトルサイズがエンベディングモデルの出力次元と一致することを確認する。