通过 Cohere Rerank 提升 RAG 性能
by Shashi Raina 和 Pradeep Prabhakaran 于 2024 年 9 月 16 日发表在 Amazon Bedrock、 Amazon SageMaker 和 生成式 AI 上 关联链接 发表评论 分享
重点摘要
Retrieval Augmented Generation (RAG) 是一种强大的技术,可以帮助企业开发实时数据集成的生成式人工智能AI应用,从而实现丰富的互动对话。为了提高 AI 应用的响应可靠性和准确性,优化 RAG 的检索过程尤为重要。通过 Rerank 步骤,可以增强搜索质量,从而提升生成响应的可信度。
RAG 的工作流程
RAG 的工作流程一般由两个步骤组成:
检索 RAG 利用生成的搜索查询从外部数据源中获取相关文档。基于检索的生成 基于前一步检索到的文档,生成模型会使用这些文档生成带有引用的答案。以下是 RAG 工作流程的示意图。
在 RAG 的工作流程中检索文档
密集检索是一种在 RAG 中检索文档的方式,旨在理解用户查询背后的语义含义和意图。此方式将在嵌入空间中查找用户查询最相关的文档,如下图所示。
密集检索的目标是将用户查询和文档或段落映射到一个密集向量空间。在这个空间中,可以使用标准的距离度量如余弦相似度或欧几里得距离计算查询和文档之间的相似性。然而,密集检索模型虽然高效,但遇到复杂数据和问题时会显得力不从心,因为信息被压缩到一个向量中,可能导致信息丢失。最终检索的响应质量在很大程度上受到检索文档相关性的影响。
使用 Cohere Rerank 提升搜索精度
为了提高检索的准确性,搜索工程师通常采用两阶段检索的方法。在这类系统中,第一阶段模型嵌入模型或检索器从较大的数据集中获取一组候选文档,然后第二阶段模型重排序器对第一阶段模型检索到的文档进行重排序。
Cohere Rerank 是一个输出查询和文档对之间相似度评分的模型。这个评分可以用来重新排列与搜索查询最相关的文档。Cohere Rerank 模型通过深度学习直接评估每个文档与查询之间的对齐,从而提升了搜索的准确性。以下示例展示了如何应用 Cohere Rerank。
在查询“与 Aidan Gomez 共同撰写的变换器论文于何时发表?”下,使用 k = 6 的返回结果显示,尽管最准确的结果在列表底部,但仍然返回了相关结果。利用 k = 3 时,最相关的文档将不会包含在检索结果中。
Cohere Rerank 通过评估语义内容、用户意图和上下文相关性等额外标准来重新评估和重新排序检索到的文档的相关性。下图显示了使用 Rerank 进行重新排序的结果。
通过在第一阶段检索后应用 Cohere Rerank,RAG 工作流程能够结合两种方法的优势,捕捉到基于向量空间接近匹配的相关项目,同时确保上下文相关的结果优先展示。下图展示了这种优化效率的提升。
最新版本的 Cohere Rerank,即 Rerank 3,专为增强企业搜索和 RAG 系统而设计,具备以下先进能力:
支持 4k 上下文长度,显著提升长文档的搜索质量;支持多方面和半结构化数据的检索如电子邮件、发票、JSON 文档、代码和表格;覆盖 100 多种语言的多语言支持;优化延迟和降低总体拥有成本 (TCO)。Rerank 端点接收查询和文档列表,并生成一个有序数组,每个文档都被分配了相关性评分。这为任何关键字或向量搜索系统的搜索质量提供强大的语义提升,而无需任何重构或替换。
开发人员和企业可以通过 Cohere 的托管 API 和 Amazon SageMaker 访问 Rerank。为此贴提供了在 Amazon SageMaker 上使用 Cohere Rerank 的逐步说明。
解决方案概述
本解决方案遵循以下高层步骤:
订阅模型包创建端点并进行实时推断前提条件
在此逐步操作中,您需具备以下前提条件:
cohereaws 笔记本。这是一个参考笔记本,必须进行建议的更改才能运行。由于它包含在 Jupyter 界面中正确呈现的元素,因此需要从 Amazon SageMaker 笔记本实例或 Amazon SageMaker Studio 打开。
奈云加速器拥有附加 AmazonSageMakerFullAccess 策略的 AWS 身份与访问管理 (IAM) 角色。要成功部署此机器学习 (ML) 模型,请选择以下选项之一:如果您的 AWS 账户未订阅 Cohere Rerank 3 Model Multilingual,则您的 IAM 角色需要具备以下三个权限,并且您必须有权在所用的 AWS 账户中进行 AWS 市场 订阅:awsmarketplaceViewSubscriptionsawsmarketplaceUnsubscribeawsmarketplaceSubscribe如果您的 AWS 账户已订阅 Cohere Rerank 3 Model Multilingual,您可以跳过订阅模型包的指示。在生产环境中避免使用完全权限。安全最佳实践是遵循最少权限原则。
在 Amazon SageMaker 上实施 Rerank 3
若要通过 Cohere Rerank 提升 RAG 性能,请使用以下部分中的说明。
订阅模型包
订阅模型包,请按照下列步骤操作:
在 AWS 市场中,打开模型包列表页面 Cohere Rerank 3 Model Multilingual选择继续订阅。在订阅此软件页面上,查看最终用户许可协议EULA、定价和支持条款,然后选择 接受优惠。选择继续配置并选择区域。您将看到一个产品 ARN 显示,如下图所示。这是创建可部署模型时需要指定的模型包 Amazon 资源名称 (ARN),请复制与您的区域对应的 ARN,并在下面的单元中输入。代码片段来源于 awscohere 笔记本。如果您遇到任何问题,请参考笔记本以获取最新版本。
python!pip install upgrade cohereaws
如果您升级了包,则需要重启内核
from cohereaws import Clientimport boto3
在 Configure for AWS CloudFormation 页面上,如下图所示,在 Product Arn 下,记下产品 ARN 的最后一部分,以便在以下代码中将其作为 coherepackage 变量的值使用。
pythoncoherepackage = coherererankmultilingualv313dba038aab73b11b3f0b17fbdb48ea0
modelpackagemap = { useast1 farnawssagemakeruseast1865070037744modelpackage/{coherepackage} useast2 farnawssagemakeruseast2057799348421modelpackage/{coherepackage} uswest1 farnawssagemakeruswest1382657785993modelpackage/{coherepackage} uswest2 farnawssagemakeruswest2594846645681modelpackage/{coherepackage} cacentral1 farnawssagemakercacentral1470592106596modelpackage/{coherepackage} eucentral1 farnawssagemakereucentral1446921602837modelpackage/{coherepackage} euwest1 farnawssagemakereuwest1985815980388modelpackage/{coherepackage} euwest2 farnawssagemakereuwest2856760150666modelpackage/{coherepackage} euwest3 farnawssagemakereuwest3843114510376modelpackage/{coherepackage} eunorth1 farnawssagemakereunorth1136758871317modelpackage/{coherepackage} apsoutheast1 farnawssagemakerapsoutheast1192199979996modelpackage/{coherepackage} apsoutheast2 farnawssagemakerapsoutheast2666831318237modelpackage/{coherepackage} apnortheast2 farnawssagemakerapnortheast2745090734665modelpackage/{coherepackage} apnortheast1 farnawssagemakerapnortheast1977537786026modelpackage/{coherepackage} apsouth1 farnawssagemakerapsouth1077584701553modelpackage/{coherepackage} saeast1 farnawssagemakersaeast1270155090741modelpackage/{coherepackage}}
region = boto3Session()regionname
if region not in modelpackagemapkeys() raise Exception(f当前 boto3 会话区域 {region} 不受支持。)
modelpackagearn = modelpackagemap[region]
创建端点并进行实时推断
若要了解 Amazon SageMaker 的实时推断如何工作,请参考 Amazon SageMaker 开发者指南。
创建端点
创建端点,请使用以下代码。
pythonco = Client(regionname=region)
cocreateendpoint(arn=modelpackagearn endpointname=coherererankmultilingualv30 instancetype=mlg52xlarge ninstances=1)
如果端点已创建,您只需连接到它即可
coconnecttoendpoint(endpointname=coherererankmultilingualv30”)

