OpenAI 的嵌入 API太慢了吗?探索其他嵌入模型和服务的优势

24d1d1ba727eaaa879d5aba6e461116a.gif

这篇文章讨论了机器学习模型的延迟对聊天应用和代理的用户体验的影响,重点关注了生成语言模型(LLM)的提示生成过程中的语义搜索任务。文章比较了两种嵌入API 服务(OpenAI 和 Google)和几种开源嵌入模型(sentence-transformers)在嵌入速度和准确度方面的表现,发现 OpenAI 的嵌入 API 服务的延迟明显高于 Google 的新嵌入 API 服务,而本地运行的开源嵌入模型则是最快的。文章建议开发者根据自己的需求和数据选择合适的嵌入模型,并提供了一些使用 Langchain 和 HuggingFace 集成嵌入模型的示例代码。

原文链接:https://www.getzep.com/text-embedding-latency-a-semi-scientific-look/

未经允许,禁止转载!

作者 | Daniel Chalef       译者 | 明明如月

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

1195778b0bfd254ec3bf153c45f149e0.png

在讨论机器学习模型性能时,通常指的是模型在特定任务上的表现。对于数据科学家和机器学习工程师来说,这包括准确率、损失等度量。然而,随着聊天机器人和智能代理等基于文本生成的 AI 应用成为我们日常生活的一部分,模型延迟成为另一个显著影响用户体验的性能指标,即模型生成结果所需的时间。如果生成过程较慢,将会影响聊天用户的体验。

OpenAI 的 GPT-3.5-Turbo 模型显著缩短了流式响应的首字节响应时间。然而,构建发送给 GPT-3.5-Turbo 模型的提示通常是一个冗长且缓慢的过程,可能需要多次调用其他模型,以及第三方或内部服务,以生成被 GPT-3.5-Turbo 用来生成响应的情境学习内容。

虽然我们通常在创建提示之前就将文件嵌入,但搜索词的嵌入必须在执行搜索时实时完成。因此,嵌入的速度成为生成 GPT-3.5-Turbo 结果的关键。

2be35dcfd27206fc8a83d709d0178206.png

为什么向量数据库和嵌入模型是 AI 技术的关键

最常见的提示生成任务之一是使用向量数据库从文档集合中检索相关信息。向量数据库存储了一个被称为嵌入的文档的数学表示,并使用近似最近邻等技术比较文档之间,或者与搜索词的相似度。在机器学习中,这个任务被称为语义搜索。

嵌入是由专门设计用于执行此任务的语言模型生成的。有许多不同的嵌入模型,每个模型都有独特的性能特征:准确性、速度、存储和内存使用等。它们也可能是多语言的,或者针对特定的自然语言进行训练。有些甚至针对特定的商业或科学领域进行训练。

虽然文件通常在创建提示之前就被嵌入,但是搜索词嵌入必须在执行搜索时即时创建。这使得嵌入的速度成为生成 LLM 结果的关键路径。

2cfeedec5f536de3a66b9da4fd4974e1.png

对嵌入模型延迟的半科学调查

正如我们上文所讨论的,缓慢的文本生成影响用户体验,而生成文本的关键任务之一就是使用语义搜索查找相关内容。虽然我们应该考虑嵌入模型的成本、内存使用和实施的便利性,但这次调查仅关注嵌入的速度,以及在有的情况下,对语义相似性搜索任务的MTEB 基准性能。

我们测试了两个嵌入 API 服务和几个由 sentence-transformers 包支持的开源嵌入模型。我们选取的开源模型代表了在 MTEB 基准测试中得分高,且在 CPU 上表现良好的模型族。还有许多其他模型,你应该根据你的使用场景进行实验,以基准作为指导,而非铁律。

模型部署类型MTEB 检索分数
OpenAI text-embedding-ada-002API 服务49.25
Google Vertex AI textembedding-gecko@001API 服务未知 - 2023年5月推出
sentence-transformers/gtr-t5-xl本地 CPU 执行47.96
sentence-transformers/all-MiniLM-L12-v2本地 CPU 执行42.69
sentence-transformers/all-MiniLM-L6-v2本地 CPU 执行41.95

API 测试在 GCP 和 AWS 上进行,这符合了当今许多应用的场景。本地模型在几个云实例和我的 MacBook Pro M1(配备16GB RAM)上进行了测试。详细信息请见下文。

00bd781aad36ffdbe793d3d459fef2aa.png

结果

摘要:Google 的新嵌入 API 比 OpenAI 的快得多,而本地 CPU 上的开源模型最快。Google 的模型尚无检索基准,但 OpenAI 的模型在 MTEB 上得分最高。如果延迟是你的关注点,你可以考虑 Google 或开源模型。

