百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Spring AI API中文版 - Embeddings API

myzbx 2025-01-01 21:41 21 浏览

https://docs.spring.io/spring-ai/reference/api/embeddings.html

嵌入式API

嵌入式客户端接口旨在与人工智能和机器学习中的嵌入式模型进行直接集成。 其主要功能是将文本转换为数值向量,通常称为嵌入。 这些嵌入对于语义分析和文本分类等各种任务至关重要。

嵌入式客户端接口的设计围绕两个主要目标:

  • 可移植性:此接口确保易于适应各种嵌入模型。 它允许开发人员在不同的嵌入技术或模型之间切换,代码更改最小。 这种设计与Spring的模块化和可互换性的哲学相一致。
  • 简单性:EmbeddedClient简化了将文本转换为嵌入的过程。 通过提供像embed(String text)和embed(Document document)这样的直接方法,它消除了处理原始文本数据和嵌入算法的复杂性。 这个设计选择使得开发人员更容易,特别是那些对AI新手,能够在他们的应用程序中使用嵌入,而不需要深入研究底层机制。

API概览

嵌入式API建立在通用的Spring AI模型API之上,这是Spring AI库的一部分。 因此,嵌入式客户端接口扩展了模型客户端接口,提供了与AI模型交互的标准方法集。嵌入请求和响应类扩展了模型请求和模型响应,分别用于封装嵌入式模型的输入和输出。

嵌入式API反过来被更高层次的组件用来实现特定嵌入模型的嵌入客户端,如OpenAI、Titan、Azure OpenAI、Ollie等。

下图说明了嵌入式API与Spring AI模型API和嵌入客户端的关系:

嵌入式客户端

本节提供了嵌入式客户端接口和相关类的指南。

Bash
public interface EmbeddingClient extends ModelClient<EmbeddingRequest, EmbeddingResponse> {

    @Override
    EmbeddingResponse call(EmbeddingRequest request);


    /**
     * Embeds the given document's content into a vector.
     * @param document the document to embed.
     * @return the embedded vector.
     */
    List<Double> embed(Document document);

    /**
     * Embeds the given text into a vector.
     * @param text the text to embed.
     * @return the embedded vector.
     */
    default List<Double> embed(String text) {
        Assert.notNull(text, "Text must not be null");
        return this.embed(List.of(text)).iterator().next();
    }

    /**
     * Embeds a batch of texts into vectors.
     * @param texts list of texts to embed.
     * @return list of list of embedded vectors.
     */
    default List<List<Double>> embed(List<String> texts) {
        Assert.notNull(texts, "Texts must not be null");
        return this.call(new EmbeddingRequest(texts, EmbeddingOptions.EMPTY))
            .getResults()
            .stream()
            .map(Embedding::getOutput)
            .toList();
    }

    /**
     * Embeds a batch of texts into vectors and returns the {@link EmbeddingResponse}.
     * @param texts list of texts to embed.
     * @return the embedding response.
     */
    default EmbeddingResponse embedForResponse(List<String> texts) {
        Assert.notNull(texts, "Texts must not be null");
        return this.call(new EmbeddingRequest(texts, EmbeddingOptions.EMPTY));
    }

    /**
     * @return the number of dimensions of the embedded vectors. It is generative
     * specific.
     */
    default int dimensions() {
        return embed("Test String").size();
    }

}

嵌入方法提供了多种将文本转换为嵌入的选项,适应单个字符串、结构化文档对象或文本批次。

提供了多个嵌入文本的快捷方法,包括嵌入(String text)方法,它接受单个字符串并返回相应的嵌入向量。 所有快捷方法都是围绕调用方法实现的,这是调用嵌入模型的主要方法。

通常,嵌入返回的是表示数值向量格式嵌入的双精度列表。

嵌入ForResponse方法提供了更全面的输出,可能包括有关嵌入的附加信息。

维度方法是一个方便的工具,供开发人员快速确定嵌入向量的大小,这对于理解嵌入空间和后续处理步骤很重要。

嵌入请求

嵌入请求是一个模型请求,它接受一系列文本对象和可选的嵌入请求选项。 下面的列表显示了嵌入请求类的截断版本,不包括构造函数和其他实用方法:

Bash
public class EmbeddingRequest implements ModelRequest<List<String>> {
    private final List<String> inputs;
    private final EmbeddingOptions options;
    // other methods omitted
}

嵌入响应

嵌入响应类的结构如下:

public class EmbeddingResponse implements ModelResponse<Embedding> {

    private List<Embedding> embeddings;
    private EmbeddingResponseMetadata metadata = new EmbeddingResponseMetadata();
    // other methods omitted
}

嵌入响应类保存AI模型的输出,每个嵌入实例包含单个文本输入的结果向量数据。

嵌入响应类还携带有关AI模型响应的嵌入响应元数据。

嵌入

嵌入代表单个嵌入向量。

public class Embedding implements ModelResult<List<Double>> {
    private List<Double> embedding;
    private Integer index;
    private EmbeddingResultMetadata metadata;
    // other methods omitted
}

可用实现

