GemFire ベクトルストア
このセクションでは、ドキュメントの埋め込みを保存し、類似性検索を実行するための GemFireVectorStore
の設定について説明します。
GemFire (英語) は、超高速で読み取りおよび書き込み操作を実行する分散型インメモリキーバリューストアです。可用性の高い並列メッセージキュー、継続的な可用性、ダウンタイムなしで動的に拡張できるイベント駆動型アーキテクチャを提供します。高性能なリアルタイムアプリをサポートするためにデータサイズ要件が増大しても、GemFire は簡単に線形に拡張できます。
GemFire ベクトル DB (英語) は GemFire の機能を継承し、ベクトル類似性検索を効率的に保存、取得、実行する多目的ベクトルデータベースとして機能します。
前提条件
GemFire VectorDB 拡張機能が有効になっている GemFire クラスター
ドキュメントの埋め込みを計算するための
EmbeddingModel
Bean。詳細については、EmbeddingModel セクションを参照してください。マシン上でローカルに実行されるオプションは、ONNX と all-MiniLM-L6-v2 Sentence Transformers です。
自動構成
GemFire VectorStore Spring Boot スターターをプロジェクトの Maven ビルドファイル pom.xml
に追加します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-gemfire-store-spring-boot-starter</artifactId>
</dependency>
または Gradle build.gradle
ファイルに
dependencies {
implementation 'org.springframework.ai:spring-ai-gemfire-store-spring-boot-starter'
}
構成プロパティ
Spring Boot 構成で次のプロパティを使用して、GemFireVectorStore
をさらに構成できます。
プロパティ | デフォルト値 |
---|---|
| localhost |
| 8080 |
|
|
| spring-ai-gemfire-store |
| 100 |
| 16 |
| COSINE |
| [] |
| 0 |
手動構成
Spring Boot の自動構成を使用せずに GemFireVectorStore
のみを使用するには、プロジェクトの Maven pom.xml
に次の依存関係を追加します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-gemfire-store</artifactId>
</dependency>
Gradle ユーザーの場合は、GemFireVectorStore
のみを使用するために、依存関係ブロックの build.gradle
ファイルに以下を追加します。
dependencies { implementation 'org.springframework.ai:spring-ai-gemfire-store' }
使用方法
AutoConfiguration を使用する代わりに GemfireVectorStore
のインスタンスを作成するサンプルです
@Bean
public VectorStore vectorStore(EmbeddingModel embeddingModel) {
return new GemFireVectorStore(new GemFireVectorStoreConfig()
.setIndexName("my-vector-index")
.setPort(7071), embeddingClient);
}
GemFire VectorStore はまだメタデータフィルターをサポートしていません。 |
デフォルト構成では、 |
アプリケーションで、いくつかのドキュメントを作成します。
List<Document> documents = List.of(
new Document("Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!!", Map.of("country", "UK", "year", 2020)),
new Document("The World is Big and Salvation Lurks Around the Corner", Map.of()),
new Document("You walk forward facing the past and you turn back toward the future.", Map.of("country", "NL", "year", 2023)));
ドキュメントをベクトルストアに追加します。
vectorStore.add(documents);
類似検索を使用してドキュメントを取得するには:
List<Document> results = vectorStore.similaritySearch(
SearchRequest.query("Spring").withTopK(5));
"Spring AI rocks!!" というテキストを含むドキュメントを取得する必要があります。
類似度のしきい値を使用して結果の数を制限することもできます。
List<Document> results = vectorStore.similaritySearch(
SearchRequest.query("Spring").withTopK(5)
.withSimilarityThreshold(0.5d));