一、Elasticsearch
本节将引导您设置 Elasticsearch VectorStore 来存储文档嵌入并执行相似性搜索。
Elasticsearch 是一个基于 Apache Lucene 库的开源搜索和分析引擎。
二、先决条件
一个正在运行的 Elasticsearch 实例。有以下可用选项:
Docker
自管理的 Elasticsearch
Elastic Cloud
三、自动配置
Spring AI 自动配置、启动器模块的工件名称发生了重大变化。请参阅升级说明以获取更多信息。
Spring AI 为 Elasticsearch 向量存储提供了 Spring Boot 自动配置。要启用它,请将以下依赖项添加到项目的 Maven pom.xml 或 Gradle build.gradle 构建文件中:
Maven
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-vector-store-elasticsearch</artifactId></dependency>Gradle
dependencies{implementation'org.springframework.ai:spring-ai-starter-vector-store-elasticsearch'}对于 3.3.0 之前的 spring-boot 版本,需要显式添加版本 > 8.13.3 的 elasticsearch-java 依赖项,否则使用的旧版本将与执行的查询不兼容:
Maven
<dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.13.3</version></dependency>Gradle
dependencies{implementation'co.elastic.clients:elasticsearch-java:8.13.3'}请参阅 依赖管理 部分,将 Spring AI BOM 添加到您的构建文件中。
请参阅 工件仓库 部分,将 Maven Central 和/或快照仓库添加到您的构建文件中。
向量存储实现可以为您初始化必要的模式,但您必须通过指定相应构造器中的 initializeSchema 布尔值,或在 application.properties 文件中设置 …initialize-schema=true 来选择加入。或者,您可以选择不进行初始化,并使用 Elasticsearch 客户端手动创建索引,这在索引需要高级映射或额外配置时可能很有用。
这是一个破坏性变更!在早期版本的 Spring AI 中,此模式初始化是默认发生的。
请查看向量存储的配置参数列表,了解默认值和配置选项。这些属性也可以通过配置 ElasticsearchVectorStoreOptions bean 来设置。
此外,您需要一个配置好的 EmbeddingModel bean。有关更多信息,请参阅 EmbeddingModel 部分。
现在,您可以在应用程序中自动注入 ElasticsearchVectorStore 作为向量存储:
@AutowiredVectorStorevectorStore;