MongoDB Atlas
WIP: 请考虑贡献文档:添加 MongoDB Atlas 向量存储的文档
MongoDB Atlas 向量搜索 是一种完全托管的云数据库服务,提供最简单的方式在云中部署、操作和扩展 MongoDB 数据库。
自动配置
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 向量存储。
属性 | 描述 | 默认值 |
---|---|---|
|
存储向量的集合名称。 |
|
|
是否为您初始化后端模式 |
|
|
存储向量的路径名称。 |
|
|
存储向量的索引名称。 |
|