内部地,各种嵌入客户端实现使用不同的低级库和API来执行嵌入任务。以下是一些可用的嵌入客户端实现:

  • Spring AI OpenAI嵌入
  • Spring AI Azure OpenAI嵌入
  • Spring AI Ollama嵌入
  • Spring AI Transformers (ONNX) 嵌入
  • Spring AI PostgresML嵌入
  • Spring AI Bedrock Cohere嵌入
  • Spring AI Bedrock Titan嵌入
  • Spring AI VertexAI PaLM2嵌入
  • Spring AI Mistral AI嵌入

相关推荐

路痴的福音 谷歌地图AR实景导航Live View正式上线

2月份起,谷歌地图开始测试一项新功能,即是在行人导航功能中加入AR实景导航。用户可以通过设备屏幕,在实际的街道中见到路线指示,使导航功能不只在地图上,而是更融合在真实环境中。谷歌地图AR实景导航(图源...

Google地图怎么设置中文 谷歌地图app设置语言为中文

Google地图是一款知名的地图导航客户端,这是一款很好用的地图软件,Google地图怎么设置中文呢,不少人可能不是很清楚,下面就和小编一起来看看吧!Google地图怎么设置中文方法1、点击打开谷歌地...

谷歌地图说这里能过

来源:日本沙雕日常谷歌地图说这里能过#微博新鲜事#

谷歌地图已可离线导航 仅安卓机可用

谷歌已经在今年的谷歌IO大会上确认了地图离线导航功能,如今该功能已经可以在安卓机上使用了。这对网络资源较为贫瘠且相对昂贵的国家来说可谓提供了便利。用户需要提前下载所需旅程的部分地图,虽然不能获得实时路...

谷歌地图测试速度更快的AR实时视图

上个月谷歌为了庆祝谷歌地图成立15周年,为谷歌地图推出了新的图标,并且重新设计了移动应用程序。谷歌还预览了一些即将推出的功能,现在正在测试地图导航之外更快的实时视图(LiveView)访问。谷歌之...

谷歌地图新功能 离线地图可导航和搜索

【中关村在线软件资讯】5月29日消息:在今天凌晨召开的GoogleI/O开发者大会上,谷歌公布了一些关于地图的新功能。谷歌地图离线模式新版谷歌地图有更好用的离线地图,可以在无网络的情况下搜索地点、查...

谷歌地图变这样,谁还花钱去旅游?

足不出户,在手机上能身临其境的游览世界各地。文章来源:创下一个新ID:cxygx1作者:创新君编辑:卝生话说在前天的GoogleI/O2022开发人员活动中,谷歌推出了一种全新的地图模式,可以...

新版谷歌地图将添新功能:知道你想去哪儿

据外媒TheVerge报道,谷歌即将为安卓版谷歌地图增加一些新的功能,从而使之变得更加智能,比如可以推算出用户的目的地等。新版谷歌地图将添新功能(图片来自TheVerge)报道称,升级后的谷歌地图将会...

谷歌地图安卓版获效率改进,11.136.x更新引入“表单风格”卡片

IT之家7月16日消息,谷歌在今年2月宣布将对自家地图应用进行大修,目前相关更新已经实装入谷歌地图11.136.x版本中,主要围绕UI进行效率改进。谷歌提到,现在用户在查找地址时,...

谷歌地图安卓/iOS版界面大修,超漂亮

IT之家(www.ithome.com):谷歌地图安卓/iOS版界面大修,超漂亮IT之家报道,Android5.0已经正式到来,谷歌旗下的应用为了迎接安卓5.0都采用了全新的MaterialDes...

谷歌地图在美国启用“美国湾”称呼

参考消息网2月11日报道据法新社2月11日报道,美国总统特朗普10日对谷歌地图将墨西哥湾更名为“美国湾”表示欢迎,这符合他在1月底重返白宫后签署的法令之一。这一占超主导地位的地图服务现在为位于美国的用...

外交部回应谷歌地图涉南海标注:南海一直是国际社会公认通用地名,被广泛接受

【环球时报-环球网报道记者李萌】在4月15日外交部例行记者会上,有记者提问称,据报道,谷歌地图显示了“西菲律宾海”的名称,此前这里显示的是南海。有人称这有助于保护菲律宾的主权,请问中方对此有何评论?...

谷歌地图首曝数据:覆盖全球98%居住区,已拍千万英里街景

12月13日,谷歌透露了其街景车(StreetViewcar)等设备为绘制世界地图所做的工作。目前,谷歌已经捕获了超过1000万英里的街景图像,这个距离相当于绕地球400圈。旗下航空地图服务谷歌地...

美媒:谷歌称,当联邦地图作出更改时,谷歌地图将使用“迪纳利峰”及“墨西哥湾”新名称

来源:环球网【环球网报道】据美国全国广播公司(NBC)等媒体报道,美国谷歌公司27日称,当联邦地图作出更改时,谷歌地图将使用“迪纳利峰”和“墨西哥湾”的新名称,即“麦金利山”和“美国湾”。本月20日...

谷歌地图迎来15周年重大更新 界面重新设计 新增贴心功能

昨日,恰逢谷歌地图15周年生日,谷歌地图便迎来重大更新。不仅仅界面重新设计,还添加了许多贴心功能。名为“TransitAttributes”的新功能会根据过去用户共享的详细信息,向人们提供有关公共场...