GemFire 矢量商店

本节将指导您完成设置以存储文档嵌入并执行相似性搜索。GemFireVectorStorespring-doc.cn

GemFire 是一种分布式内存中的键值存储,以极快的速度执行读写操作。它提供高度可用的并行消息队列、持续可用性和事件驱动型架构,您可以在不停机的情况下动态扩展。随着您的数据大小要求增加以支持高性能、实时应用程序,GemFire 可以轻松地线性扩展。spring-doc.cn

GemFire VectorDB 扩展了 GemFire 的功能,作为一个多功能的矢量数据库,可以有效地存储、检索和执行矢量相似性搜索。spring-doc.cn

先决条件

  1. 启用了 GemFire VectorDB 扩展的 GemFire 集群spring-doc.cn

  2. 用于计算文档嵌入的 Bean。请参阅 EmbeddingModel 部分以了解更多信息。 在计算机上本地运行的选项是 ONNX 和全 MiniLM-L6-v2 Sentence Transformers。EmbeddingModelspring-doc.cn

自动配置

将 GemFire VectorStore Spring Boot Starters添加到项目的 Maven 构建文件中:pom.xmlspring-doc.cn

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-gemfire-store-spring-boot-starter</artifactId>
</dependency>

或您的 Gradle 文件build.gradlespring-doc.cn

dependencies {
    implementation 'org.springframework.ai:spring-ai-gemfire-store-spring-boot-starter'
}

配置属性

您可以在 Spring Boot 配置中使用以下属性来进一步配置 .GemFireVectorStorespring-doc.cn

财产 默认值

spring.ai.vectorstore.gemfire.hostspring-doc.cn

本地主机spring-doc.cn

spring.ai.vectorstore.gemfire.portspring-doc.cn

8080spring-doc.cn

spring.ai.vectorstore.gemfire.initialize-schemaspring-doc.cn

falsespring-doc.cn

spring.ai.vectorstore.gemfire.index-namespring-doc.cn

spring-ai-gemfire-store (Spring-ai-gemfire-store)spring-doc.cn

spring.ai.vectorstore.gemfire.beam-widthspring-doc.cn

100spring-doc.cn

spring.ai.vectorstore.gemfire.max-connectionsspring-doc.cn

16spring-doc.cn

spring.ai.vectorstore.gemfire.vector-similarity-functionspring-doc.cn

余弦spring-doc.cn

spring.ai.vectorstore.gemfire.fieldsspring-doc.cn

[]spring-doc.cn

spring.ai.vectorstore.gemfire.bucketsspring-doc.cn

0spring-doc.cn

手动配置

要仅使用 ,而不使用 Spring Boot 的 Auto-configuration,请将以下依赖项添加到项目的 Maven 中:GemFireVectorStorepom.xmlspring-doc.cn

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-gemfire-store</artifactId>
</dependency>

对于 Gradle 用户,请将以下内容添加到文件中的 dependencies 块下,以仅使用 :build.gradleGemFireVectorStorespring-doc.cn

dependencies {
    implementation 'org.springframework.ai:spring-ai-gemfire-store'
}

用法

下面是一个示例,它创建 的实例,而不是使用 AutoConfigurationGemfireVectorStorespring-doc.cn

@Bean
public VectorStore vectorStore(EmbeddingModel embeddingModel) {
    return new GemFireVectorStore(new GemFireVectorStoreConfig()
                                    .setIndexName("my-vector-index")
                                    .setPort(7071), embeddingClient);
}

GemFire VectorStore 尚不支持元数据筛选器spring-doc.cn

默认配置连接到 GemFire 集群的localhost:8080spring-doc.cn

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!!” 的文档。spring-doc.cn

您还可以使用相似性阈值来限制结果的数量:spring-doc.cn

List<Document> results = vectorStore.similaritySearch(
   SearchRequest.query("Spring").withTopK(5)
      .withSimilarityThreshold(0.5d));