EmbeddingModel
接口设计用于在 AI 和机器学习中直接集成嵌入模型。
它的主要功能是将文本转换为数值向量,通常称为嵌入。
这些嵌入对于语义分析和文本分类等各种任务至关重要。
EmbeddingModel 接口的设计围绕两个主要目标:
embed(String text)
和 embed(Document document)
这样的直接方法,它消除了处理原始文本数据和嵌入算法的复杂性。这种设计选择使开发者,特别是 AI 新手,能够在其应用程序中使用嵌入,而无需深入了解底层机制。
Model
接口,该接口提供了与 AI 模型交互的标准方法集。EmbeddingRequest
和 EmbeddingResponse
类从 ModelRequest
和 ModelResponse
扩展而来,分别用于封装嵌入模型的输入和输出。
嵌入 API 又被更高级别的组件用来实现特定嵌入模型的嵌入模型,如 OpenAI、Titan、Azure OpenAI、Ollie 等。
以下图说明了嵌入 API 及其与 Spring AI 模型 API 和嵌入模型的关系:
EmbeddingModel
接口和相关类的指南。
Document
对象或文本批次。
提供了多个嵌入文本的快捷方法,包括 embed(String text)
方法,它接受单个字符串并返回相应的嵌入向量。
所有快捷方法都是围绕 call
方法实现的,这是调用嵌入模型的主要方法。
通常嵌入返回浮点数列表,以数值向量格式表示嵌入。
embedForResponse
方法提供了更全面的输出,可能包括有关嵌入的附加信息。
dimensions 方法是开发者快速确定嵌入向量大小的便捷工具,这对于理解嵌入空间和后续处理步骤很重要。
EmbeddingRequest
是一个 ModelRequest
,它接受文本对象列表和可选的嵌入请求选项。
以下列表显示了 EmbeddingRequest 类的截断版本,不包括构造函数和其他实用方法:
EmbeddingResponse
类的结构如下:
EmbeddingResponse
类保存 AI 模型的输出,每个 Embedding
实例包含来自单个文本输入的结果向量数据。
EmbeddingResponse
类还携带有关 AI 模型响应的 EmbeddingResponseMetadata
元数据。
Embedding
表示单个嵌入向量。
EmbeddingModel
实现使用不同的低级库和 API 来执行嵌入任务。以下是 EmbeddingModel
实现的一些可用实现: