亚马逊AWS官方博客

Amazon Bedrock 现已支持访问 Cohere Command Light 和 Cohere Embed English 和 Multilingual 模型

Cohere 提供文本生成和表示模型,以支持业务应用程序生成文本、汇总、搜索、聚类、分类和利用检索增强生成(RAG)。今天,我们宣布 Cohere Command Light 以及 Cohere Embed English 和 Multilingual 模型将在 Amazon Bedrock 上推出。它们将加入已经推出的 Cohere Command 模型

Amazon Bedrock 是一项完全托管的服务,提供各种来自领先 AI 公司(包括 AI21 LabsAnthropicCohereMetaStability AIAmazon)的高性能基础模型(FM),以及用于构建生成式人工智能应用程序的广泛功能,可简化开发,同时维护隐私和安全。通过此次发布,Amazon Bedrock 进一步扩展了模型选择范围,以帮助您构建和扩展企业级生成式人工智能。您可以在 Antje 的这篇文章中了解更多关于 Amazon Bedrock 的信息

Command 是 Cohere 的旗舰文本生成模型。它经过训练,可遵循用户命令,并在业务应用程序中发挥作用。Embed 是一组经过训练的模型,可用于从文本文档生成高质量的嵌入。

嵌入是机器学习(ML)中最令人着迷的概念之一。它是许多处理自然语言、推荐和搜索算法的应用程序的核心。给定任何类型的文档、文本、图像、视频或声音,都可以将其转换为一组数字,称为向量。具体而言,嵌入是指一种将数据表示为向量的技术,这种技术以一种方式捕获有意义的信息、语义关系或上下文特征。简言之,嵌入之所以有用,是因为表示相似文档的矢量彼此“接近”。用更正式的术语来说,嵌入可以将人类感知的语义相似性转化为向量空间中的邻近性。嵌入通常通过训练算法或模型生成。

Cohere Embed 是一系列经过训练的模型,可用于从文本文档生成嵌入。Cohere Embed 分为两种形式,一种是英语语言模型,另一种是多语言模型,这两种模式现均已在 Amazon Bedrock 上推出。

文本嵌入有以下三个主要应用场景:

语义搜索 – 借助嵌入,可按含义搜索文档集合,与现有的关键字匹配系统相比,这使得搜索系统能够更有效地整合上下文和用户意图。

文本分类 – 构建自动对文本进行分类并根据类型采取操作的系统。例如,电子邮件筛选系统可能会决定将一封邮件发送给销售部门,然后将另一封邮件上报给二级支持人员。

检索增强生成(RAG)– 使用上下文中提供的数据来增强提示,从而改进大型语言模型(LLM)的文本生成质量。用于增强提示的外部数据可以来自多个数据来源,如文档存储库、数据库或 API。

假设您有数百份描述公司政策的文档。由于 LLM 接受的提示大小有限,您必须选择这些文档的相关部分,并将其作为上下文包含在提示中。解决方案是将所有文档转换为嵌入,并将它们存储在向量数据库(如 OpenSearch)中。

当用户想要查询这些文档语料库时,您可以将用户的自然语言查询转换为向量,并在向量数据库中执行相似性搜索,以找到与此查询最相关的文档。然后,您可以将用户的原始查询和向量数据库显示的相关文档一起嵌入到给 LLM 的提示中。在提示的上下文中包含相关文档有助于 LLM 生成更准确且相关的答复。

现在,您可以通过调用 Bedrock API,或者使用 AWS SDKAWS 命令行界面(AWS CLI)将 Cohere Command Light 和 Embed 模型集成到使用任意编程语言编写的应用程序中。

Cohere Embed 的实际操作
经常阅读 AWS 新闻博客的人都很清楚,我们乐于向您展示我们在博客中所写的技术。