OpenAI 的 text-embedding-ada-002 模型是许多开发者的首选。由于应用程序常常使用 OpenAI 的模型,因此开发者使用同样的 API 来嵌入文档是合理的。OpenAI 最近也大幅降低了这个 API 的价格。

事实证明,无论是从 AWS 还是 GCP 测量,OpenAI 嵌入 API 的延迟显著高于 Google 新的 textembedding-gecko@001 模型(仅从 GCP 测量)。

OpenAI 的性能波动较大——许多人都经历过在一些时候 OpenAI 的 API 扩展性差的情况。使用 Azure OpenAI Service 运行在 Microsoft Azure 中的应用,模型的延迟可能会更低。

65afa53a2cb4638334db779fdb801007.png

模型延迟(秒,log10)

毫不意外,运行在本地 CPU 上的开源嵌入模型在性能上超越了 Google 和 OpenAI 的 API 服务。网络传输是慢的。但令人惊讶的是 Google 的模型与本地开源模型相比表现出色。我只从 GCP 测量,因此 API 肯定有更低的网络延迟。

延迟通常在第 95 百分位处进行测量,DevOps 和 SRE 称之为 p95。以下是 p95 模型结果(非对数刻度)。OpenAI API 的 p95 响应从 GCP 需要近一分钟,从 AWS 需要近 600 毫秒。

1760cad3693463794b65aa8ba51c2b32.png

模型延迟 p95(秒)

在这次调查中,虽然开源模型 gtr-t5-xl 的 MTEB 得分与 OpenAI 的产品最接近,但其表现却远不如所有其他模型。有可能在大批量嵌入的情况下,如果使用 GPU,性能会显著提高(详见下文)。

all-MiniLM 系列的开源模型速度非常快(且作为较小的模型,其内存效率非常高)。考虑到他们的速度和相对易于部署的特性(见此Langchain 示例),评估他们对于你特定使用场景的性能表现是值得的。

bb33f2e030f1b76b461f953b2a57d3c7.png

嵌入模型性能的效果可能因人而异

sentence-transformers 团队已经创建了大量不同的模型,并且有充分的理由。每个模型都具有不同组合的性能特性,并且用于不同的用途。口语,句子长度,向量宽度,词汇量和其他因素都会影响模型的性能。有些模型可能对某个领域的表现比其他模型更好。在选择模型时,使用 MTEB 和其他基准作为指导是值得的,但一定要用自己的数据进行实验。

68f20766c4cbfca7a03a9d90fb7f5af2.png

为什么要用 CPU 进行句子嵌入?

在测试开源模型时,我们专注于 CPU 的性能,而非 GPU。CPU 的部署成本低,易于扩展。虽然嵌入模型,像许多深度学习模型一样,在处理大数据集时在 GPU 上表现最好,但我们这里的主要关注点是模型对单个短句子的表现。在这种情况下,使用 GPU 通常比使用 CPU 更慢,因为将数据传输到 GPU 的代价比将同样的数据从内存移动到 CPU 的代价更高。

8a465701003289a313e7f33dc8e54f82.png

用 Langchain 使用 SentenceTransformer 模型

即使你没有使用 GPU,使用 SentenceTransformer 嵌入模型在 Langchain 中也相对简单,易于实现。Langchain 自带 HuggingFace 集成,允许在 HuggingFace 托管的任何嵌入模型作为 Langchain 的 Embedding。

注意:你需要确保已安装了 sentence_transformers。

from langchain.embeddings import HuggingFaceEmbeddings, SentenceTransformerEmbeddings# 使用我们上面评估的最轻量级模型
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2") text = "Iceland is wonderful to visit"embedded_docs = embeddings.embed_documents([text])

