PostgresML 向量模型
Spring AI 支持 PostgresML 文本嵌入模型。
嵌入是文本的数字表示。 它们用于将单词和句子表示为向量,即数字数组。 嵌入可用于通过使用距离度量比较数字向量的相似性来查找相似的文本片段,或者它们可以用作其他机器学习模型的输入特征,因为大多数算法不能直接使用文本。
许多预训练的 LLM 可用于在 PostgresML 中从文本生成嵌入。 您可以在 Hugging Face 上浏览所有可用的模型以找到最佳解决方案。
添加存储库和 BOM
Spring AI 工件发布在 Maven Central 和 Spring Snapshot 存储库中。 请参阅工件存储库部分,将这些存储库添加到您的构建系统中。
为了帮助进行依赖管理,Spring AI 提供了一个 BOM (物料清单) 以确保在整个项目中使用一致版本的 Spring AI。请参阅依赖管理部分,将 Spring AI BOM 添加到您的构建系统中。
自动配置
Spring AI 自动配置和启动器模块的工件名称已发生重大更改。 有关更多信息,请参阅升级说明。
Spring AI 为 PostgresML Embedding 模型提供 Spring Boot 自动配置。
要启用它,请将以下依赖项添加到项目的 Maven pom.xml
文件中:
或添加到您的 Gradle build.gradle
构建文件中。
请参阅依赖管理部分,将 Spring AI BOM 添加到您的构建文件中。
Embedding 属性
嵌入自动配置的启用和禁用现在通过前缀为 spring.ai.model.embedding
的顶级属性进行配置。
要启用,请设置 spring.ai.model.embedding=postgresml (默认情况下启用)
要禁用,请设置 spring.ai.model.embedding=none (或任何与 postgresml 不匹配的值)
此更改是为了允许配置多个模型。
前缀 spring.ai.postgresml.embedding
是为 PostgresML 嵌入配置 EmbeddingModel
实现的属性前缀。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.postgresml.embedding.enabled (已删除且不再有效) | 启用 PostgresML 嵌入模型。 | true |
spring.ai.model.embedding | 启用 PostgresML 嵌入模型。 | postgresml |
spring.ai.postgresml.embedding.create-extension | 执行 SQL ‘CREATE EXTENSION IF NOT EXISTS pgml’ 以启用扩展。 | false |
spring.ai.postgresml.embedding.options.transformer | 用于嵌入的 Hugging Face 转换器模型。 | distilbert-base-uncased |
spring.ai.postgresml.embedding.options.kwargs | 其他特定于转换器的选项。 | 空映射 |
spring.ai.postgresml.embedding.options.vectorType | 用于嵌入的 PostgresML 向量类型。支持两种选项:PG_ARRAY 和 PG_VECTOR 。 | PG_ARRAY |
spring.ai.postgresml.embedding.options.metadataMode | 文档元数据聚合模式。 | EMBED |
所有以 spring.ai.postgresml.embedding.options
为前缀的属性都可以在运行时通过向 EmbeddingRequest
调用添加特定于请求的嵌入选项来覆盖。
运行时选项
使用 PostgresMlEmbeddingOptions.java 通过选项(例如要使用的模型等)配置 PostgresMlEmbeddingModel
。
启动时,您可以将 PostgresMlEmbeddingOptions
传递给 PostgresMlEmbeddingModel
构造函数,以配置用于所有嵌入请求的默认选项。
在运行时,您可以通过在 EmbeddingRequest
中使用 PostgresMlEmbeddingOptions
来覆盖默认选项。
例如,要覆盖特定请求的默认模型名称:
示例控制器
这将创建一个 EmbeddingModel
实现,您可以将其注入到您的类中。
这是一个简单的 @Controller
类示例,它使用 EmbeddingModel
实现。
手动配置
您可以不使用 Spring Boot 自动配置,而是手动创建 PostgresMlEmbeddingModel
。
为此,请将 spring-ai-postgresml
依赖项添加到项目的 Maven pom.xml
文件中:
或添加到您的 Gradle build.gradle
构建文件中。
请参阅依赖管理部分,将 Spring AI BOM 添加到您的构建文件中。
接下来,创建一个 PostgresMlEmbeddingModel
实例,并用它来计算两个输入文本之间的相似度:
手动创建时,必须在设置属性之后和使用客户端之前调用 afterPropertiesSet()
。
将 PostgresMlEmbeddingModel 创建为 @Bean
更方便(且推荐)。
这样您就不必手动调用 afterPropertiesSet()
:
文档有误?请协助编辑
发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!