创建端点后,即可进行实时推断。
创建输入数据
创建输入数据,请使用以下代码。
pythondocuments = [ {TitleContrasea incorrectaContentHola llevo una hora intentando acceder a mi cuenta y sigue diciendo que mi contrasea es incorrecta Puede ayudarme por favor} {TitleConfirmation Email MissedContentHi I recently purchased a product from your website but I never received a confirmation email Can you please look into this for me} {Title Content } {TitleCustomer Support is BusyContentGood morning I have been trying to reach your customer support team for the past week but I keep getting a busy signal Can you please help me} {TitleFalschen Artikel erhaltenContentHallo ich habe eine Frage zu meiner letzten Bestellung Ich habe den falschen Artikel erhalten und muss ihn zurckschicken} {TitleCustomer Service is UnavailableContentHello I have been trying to reach your customer support team for the past hour but I keep getting a busy signal Can you please help me} {TitleReturn Policy for Defective ProductContentHi I have a question about the return policy for this product I purchased it a few weeks ago and it is defective} {Title收到错误物品Content早上好,关于我最近的订单,我有一个问题。我收到了错误的商品,需要退货。} {TitleReturn Defective ProductContentHello I have a question about the return policy for this product I purchased it a few weeks ago and it is defective}]
执行实时推断
要执行实时推断,请使用以下代码。
pythonresponse = corerank(documents=documents query=What emails have been about returning items rankfields=[TitleContent] topn=5)
可视化输出
要可视化输出,请使用以下代码。
pythonprint(f文档 {response})
以下是输出响应的截图。
清理工作
为了避免重复收费,请按照以下步骤清理在此操作中创建的资源。
删除模型
在成功执行实时推断之后,您不再需要该端点。您可以终止端点以避免收费。
pythoncodeleteendpoint()coclose()
可选取消订阅
如果您想要取消模型包的订阅,请遵循以下步骤。在取消订阅前,请确保没有使用该模型包或算法创建的可部署模型。您可以通过查看与模型关联的容器名称找到此信息。
从 AWS 市场取消产品订阅的步骤:
在您的软件订阅页面上,选择 机器学习 选项卡。找到您希望取消订阅的列表,并点击 取消订阅。总结
RAG 是一种有效的技术,用于开发集成实时数据并使用专有信息实现互动对话的 AI 应用。RAG 通过利用外部领域特定知识源增强 AI 响应,但其效果取决于找到合适的源材料。本文重点介绍了使用 Cohere Rerank 提高 RAG 系统中搜索效率和准确性。RAG 的工作流程通常包括两个步骤:检索相关文档和生成答案。尽管密集检索在大型数据集上的表现良好,但由于信息压缩,面对复杂数据和问题时可能会出现困难。Cohere Rerank 使用深度学习