亚马逊AWS官方博客

Amazon Titan Text V2 现已在 Amazon Bedrock 中提供,并进行优化以改进 RAG

Amazon Titan 系列模型Amazon Bedrock 独有的,它建立在 Amazon 25 年来在推进人工智能(AI)和机器学习(ML)方面积累的专业知识基础之上。Amazon Titan 基础模型(FM)提供了一套全面的预训练图像、多模态和文本模型,可通过完全托管的 API 进行访问。Amazon Titan 模型经过大量数据集的训练,功能强大且用途广泛,专为一系列应用程序而设计,同时遵循负责任人工智能实践。

Amazon Titan Text Embeddings V2 是 Amazon Titan 系列的最新成员,它是 Amazon 的第二代文本嵌入模型,现已在 Amazon Bedrock 中推出。这一全新的文本嵌入模型针对检索增强生成(RAG)进行了优化。它已在 100 多种语言和代码上进行预训练。

Amazon Titan Text Embeddings V2 现在可以选择输出向量的大小(256、512 或 1024)。较大的向量可以生成更详细的响应,但也会增加计算时间。较短的向量不那么详细,但可以缩短响应时间。使用较小的向量有助于降低存储成本并缩短从向量数据库搜索和检索文档摘录的延迟。我们测量了 Amazon Titan Text Embeddings V2 生成的向量的准确度,并发现 512 维向量的准确度约为 1024 维向量的 99%256 维向量保持 97% 的准确度。这意味着您可以节省 75% 的向量存储空间(从 1024 维减少到 256 维),并保持较大向量提供的大约 97% 的准确度

Amazon Titan Text Embeddings V2 还提出了一种经过改进的单位向量归一化方法,有助于提高测量向量相似性时的准确度。您可以根据使用案例在嵌入的归一化或非归一化版本之间进行选择(对于 RAG 使用案例来说,归一化版本更加准确)。向量归一化是将其缩放为单位长度或幅度为 1 的过程。在向量运算过程中,确保所有向量具有相同的比例和均等的贡献是很有用的,这样可以防止某些向量因其量级较大而支配其他向量。

这种新的文本嵌入模型非常适合各种使用案例。它可以帮助您对文档执行语义搜索,例如检测抄袭;可以将标签分类为基于数据的学习表示,例如,将电影分类为不同流派;还可以提高检索或生成的搜索结果的质量和相关性,例如,使用 RAG 根据兴趣推荐内容。

嵌入如何帮助提高 RAG 的准确度
想象一下,您是一位能力非凡的大型语言模型(LLM)研究助理。LLM 就像那些可以编写不同创意文本格式的天才,但他们的知识来自于接受训练时所使用的海量数据集。这些训练数据可能有点过时,或者缺乏满足您的需求的具体细节。

这时,RAG 就能派上用场。RAG 就像您的助手一样,从自定义来源(如公司知识库)获取相关信息。当 LLM 需要回答问题时,RAG 会提供最新信息,以帮助其生成最佳答案。

为了查找最新信息,RAG 使用了嵌入。将这些嵌入(或向量)想象为超精简的摘要,它们会捕获一段文本的关键思想。高质量的嵌入模型,例如 Amazon Titan Text Embeddings V2,可以准确地创建这些摘要,就像一个可以快速掌握每个文档的要点的好助手。这可确保 RAG 检索与 LLM 最相关的信息,从而获得更准确、更切题的答案。

可以把它想象成在图书馆进行搜索。书的每一页都编制了索引,并由一个向量表示。如果搜索系统不好,您可能会得到一堆不完全符合您的需求的书籍。但是,借助能够理解内容的出色搜索系统(例如高质量的嵌入模型),您将准确获得所需的内容,从而使 LLM 能够更轻松地生成答案。

Amazon Titan Text Embeddings V2 概述
Amazon Titan Text Embeddings V2 经过优化,可在较小维度下实现较高的准确度和检索性能,从而减少存储和延迟。我们测量发现,512 维向量的准确度约为 1024 维向量的 99%。256 维数据可提供 97% 的准确度。

最大令牌数量 8192
语言 预训练中有 100 多种
支持微调
支持归一化
向量大小 256、512、1024(默认)

如何使用 Amazon Titan Text Embeddings V2
您很可能会通过 Amazon Bedrock 知识库间接与 Amazon Titan Text Embeddings V2 进行交互。知识库负责创建基于 RAG 的应用程序的繁重工作。不过,您也可以使用 Amazon Bedrock 运行时 API 直接从代码中调用模型。这是 Swift 编程语言的一个简单示例(只是为了向您展示您可以使用任何编程语言,而不仅仅是 Python):

import Foundation
import AWSBedrockRuntime 

let text = "This is the text to transform in a vector"

// create an API client
let client = try BedrockRuntimeClient(region: "us-east-1")

// create the request 
let request = InvokeModelInput(
   accept: "application/json",
   body: """
   {
      "inputText": "\(text)",
      "dimensions": 256,
      "normalize": true
   }
   """.data(using: .utf8),
   contentType: "application/json",
   modelId: "amazon.titan-embed-text-v2:0")

// send the request 
let response = try await client.invokeModel(input: request)

// decode the response
let response = String(data: (response.body!), encoding: .utf8)

print(response ?? "")

该模型的有效负载中包含三个参数:

  • inputText – 要转换为嵌入的文本。
  • normalize – 一个标志,指示是否对输出嵌入进行归一化。默认为 true,此设置最适合 RAG 使用案例。
  • dimensions – 输出嵌入应具有的维度数。接受三个值:256、512 和 1024(默认值)。

我在 Package.swift 中添加了对 AWS SDK for Swift 的依赖项。我输入 swift run 来构建并运行此代码。它打印以下输出(为保持简短而将其截断):

{"embedding":[-0.26757812,0.15332031,-0.015991211...-0.8203125,0.94921875],
"inputTextTokenCount":9}

与往常一样,别忘了在使用 API 之前在 Amazon Bedrock 控制台启用对新模型的访问

Amazon Titan Text Embeddings V2 很快将成为知识库为 Amazon Bedrock 提议的默认 LLM。您使用原始 Amazon Titan Text Embeddings 模型创建的现有知识库将继续运行,不做任何更改。

要了解有关 Amazon Titan 系列模型的更多信息,请观看以下视频:

 

新的 Amazon Titan Text Embeddings V2 模型现已在 AWS 区域美国东部(弗吉尼亚州北部)和美国西部(俄勒冈州)的 Amazon Bedrock 中推出。查看完整区域列表以了解将来的更新。

要了解更多信息,请查看 Amazon Bedrock 中的 Amazon Titan 产品页面和定价页面。另外,不要错过这篇博客文章,了解如何使用 Amazon Titan Text Embeddings 模型。您还可以访问我们的 community.aws 网站,查找深入的技术内容,并了解我们的构建者社区如何在其解决方案中使用 Amazon Bedrock。

立即在 Amazon Bedrock 控制台中使用 Amazon Titan Text Embeddings V2,然后将反馈发送至 Amazon Bedrock AWS re:Post 或通过您常用的 AWS Support 联系方式发送。

— seb