MongoDB Atlas

WIP: 请考虑贡献文档:添加 MongoDB Atlas 向量存储的文档

MongoDB Atlas 向量搜索 是一种完全托管的云数据库服务,提供最简单的方式在云中部署、操作和扩展 MongoDB 数据库。

先决条件

TODO:添加先决条件说明

自动配置

Spring AI 为 MongoDB Atlas 向量存储提供 Spring Boot 自动配置。要启用它,请将以下依赖项添加到项目的 Maven pom.xml 文件

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

或您的 Gradle build.gradle 构建文件。

dependencies {
    implementation 'org.springframework.ai:spring-ai-mongodb-atlas-store-spring-boot-starter'
}
请参阅 依赖管理 部分,将 Spring AI BOM 添加到您的构建文件。
请参阅 存储库 部分,将里程碑和/或快照存储库添加到您的构建文件。

向量存储实现可以为您初始化必要的模式,但您必须通过在适当的构造函数中指定 initializeSchema 布尔值或在 application.properties 文件中设置 …​initialize-schema=true 来选择加入。

这是一个重大更改!在早期版本的 Spring AI 中,此模式初始化默认发生。

此外,您将需要一个已配置的 EmbeddingModel bean。有关更多信息,请参阅 EmbeddingModel 部分。

以下是一个所需 bean 的示例

@Bean
public EmbeddingModel embeddingModel() {
    // Can be any other EmbeddingModel implementation.
    return new OpenAiEmbeddingModel(new OpenAiApi(System.getenv("SPRING_AI_OPENAI_API_KEY")));
}

元数据过滤

您也可以使用 MongoDB Atlas 存储利用通用的、可移植的 元数据过滤器

例如,您可以使用文本表达式语言

vectorStore.similaritySearch(
                    SearchRequest.defaults()
                            .withQuery("The World")
                            .withTopK(TOP_K)
                            .withSimilarityThreshold(SIMILARITY_THRESHOLD)
                            .withFilterExpression("author in ['john', 'jill'] && 'article_type' == 'blog'"));

或使用 Filter.Expression DSL 以编程方式

FilterExpressionBuilder b = new FilterExpressionBuilder();

vectorStore.similaritySearch(SearchRequest.defaults()
                    .withQuery("The World")
                    .withTopK(TOP_K)
                    .withSimilarityThreshold(SIMILARITY_THRESHOLD)
                    .withFilterExpression(b.and(
                            b.in("author", "john", "jill"),
                            b.eq("article_type", "blog")).build()));
这些(可移植的)过滤器表达式会自动转换为专有的 MongoDB Atlas 过滤器表达式。

MongoDB Atlas 属性

您可以在 Spring Boot 配置中使用以下属性来定制 MongoDB Atlas 向量存储。

属性 描述 默认值

spring.ai.vectorstore.mongodb.collection-name

存储向量的集合名称。

vector_store

spring.ai.vectorstore.mongodb.initialize-schema

是否为您初始化后端模式

false

spring.ai.vectorstore.mongodb.path-name

存储向量的路径名称。

embedding

spring.ai.vectorstore.mongodb.indexName

存储向量的索引名称。

vector_index