译者 | 布加迪
审校 | 重楼
向量嵌入在AI中至关重要,它可以将复杂的非结构化数据转换成机器可以处理的数值向量。这些嵌入捕获数据中的语义和关系,从而实现更有效的分析和内容生成。
ChatGPT的创建者OpenAI提供了各种嵌入模型,这些模型提供高质量的向量表示,可用于包括语义搜索、聚类和异常检测在内的各种应用。这篇指南将探讨如何利用OpenAI的文本嵌入模型来构建响应迅速的智能AI系统。
什么是向量嵌入和嵌入模型?
在我们深入讨论之前,不妨先阐述几个术语。首先,什么是向量嵌入?向量嵌入是许多AI概念的基础。它是数据的数值表示,特别是非结构化数据,比如文本、视频、音频、图片及其他数字媒体。它捕获数据中的语义和关系,并为存储系统和AI模型提供一种高效的方式来解读、处理、存储和检索复杂的高维非结构化数据。
所以,如果嵌入是数据的数值表示,那么如何将数据转换成向量嵌入?这时候嵌入模型就有了用武之地。
嵌入模型是一种将非结构化数据转换成向量嵌入的专用算法。它旨在学习数据中的模式和关系,然后在高维空间中表示它们。关键思想是,相似的数据片段具有相似的向量表示,并且在高维空间中彼此更接近,从而允许AI模型更有效地处理和分析数据。
比如在自然语言处理(NLP)背景下,嵌入模型可能在学习后明白单词“king”和“queen”是相关的,应该在向量空间中彼此靠近,而像“banana”这样的单词将被放在更远的位置。向量空间中的这种邻近反映了单词之间的语义关系。
嵌入模型和向量嵌入的一个常见用途在于检索增强生成(RAG)系统。RAG系统不是仅仅依赖大语言模型(LLM)中的预训练知识,而是在生成输出之前为LLM提供额外的上下文信息。这些额外的数据使用嵌入模型转换成向量嵌入,然后存储在像Milvus这样的向量数据库中。对于需要详细的、基于事实的查询响应的组织和开发人员来说,RAG是理想的选择,使得它在各个行业部门都很有价值。
OpenAI文本嵌入模型
ChatGPT背后的OpenAI公司提供了各种嵌入模型,它们非常适合处理语义搜索、聚类、推荐系统、异常检测、多样性测量和分类等任务。
鉴于OpenAI的受欢迎程度,许多开发人员可能会使用它的模型来尝试RAG概念。虽然这些概念一般适用于嵌入模型,还是不妨关注OpenAI具体提供了什么。
在谈论NLP时,一些OpenAI嵌入模型特别重要。
- text-embedding-ada- 002
- text-embedding-3-small
- text-embedding-3-large
下表提供了这些模型之间的直接比较。
模型 | 描述 | 输出维度 | 最大输入 | 价格 |
text- embedding-3- large | 功能最强大的嵌入模型, 同时适用于英文任务和 非英文任务。 | 3072 | 8.191 | 0.13美元/100万 个token |
text- embedding-3- small | 比第二代ada嵌入模型 提高了性能。 | 1536 | 8.191 | 0.10美元/100万 个token |
text- embedding- ada - 002 | 功能最强大的第二代嵌入 模型,取代16个第一代 模型。 | 1536 | 8.191 | 0.02美元/100万 个token |
选择合适的模型
与所有事情一样,选择模型需要权衡利弊。在全身心投入其中一个模型之前,确保你清楚地了解自己想要做什么、有哪些可用的资源以及期望从生成的输出中获得哪种程度的准确性。使用RAG系统,你可能会权衡计算资源与查询响应的速度和准确性。
- text- embeddings -3-large:当准确性和嵌入丰富度很重要时,这可能是首选的模型。它使用最多的CPU和内存资源(价格更昂贵),需要最长的时间来生成输出,但输出将是高质量的。典型的用例包括研究、高风险应用或处理非常复杂的文本。
- text-embedding-3-small:如果你更关心速度和效率,而不是获得绝对最好的结果,该模型的资源密集程度较低,从而降低了成本,并缩短了响应时间。典型的用例包括实时应用或资源有限的情形。
- text-embedding-ada-002:虽然其他两个模型是最新版本,但这是在OpenAI引入之前的主要模型。这种多功能模型在两个极端之间提供了很好的中间地带,提供了可靠的性能和合理的效率。
如何用OpenAI生成向量嵌入?
不妨逐步看看如何使用这每一种嵌入模型生成向量嵌入。无论选择哪种模型,你都需要具备几个要素才能入手,包括向量数据库。
PyMilvus是用于Milvus的Python软件开发工具包(SDK),在这种环境下很方便,因为它与所有这些OpenAI模型无缝集成。OpenAI Python库是另一个选择,它是OpenAI提供的SDK。
为了本教程,我将使用PyMilvus生成向量嵌入,并将它们存储在Zilliz Cloud中,以便进行简单的语义搜索。
Zilliz Cloud上手起来很简单:
- 注册一个免费的Zilliz Cloud帐户。
- 设置无服务器集群,并获取公共端点和API密钥。
- 创建一个向量集合,并插入你的向量嵌入。
- 对存储的嵌入进行语义搜索。
好了,现在我将解释如何为上面讨论的这三个模型生成向量嵌入。
text-embedding-ada-002text-embedding-ada-002
使用text-embedding-ada-002生成向量嵌入,并将其存储在Zilliz Cloud中进行语义搜索:
text-embedding-3-small
使用text-embedding-3-small生成向量嵌入,并将其存储在Zilliz Cloud中进行语义搜索:
text-embedding-3-large
使用text-embedding-3-large生成向量嵌入,并将其存储在Zilliz Cloud中进行语义搜索:
结论
虽然本教程只是触及表面,但这些脚本足以让你开始上手向量嵌入。值得一提的是,这些绝不是唯一可用的模型。这份全面的AI模型列表都与Milvus协同工作。不管你的AI用例是什么,你可能都会找到一个可以满足需求的模型。
如果想进一步了解Milvus、Zilliz Cloud、RAG系统和向量数据库等方面,敬请访问Zilliz.com。
原文标题:Beginner’s Guide to OpenAI Text Embedding Models,作者:Jason Myers
链接:https://thenewstack.io/beginners-guide-to-openai-text-embedding-models/。