阅读 Langchain 的 [索引和 VectorStores 文档,了解如何在你的链或代理代码中使用上述内容。

07538776574df3c13f6c9f2ead8ce1e8.png

测试方法

我们对每个模型的嵌入速度进行了50次迭代的抽样测试。嵌入的文本相对较短,旨在代表 LLM-based 应用在构建提示时对向量数据库进行搜索的类型。

texts = ["Visa requirements depend on your nationality. Citizens of the Schengen Area, the US, Canada, and several other countries can visit Iceland for up to 90 days without a visa."]

测试句子

c1f6f21167d7e6429113819e54a97655.png

模型延迟数据表

测试在以下基础设施上/从以下基础设施运行:

  • GCP:位于 us-central1 的 n1-standard-4(4 vCPU,15 GB RAM)实例

  • AWS:位于 us-west-2 的 ml.t3.large(2vcpu + 8GiB)实例

  • 我的 MacBook Pro 14" M1,拥有 16GB 的 RAM

在所有实验中,pytorch 只使用 CPU。

使用的软件包括:

  • JupyterLab

  • sentence-transformers 2.2.2

  • pytorch 2.0.1

  • Python 3.10 和 3.11

你认为 OpenAI  是目前最好的选择吗?为什么?欢迎发表你的看法和理由。

参考链接

  1. 首字节响应时间:https://en.wikipedia.org/wiki/Time_to_first_byte?ref=getzep.com

  2. 索相关信息:https://blog.langchain.dev/retrieval/?ref=getzep.com

  3. 近似最近邻:https://en.wikipedia.org/wiki/Nearest_neighbor_search?ref=getzep.com

  4. 语义搜索:https://www.sbert.net/examples/applications/semantic-search/README.html?ref=getzep.com

  5. 许多不同的嵌入模型:https://huggingface.co/spaces/mteb/leaderboard?ref=getzep.com

  6. MTEB 基准性能:https://huggingface.co/spaces/mteb/leaderboard?ref=getzep.com

  7. sentence-transformers:https://www.sbert.net/?ref=getzep.com

  8. 以基准作为指导,而非铁律:https://www.getzep.com/text-embedding-latency-a-semi-scientific-look/#your-mileage-may-vary-with-embedding-model-performance

  9. 大幅降低了:https://openai.com/blog/function-calling-and-other-api-updates?ref=getzep.com

  10. Azure OpenAI Service:https://azure.microsoft.com/en-us/products/cognitive-services/openai-service?ref=getzep.com

  11. Langchain 示例:https://www.getzep.com/text-embedding-latency-a-semi-scientific-look/#using-sentencetransformer-models-with-langchain

  12. 大量不同的模型:https://huggingface.co/sentence-transformers?ref=getzep.com

  13. HuggingFace:https://huggingface.co/?ref=getzep.com

  14. sentence_transformers:https://pypi.org/project/sentence-transformers/?ref=getzep.com

推荐阅读:

▶Android版ChatGPT正式上线;苹果遭千名开发者索赔10亿美元;阿里加码AR,八天连投两家公司 |极客头条

▶月薪8k-17k比例下降、每日写不足300行代码、拒绝加班,2023 中国开发者调查报告出炉!

▶15 个世界第一!腾讯斩获MSU世界视频编码器大赛全场最佳

1c77d4bd32fedc64f92c59fa200215b6.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63541.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python怎么Import自己写的SEO文章

Python怎么Import自己写的SEO文章 如果你是一位Python开发人员,并且正在为SEO优化而努力编写文章,那么你可能会想知道如何将自己编写的SEO文章导入您的程序中以便更好的利用。 在这篇文章中,我们将介绍如何使用Python中的import语句将自己编…

什么是全景地图?

如果问什么是全景图,那应该很多人都能回答上来。那么要是问什么是全景地图,估计很多人就不清楚了。然而我们在想要知道全景地图是怎么做的时候,就必须要知道什么是全景地图,那么这篇文章就告诉大家什么是全景地图。 全景地图也经…

全景图为何如此受欢迎/

为何全方位全景和720度全景这般受欢迎?今日我来给各位朋友科谱答疑解惑:说白了3d全景,便是运用全景和虚拟现实技术技术性,在互联网技术完成可720度无死角收看的呈现方式。从现阶段的实例来讲,3d全景除开在游戏娱乐行业得到巨大的…

教你一招,如何将vr网站中的360全景图图片和全景漫游文件下载到本地电脑

如果你打开vr全景平台,看到好的作品想将360全景图片下载保存到本地,直接右键另存是下载不下来的,因为上传的图片已经过服务器端碎片化处理,在浏览器端访问时通过js脚本动态的加载碎片组合成全景漫游的效果,那么将全景图…

【案例】VR全景图:效果+源码

狠人话不多说,直接放视频效果地址 一、效果 1.视频效果 视频效果地址:点击这里 2.图片效果 二、构思 该怎么实现?页面如何布局页面是否可随意控制显示1.功能 控制页面显示数量可放大控制全景图+自动播放左右按钮控制上一页或下一页(尾页:下一页按钮隐藏,首页:上一页按…

web实现全景图的交互展示

Web实现全景图的交互展示 不需要学习其他知识,小白也能实现全景图AR展示一、webVR全景图多种方案实现(aframe,Krpano,three,jquery-vrview等等)二、用krpano之前的一些知识准备三、krpano的购买、下载、注册四、做一个…

全景图的获取以及HTML页面显示全景图

目录 前言 1. 使用全景相机拍摄 2.手机app拍摄 3.使用爬虫爬取 二、全景图显示 总结 前言 随着前端技术的不断发展,图像的展示越来越重要,本文就介绍了全景图获取与显示的基础内容。 一、全景图片获取方法 1. 使用全景相机拍摄 拍摄的图片在2维显示下…

PTGui+PS生成全景图

1.打开PTGui,加载影响,拖入需要生成的全景图文件 2.点击对齐影像 3.点击创建全景图片 4.把生成的全景图导入到PS, 由于生成的全景图天空是空缺的,需要使用PS修复 套索选中黑色区域,右击填充即可。如遇到内存不足&#…

百度全景图/内景图切换示例

先看效果&#xff1a; 外景图 内景图&#xff1a; 具体代码&#xff1a; <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"viewport" content&qu…

什么是全景图?如何进行vr全景图拍摄

照片可以记录生活中的精彩的片段&#xff0c;而且照片的种类也分为很多&#xff0c;比如人像图&#xff0c;美食图&#xff0c;风景图等&#xff0c;其中有一种照片称为大像素全景图&#xff0c;大像素是全景的一种比较超高清的全景图&#xff0c;他不仅可以保留vr全景技术的所…

自己制作并发布720°VR全景图

大疆内置的全景图不好用&#xff0c;导出就成了平面图了&#xff0c;只能在他的“天空之城”上看&#xff0c;很不方便&#xff0c;而且他的全景图像素降低了&#xff0c;所以我们要自己制作。 1、先用大疆或者其它设备拍一组全景照。 2、然后下载并安装“PTGui”软件&#xff…

浪潮信息Inspur KOS性能及稳定性位列前茅 与万里安全数据库GreatDB高效兼容

为满足企业在数据安全、产品可控等数字化转型中的多样化需求&#xff0c;浪潮信息正基于技术与应用的深厚积累&#xff0c;持续优化创新产品及服务能力&#xff0c;助力企业在数智化时代下构筑黑心竞争力。日前&#xff0c;浪潮信息打造的Inspur KOS V5与万里安全数据库软件Gre…

随便聊聊浪潮开务数据库

今天这个话题挺随意&#xff0c;我们来聊聊浪潮开务数据库&#xff0c;原因主要是我的微信朋友圈被这个数据库刷屏了。当然我对这款号称多模数据库的非开源数据库也很感兴趣&#xff0c;也有很多疑问&#xff0c;希望各位专家能帮忙答疑解惑&#xff0c;揭开这款即将发布的 Kai…

浪潮信息推出服务器操作系统Inspur KOS的底气与豪气

近日&#xff0c;浪潮信息正式发布了其基于Linux内核、OpenAnolis等开源成果自主研发的服务器操作系统Inspur KOS&#xff0c;这为本就热闹非凡的自主操作系统市场再次带来涟漪。 何以推出Inspur KOS&#xff1f; 浪潮信息副总裁张东表示&#xff0c;“智慧时代&#xff0c;计…

20220624使用python3通过近6期的号码生成双色球红球

20220624使用python3通过近6期的号码生成双色球红球 2022/6/24 18:33 https://zst.cjcp.com.cn/shdd/ssq-hq.html 双色球红球杀号 首先获取近100期的双色球的红球号码。 【本例子以2022-06-21号算号为例子】 获取最近的6期的号码&#xff1a; 04 06 12 13 17 31 09 14 18 23…

php双色球(完整)

显示效果&#xff1a; 代码&#xff1a; <?php // 红色球号码区$red range(1, 33);// 随机选出6位数字for ($i0; $i < 6; $i) { $num array_rand($red); $redArr[] $red[$num];unset($red[$num]);}// 将选出来的6位数字小于10的补零foreach ($redArr as $v) {$red_b…

Proteus8.11的卸载与安装

写在前面&#xff1a;本来之前根据公众号的资料安装过&#xff0c;但是最近突然莫名其妙开始闪退&#xff0c;写的数码管显示程序在别人的电脑能跑&#xff0c;自己的数码管显示程序总闪退&#xff0c;搜索以后得知可能是软件安装的问题&#xff0c;就打算重装。卸载安装兜兜转…

《流浪地球》中的人工智能Moss背叛人类了吗?

编者按&#xff1a;《流浪地球》实在太火了&#xff0c;整个网络都在讨论这部电影。看过电影的人&#xff0c;一定记得这句经典台词&#xff0c;但刘培强决定要牺牲自己去点燃木星时&#xff0c;人工智能Moss说到&#xff0c;“让人类永远保持理智&#xff0c;确实是一种奢求”…

热分析TG-DTG-DTA-DSC介绍

热分析&#xff1a;1903年由Tammann提出&#xff0c;指用固定的速率加热或冷却物质&#xff0c;然后通过测量物质物理性质(如质量、温度、热焓、尺寸、机械、电学、磁学)研究物质物理变化(晶型转变、熔融、升华、吸附)和化学变化(脱水、分解、氧化、还原)的技术。我们常用到的热…