今天,我们将推出三种不同的模型:Cohere Command Light、Cohere Embed English 和 Cohere Embed Multilingual。为调用 Cohere Command Light 而编写的代码与调用 Cohere Command 时所用的并无二致,后者已经是 Amazon Bedrock 的一部分。因此,在此示例中,我决定向您展示如何编写与 Cohere Embed 交互的代码,并回顾如何使用它生成的嵌入。

要开始使用 Bedrock 上的新模型,首先导航至 AWS 管理控制台,然后打开 Bedrock 页面。然后,在左下角的窗格中选择模型访问权限。接下来,选择右上角的编辑按钮,并启用对 Cohere 模型的访问权限。

Bedrock – 使用 Cohere 模型激活模型

现在我知道,我已可访问模型,接下来我在笔记本电脑上打开代码编辑器。我假定您已经配置了 AWS 命令行界面(AWS CLI),这将允许 AWS SDK 找到您的 AWS 凭证。在本演示中,我将使用 Python,但我想说明使用任何语言都可以调用 Bedrock。我还会分享一个公开的要点,其中包含用 Swift 编程语言编写的相同代码示例。

回到 Python 上来,我首先运行 ListFoundationModels API 调用,查找 Cohere Embed 的 modelId

import boto3
import json
import numpy

bedrock = boto3.client(service_name='bedrock', region_name='us-east-1')

listModels = bedrock.list_foundation_models(byProvider='cohere')
print("\n".join(list(map(lambda x: f"{x['modelName']} : { x['modelId'] }", listModels['modelSummaries']))))

运行以下代码可生成列表:

Command:cohere.command-text-v14
Command Light:cohere.command-light-text-v14
Embed English:cohere.embed-english-v3
Embed Multilingual:cohere.embed-multilingual-v3

我选择 cohere.embed-english-v3 模型 ID,并编写代码以将文本文档转换为嵌入。

cohereModelId = 'cohere.embed-english-v3'

# For the list of parameters and their possible values,
# check Cohere's API documentation at https://docs.cohere.com/reference/embed

coherePayload = json.dumps({
     'texts': ["This is a test document", "This is another document"],
     'input_type': 'search_document',
     'truncate': 'NONE'
})

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime',
    region_name='us-east-1'
)
print("\nInvoking Cohere Embed...")
response = bedrock_runtime.invoke_model(
    body=coherePayload,
    modelId=cohereModelId,
    accept='application/json',
    contentType='application/json'
)

body = response.get('body').read().decode('utf-8')
response_body = json.loads(body)
print(np.array(response_body['embeddings']))

得到的回应如下

[1.234375 -0.63671875 -0.28515625...0.38085938 -1.2265625 0.22363281]

现在我已经获得了嵌入,下一步取决于我的应用程序。我可以将此嵌入存储在向量仓库中,也可以使用它在现有仓库中搜索类似文档,以及执行更多操作。

要了解更多信息,我强烈建议您按照 Amazon Bedrock 研讨会的这一部分提供的实践操作说明进行操作。这是 RAG 的端到端示例。该示例演示了如何加载文档、生成嵌入、将嵌入存储在向量仓库中、执行相似性搜索,以及将相关文档用于发送给 LLM 的提示。

推出情况
Cohere Embed 模型现已面向两个可以使用 Amazon Bedrock 的 AWS 区域的所有 AWS 客户开放:美国东部(弗吉尼亚州北部)和美国西部(俄勒冈州)。

AWS 收取模型推理费用。对于 Command Light,AWS 按处理的输入或输出令牌收费。对于 Embed 模型,AWS 按输入令牌收费。您可以选择按使用量付费方式,这样做无需支付任何预付费用或周期性费用。您也可以预置足够的吞吐量来满足应用程序的性能要求,以换取基于时间的期限承诺。Amazon Bedrock 定价页面包含详细信息

借助这些信息,您可以做好准备,在应用程序中通过 Amazon Bedrock 和 Cohere Embed 模型使用文本嵌入。

立即构建!

— seb