Skip to main content

Weaviate 向量数据库

Spring AI 支持将 Weaviate 作为向量数据库。

添加依赖

要使用 Weaviate 向量存储,您需要将 spring-ai-weaviate-store-spring-boot-starter 依赖项添加到项目的 pom.xml 文件中。 该启动器包含了 spring-ai-core 和 Weaviate Java 客户端库。
您还需要一个 EmbeddingClient 实现来为您的文档生成向量嵌入。例如,您可以添加 spring-ai-openai-spring-boot-starter 以使用 OpenAI 的嵌入模型:

配置属性

在您的 application.propertiesapplication.yml 文件中配置 Weaviate 和嵌入客户端属性。

Weaviate 属性

属性描述默认值
spring.ai.vectorstore.weaviate.schemeWeaviate 服务器的 scheme (例如 httphttps)http
spring.ai.vectorstore.weaviate.hostWeaviate 服务器的主机名或 IP 地址localhost
spring.ai.vectorstore.weaviate.api-key用于向 Weaviate 服务器进行身份验证的 API 密钥 (如果需要)
spring.ai.vectorstore.weaviate.object-class用于存储文档的 Weaviate 类名SpringAiDocument
spring.ai.vectorstore.weaviate.consistency-level写入操作的一致性级别 (例如 ONE, QUORUM, ALL)ONE
spring.ai.vectorstore.weaviate.headers.*要包含在发送到 Weaviate 的请求中的自定义标头
spring.ai.vectorstore.weaviate.filter-fields.text-fields指定哪些元数据文本字段应该被索引以进行 Weaviate 的 like 过滤。逗号分隔的列表。(空)
spring.ai.vectorstore.weaviate.filter-fields.tokenizable-fields指定哪些元数据字段应该被索引为 Weaviate 的 tokenizable 字段。逗号分隔的列表。(空)
示例 application.properties:
嵌入的维度是从第一个插入的文档中推断出来的。确保您的 EmbeddingClient 配置为生成具有一致维度的嵌入。

使用 VectorStore

VectorStore bean 注入到您的组件中以与之交互:

创建 WeaviateVectorStore Bean (可选)

Spring Boot 会自动配置 WeaviateVectorStore bean。但是,如果您需要自定义配置,可以定义自己的 bean:

元数据过滤

Weaviate 向量存储支持使用 Weaviate 的 WHERE 过滤器 和 Spring AI 的 相似性搜索过滤器表达式 进行元数据过滤。 过滤器表达式会转换为 Weaviate 的 GraphQL where 过滤器格式。 示例:
确保用于过滤的元数据字段存在于您的 Weaviate schema 中,并根据需要进行索引。 对于文本字段的 like (通配符) 过滤,您需要在 spring.ai.vectorstore.weaviate.filter-fields.text-fields 属性中指定这些字段,以便在 schema 中正确设置它们。 同样,对于需要标记化的字段,请使用 spring.ai.vectorstore.weaviate.filter-fields.tokenizable-fields

删除数据

WeaviateVectorStore 支持通过文档 ID 删除数据。

总结

将 Spring AI 与 Weaviate 集成,为构建复杂的 AI 应用程序提供了强大的功能,利用了 Weaviate 的原生向量搜索能力和可扩展架构。

文档有误?请协助编辑

发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!