RAG 自动化的架构蓝图:使用 Vertex AI Search 进行高级文档理解
这篇文章深入探讨了如何使用Vertex AI Search简化高级文档问答检索增强生成 (RAG) 管道的创建和评估。我们将使用财务文档(例如来自主要科技公司的季度报告)通过一个实际示例来说明此过程。您将学习如何无缝提取、索引、查询和彻底评估您的 RAG 管道。
至关重要的是,我们将探索 Vertex AI 的可定制 API 工作流程,让您可以定制 RAG 系统以获得最佳性能。我们还将演示如何利用 Gemini Pro 来增强搜索结果并生成更高质量的答案。此外,我们将深入研究使用搜索指标(如精确度、召回率、平均倒数排名 (MRR)、折扣累积增益 (DCG) 等)评估检索性能。我们还将进行评估并深入了解如何根据既定事实评估答案质量,包括语义和事实准确性。
本指南主要侧重于构建强大的 Vertex AI Search 解决方案,强调其内置的高级文档理解技术,尤其是涉及复杂表格的技术。本指南旨在提供全面的内容,您可以将其用作您自己的特定领域文档理解 RAG 使用 Vertex AI 用例的起始蓝图。
基于我们之前对使用 Vertex AI Search 加速文档发现的探索,我们现在将专注于如何利用源文档来提取复杂的答案和有价值的见解。设置、实验和评估的所有代码都在此GitHub 存储库中共享。
Imagen 2 (Vertex AI Studio) 生成的图像
G活力 AI 为开发人员和企业提供了大量机会,彻底改变了业务流程,改变了客户体验,并开辟了新的收入来源。然而,要充分发挥这一潜力,建设者和 IT 领导者必须驾驭复杂的环境,在快速试验和迭代 AI 模型、应用程序和代理之间取得平衡,同时还要考虑成本管理、治理和可扩展性等关键因素。
在最近的 Next’24 Google Cloud 活动上,我们推出了Vertex AI Agent Builder,这是一款改变游戏规则的解决方案,将我们强大的 Vertex AI 搜索和对话产品与一系列先进的开发者工具集成在一起。这项全面的产品使开发人员能够创建和部署复杂的 AI 驱动代理,这些代理可以无缝处理复杂的任务和查询,最终推动各个领域的创新和效率。
了解 Vertex AI Search
Vertex AI Search 是 Google Cloud 内的一个综合平台,旨在帮助组织为其员工和客户制定定制的搜索解决方案。该平台可在各种数据源(包括网站、结构化数据(例如 BigQuery 表、JSON 行)和非结构化数据(例如 PDF、HTML、文本))中提供类似 Google 搜索的体验。
在我们之前的博客文章中,我们讨论了使用 Vertex AI Search 从公开索引的网站收集目标网页。此方法利用了这些网页的现有 Google 索引。我们使用这种方法构建了用于挖掘 PDF 文档的知识发现管道。
本文是我们上一篇文章的后续,其中我们处理提取的 PDF 文档。这些文档可能已经随时可用,如果存在,您可以直接使用它们。它们也可能是您企业的专有文档。在这里,我们将探讨如何提取、处理和理解这些文档中的数据,以构建一个可以回答复杂查询的系统,例如检索事实信息或从季度报告中的财务表中提取数字。
首先,Vertex AI Search 是 GCP 推出的完全托管平台,它将 Google 搜索质量功能集成到您的企业数据中,具有两个主要优势:
- **提升搜索体验:**它将传统的基于关键字的搜索转变为现代的对话式体验,就像 Google 的创新型生成式搜索一样。这一增强功能显著提高了内部和面向客户的应用程序的效率。
- **增强型生成式 AI 应用程序:**它还有助于在生成式 AI 应用程序中生成答案。通过将生成式 AI 植根于您的企业数据中,Vertex AI Search 可确保更高的准确性、可靠性和相关性,这对于实际业务用例至关重要。它充当即用型 RAG 系统,简化了搜索功能的集成。
构建自定义 RAG 管道可能很复杂。Vertex AI Search 通过提供现成的解决方案简化了此过程。它简化了搜索和发现过程的每个方面,从数据提取和转换到信息检索和摘要,只需单击几下即可完成。因此,您可以使用 Vertex AI Search 作为检索引擎快速开发功能强大的 RAG 驱动应用程序。
虽然即用型解决方案提供了相当大的便利,但 Vertex AI Search 还为开发人员提供了详细的控制权。您可以利用平台的灵活性来定制 RAG 管道的每个阶段,使其满足您的独特需求。这种混合方法使您能够在预构建组件和自定义增强功能之间取得理想的平衡,确保您的应用程序与您的特定用例完美契合。
Vertex AI Search 通过一套全面的 API 实现了这一点。这些 API公开了 Vertex AI Search 的 RAG 系统的底层组件,使开发人员能够满足自定义用例或为需要详细控制的客户提供服务。这包括 Document AI Layout Parser API、Ranking API、Grounded Generation API 和 Check Grounding API 等。
让我们开始吧!首先,我们将深入了解我们的数据集,这是我们 RAG 管道的基础。然后,我们将学习如何有效地将这些数据导入 Vertex AI Search,并将其组织起来以实现无缝检索。重点将放在 Vertex AI Search 中的索引策略上,以确保我们的 AI 可以在需要时访问最相关的信息。我们将探讨查询索引文档的技术,并尝试各种管道方法。最后,我们将收集结果并学习如何评估它们的检索准确性和生成的答案的质量。此旅程将使您掌握知识,利用 RAG 和 Vertex AI Search 的强大功能构建更智能、更明智的 AI 管道。
数据集
我们将用于实验的数据集包括三家科技公司的季度报告:Alphabet、亚马逊和微软。该数据集涵盖了 2021 年第一季度至 2023 年第四季度三年间的 36 份文档(每家公司 12 份)。
为了方便实验,我们从这些文档中得出了 100 个问答对。每对都直接链接到一个文档,从而建立单跳问答场景。这些问题和答案经过精心设计,侧重于从表格和复杂段落中提取信息,这对 RAG 系统提出了巨大挑战。这组 100 个问答对将作为评估我们将在此介绍的各种 RAG 管道设计性能的基本事实。PDF 财务季度报告的数据集可以在这里找到。显示问答对数据集的基本事实可以在名为的 CSV 文件中找到。此文件还包括以下元信息 - i)映射文档,ii)公司名称,以及 iii)时间段。此元信息由CSV 文件中列ground_truth.csv
下的单个字段捕获。document
下面是 Alphabet 2020 年第一季度报告中的示例表,总结了主要与营业收入和利润率相关的财务结果。
来自我们基本事实 CSV 的示例问题,以及从上表得出的预期答案。
2021年3月底,谷歌的营业收入是多少(十亿美元),与
去年同期相比如何?
谷歌 2021 年第一季度的营业收入为 164.37 亿美元。这比 2020 年第一季度的 79.77 亿美元有所增加。
为了得出这个答案,我们首先需要从查询中推断出具体细节以检索正确的文档。这涉及导航到正确的页面、引用适当的表格以及解析列信息。然后,我们将字段映射到列标题并找到正确的部分。最后,我们将所有这些收集到的信息整合成一个连贯的答案。
**注意:**微软的财务日历遵循与传统日历年不一致的财政年度。例如,他们的第一财季涵盖了从 7 月到 9 月的时期。这意味着他们的第一季度收益报告实际上反映了正常日历中上一季度的表现。这已在问题和文档名称中得到说明。
文档采集和索引
为了有效地使用 Vertex AI Search 来理解财务文件并回答问题,我们首先需要准备和提取数据。这包括在 Vertex AI Search 中创建专用数据存储,并将我们的财务文件从 Google Cloud Storage (GCS) 导入到此存储库中。幸运的是,Vertex AI Search 会自动为您处理信息的解析、分块和索引。
接下来,我们将配置一个文档搜索应用程序,该应用程序利用提取的数据提供强大的搜索和检索功能。通过遵循这些步骤,我们为高效索引和探索您的财务文档奠定了坚实的基础。这使我们能够快速访问实验所需的信息,并开发强大的文档问答管道。让我们更详细地探讨每个步骤。
一、创建数据存储:
Vertex AI Search 中的数据存储本质上是存储已处理文档的容器。要创建数据存储来包含我们已处理的部分,我们需要为数据存储分配一个唯一标识符和显示名称,以便在 Vertex AI Search 项目中轻松识别。此时,数据存储不包含任何文档。下一步,我们将把文档推送(提取)到此数据存储中。需要注意的是,原始 PDF 文档实际上存储在 GCS 中。
下面的代码片段简要介绍了如何使用 Vertex AI Search 的 REST API 完成此操作。您还可以使用 Vertex AI Python SDK。请参阅此处的Discovery Engine Vertex AI 文档。创建数据存储的完整代码可在此处找到。
url = f“https://discoveryengine.googleapis.com/v1alpha/projects/ {config.PROJECT_ID} /locations/global/collections/default_collection/dataStores?dataStoreId= { data_store_id} ”
headers = {
'授权':f'Bearer {config.ACCESS_TOKEN} ',
'内容类型':'application/json',
'X-Goog-User-Project':config.PROJECT_ID
}
data = {
'displayName':data_store_display_name,
'industryVertical':IndustryVertical.GENERIC,
'solutionTypes':SolutionType.SOLUTION_TYPE_SEARCH,
'contentConfig':DataStore.ContentConfig.CONTENT_REQUIRED,
'documentProcessingConfig':{
'defaultParsingConfig':{
'layoutParsingConfig':{}
}
}
}
响应 = 请求.post(url,headers=headers,json=data)
II. 从 GCS 提取文档:
创建数据存储后,我们将开始从指定的 GCS 存储桶中提取您的财务文档。此过程涉及指定 GCS 存储桶的 URI,其中存储了我们数据集的所有原始 PDF 文档。在此之前,我们还需要创建一个清单文件。这是一个 JSON 文件,它捕获了我们将要提取到 Vertex AI 搜索中的文档的所有元数据。metadata.json
下面显示了此文件中名为的示例行。
{
“id” : “1” ,
“jsonData” : “{\”company\“:\”alphabet\“,\”time_period\“:\”Q1 2021\“}” ,
“content” : {
“mimeType” : “application/pdf” ,
“uri” : “gs://vais-rag-patterns/raw_docs/alphabet-q1-2021.pdf”
}
}
启动提取所需的代码示例预览如下所示。这利用了 REST API,完整代码可在此处链接的 Git 存储库中找到。
url = f“https://discoveryengine.googleapis.com/v1/projects/ {project_id} /locations/global/collections/default_collection/dataStores/ {data_store_id} /branches/0/documents:import”
headers = {
“授权”:f“Bearer {config.ACCESS_TOKEN} ”,
“Content-Type”:“application/json”
}
data = {
“gcsSource”:{
“inputUris”:[gcs_input_uri]
}
}
response = request.post(url,headers=headers,json=data)
III. 创建文档搜索应用程序:
成功获取文档后,最后一步是创建文档搜索应用程序。此应用程序将与索引数据进行交互,提供搜索、检索和分析财务文档所需的工具和功能。
创建此应用所需的示例代码如下所示。请注意,我们应该启用企业层搜索并使用 LLM 激活高级搜索,以有效地执行文档问答。此过程利用 REST API,但也可以使用 Python SDK 完成。可以在此处找到应用程序创建的完整代码。
url = f“https://discoveryengine.googleapis.com/v1alpha/projects/ {config.PROJECT_ID} /locations/global/collections/default_collection/engines?engineId= {data_store_id} ”
标头 = {
“授权”:f“承载者{config.ACCESS_TOKEN} ”,
“内容类型”:“application/json”,
“X-Goog-User-Project”:config.PROJECT_ID
}
数据 = {
“displayName”:data_store_display_name,
“dataStoreIds”:[data_store_id],
“solutionType”:SolutionType.SOLUTION_TYPE_SEARCH,
“searchEngineConfig”:{
“searchTier”:SearchTier.SEARCH_TIER_ENTERPRISE,
“searchAddOns”:SearchAddOn.SEARCH_ADD_ON_LLM
}
}
响应 =请求.post(url,headers=headers,json=data)
为了简化上述整个流程,您可以使用此处提供的脚本,该脚本可处理数据提取和应用程序设置所涉及的所有必要步骤。通过遵循这种结构化方法,您将利用 Vertex AI Search 的强大功能将您的财务文档转换为有价值且易于访问的知识库。
RAG 自动化的架构模式
通过在 Vertex AI Search 中采集和索引原始 PDF 文档,现在可以轻松简化查询已处理文档和生成答案的过程。提供的 Python SDK 示例代码演示了如何通过之前配置的搜索应用程序查询数据存储区。完整代码可在此处参考。
客户端选项 = (
客户端选项(api_endpoint= f“ {LOCATION} -discoveryengine.googleapis.com”)
如果LOCATION != “global”
则为 None
)
客户端 = discoveryengine.SearchServiceClient(客户端选项=客户端选项)
服务配置 = 客户端.serving_config_path(
项目=config.PROJECT_ID,
位置=LOCATION,
数据存储=数据存储ID,
服务配置= “default_config”,
)
内容搜索规范 = discoveryengine.SearchRequest.ContentSearchSpec(
片段规范=discoveryengine.SearchRequest.ContentSearchSpec.SnippetSpec(
return_snippet= False
),
extractive_content_spec=discoveryengine.SearchRequest.ContentSearchSpec.ExtractiveContentSpec(
max_extractive_answer_count= 3,
max_extractive_segment_count= 3,
),
summary_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec(
summary_result_count= 5 ,
include_citations= True ,
ignore_adversarial_query= False ,
ignore_non_summary_seeking_query= False ,
),
)
请求 = discoveryengine.SearchRequest(
services_config=serving_config,
查询=search_query,
过滤器=filter_str,
页面大小= 5 ,
content_search_spec=content_search_spec,
查询扩展规范=discoveryengine.SearchRequest.QueryExpansionSpec(
条件=discoveryengine.SearchRequest.QueryExpansionSpec.Condition.AUTO,
),
拼写校正规范=discoveryengine.SearchRequest.SpellCorrectionSpec(
模式=discoveryengine.SearchRequest.SpellCorrectionSpec.Mode.AUTO
),
)
响应 = 客户端.搜索(请求)
在此基础上,我们现在可以使用 Vertex AI Search API 以各种方式轻松建立 RAG 管道。接下来,我们将研究四种常见模式,说明实现此类管道的灵活性和简易性。
在 Vertex AI Search 中构建搜索请求时,配置提取有价值信息的规范至关重要。启用片段、段和答案选项可确保全面检索相关内容。此外,激活 LLM 支持的摘要功能可生成搜索结果的简明摘要(答案),从而增强用户体验。生成的 JSON 响应将包含摘要答案以及提取的段和答案。
Vertex AI Search 采用三种不同的方法来分割和提取文本数据:
- **摘录:**搜索结果文档的简短摘录,提供内容预览,并且通常会包含突出显示。
- **提取答案:**从原始文档中直接提取逐字文本,提供简洁、上下文相关的答案。
- **提取片段:**更详细的逐字文本提取,适用于答案呈现、后处理任务以及作为大型语言模型的输入。
此外,还可以配置自动拼写校正和查询扩展的设置,提高搜索准确性并扩大潜在结果。对于我们的用例,我们忽略了片段。
模式 I:使用开箱即用 (OOB) 答案生成进行搜索
模式 I 是一个简单而常见的管道,可以通过 Vertex AI Agent Builder 控制台或Discovery Engine API来实现。此管道使用 Vertex AI Search 从我们之前已通过数据存储区和搜索应用程序设置的搜索索引中检索相关信息。索引映射到我们存储在 GCS 上的原始 PDF。该管道还使用由 LLM 提供支持的内部系统,根据检索到的搜索结果生成简明的答案。从而无需明确调用外部 LLM。只需一个 API 请求,用户就可以收到详细的答案以及支持文档的引用。这简化了检索和汇总相关信息的过程。您可以在此处的共享存储库中找到演示此管道的代码。
上图展示了由 Vertex AI Search 提供支持的这个简单的 RAG 管道。工作流程从存储在 Cloud Storage 中的原始 PDF 文档集合开始。这些文档已由 Vertex AI Search 提取和处理,后者创建了结构化索引以方便高效搜索和检索。当用户提交查询时,Vertex AI Search 会利用这些索引快速识别最相关的文档。然后,它会从这些文档中提取相关信息并向用户提供答案,同时提供表明信息来源的引文。
模式 I 的一个显著优势是其简单性和独立性,无需外部 LLM 调用,并将整个过程整合到单个 API 请求中。然而,这种简化的方法可能会限制灵活性,可能导致最终摘要中包含来自不太相关文档的无关信息。鉴于我们专注于单跳问答,其中答案来自单一来源,确保仅从最顶层检索到的结果生成答案变得至关重要。
在后续的管道迭代(模式 II)中,我们将探索在查询理解方面集成元数据,利用 Gemini 作为所选的 LLM 来增强检索性能并优化结果。此方法旨在通过关注最相关的检索信息来最大限度地减少噪音并优化总结答案。
模式 II:使用 OOB 答案生成的过滤搜索
模式 II 通过整合预检索步骤来增强搜索功能,该步骤侧重于通过过滤来理解查询。这解决了用户喜欢自然语言查询的情况,无需手动过滤或适应所需过滤器可能无法随时使用的情况。
该管道首先使用 Gemini 处理用户的自然语言查询,Gemini 执行命名实体识别 (NER) 来提取公司名称和时间段等关键信息。然后利用提取的元数据(以 JSON 格式输出)来过滤搜索结果,使其更符合用户的意图。此过程不仅可以减少噪音,还可以显著改善搜索指标。
此外,更重要的是,提取的公司名称和时间段信息应符合摄取阶段建立的格式和语法。在此实现中,元数据过滤利用了先前分配给 Vertex AI Search 中文档的公司名称和时间段标签。
因此,这种改进在模式 I 的基础上引入了检索之前的查询理解步骤,最终提高了检索结果的准确性和相关性。
如上图所示,工作流程首先由用户使用自然语言发起搜索,表达他们的信息需求,不受特定过滤器的限制。然后,查询被传递给 Gemini,后者执行命名实体识别 (NER) 以提取相关元数据,例如公司名称和时间段。提取的元数据被构造为 JSON 格式,以便于过滤,随后 Vertex AI Search 会利用这些元数据过滤文档索引,将结果缩小到与提取的公司和时间段信息相符的结果。最后,过滤后的、因此更相关的文档将呈现给用户,同时提供表明信息来源的引文。
所述管道的代码实现可在此处参考。此实现中的实体识别利用提示,采用零样本方法提取公司名称,采用几次样本方法(使用正样本和负样本)提取时间段。
给出以下 查询 ,从中提取公司名称 。公司名称可以是“Microsoft”、“Alphabet”或“ Amazon ”。如果公司名称是“LinkedIn”,则翻译为“Microsoft ” 。重要提示:提取的公司名称必须是一个单词,不能有任何换行符或标点符号或多余的空格。
给定 一个 查询, 从中提取 特定的时间段 。有效时间段应仅采用“2021 年第一季度”的格式。无效格式的示例包括:“ 2020年第二季度至 2021 年第二季度” “2020 年第二季度 - 2021 年第二季度” “2020 年第二季度,2021 年第二季度”提取的时间段应该只代表一个季度和一年,对应于现在与过去。重要提示:当查询将现在与过去进行比较时,请忽略过去的引用。例子========将“2020 年第一季度”翻译为“2020 年第一季度” 。将“2021 年第二季度与 2020 年第二季度相比有所增长”翻译为“ 2021 年第二季度” 。将“截至 2022 年 12 月 31 日的十二个月”翻译为“2022 年第四季度” 。
模式三:使用 Extractive Segments 和 Gemini Pro 生成答案的过滤搜索
之前,我们了解了在 Vertex AI Search 中检索相关上下文的三个不同粒度级别:摘要、提取片段和提取答案。在此模式(模式 III)中,我们利用从搜索结果中提取的片段,并利用它们来替换开箱即用的 (OOB) 答案生成步骤(模式 I 和 II)。当需要为生成的答案指定特定的风格、细微差别、格式、长度或结构时,这一点尤其重要。在这种情况下,我们可以提取提取的片段并将其与查询一起作为上下文明确传递给外部 LLM(如 Gemini)。我们可以灵活地以各种方式设计提示,以使答案生成更符合我们的要求。模式 III 包含这种方法。
上图所示的架构图描述了模式 III 的工作流程。在这里,用户首先提交自然语言查询,Gemini 首先对其进行处理以提取相关元数据。然后,Vertex AI Search 会使用此结构化元数据(类似于模式 I 和 II)高效地搜索文档索引并识别相关文档。从这些经过筛选的文档中提取直接回答用户查询的特定片段。在最后阶段,Gemini 会处理这些提取的片段,为用户生成综合答案,并结合引用信息来指示源文档。用户最终会收到最终答案,该答案会解决他们的查询以及对提取信息的文档的引用。涵盖此模式的代码可在此处找到。
此工作流程中用于生成答案的提示可以像下面显示的一样简单,也可以根据您的特定需求而变得更复杂、更精致。
根据 以下 上下文 ,对以下 问题提供清晰简洁的答案:上下文: {上下文}问题: {问题}
**模式 IV:**使用 Extractive Answers 和 Gemini Pro 进行过滤搜索并生成答案
在此管道迭代中,我们基本保留了模式 III 的结构,但进行了一项关键修改:我们不再利用从检索到的文档中提取的片段,而是利用提取的答案。此更改是在保留先前提示结构的情况下进行的。为了说明此更改的影响,我们将检查测试集中的一个问题,并比较从片段和答案中得出的生成答案。
下面显示了一个示例问题和来自基本事实文件的预期答案。
根据微软的财报,LinkedIn在2021年第一季度的营收增长了 多少,按固定汇率调整后的增长率是多少?
2021年第一季度 ,领英营收同比增长25 % 。按固定汇率计算,增长率为23 % 。
首先,让我们检查 Vertex AI 搜索针对示例问题返回的可提取片段。以下是前三个片段。我们可以看到,问题的答案可以从业务亮点下的片段 1 和作为解析表内容一部分的片段 2 中得出。要使用 Gemini 后检索生成最终答案,我们只需连接这些片段并将它们作为单个上下文传递即可。
萃取段 1
业务亮点
生产力与业务流程部门营收为 136 亿美元,增长
15%(以固定
汇率计算,增长 12%),具体业务亮点如下:
• Office 商业产品和云服务营收增长 14%
(以固定汇率计算,增长 10%),受 Office 365 商业版营收
增长 22%(以固定汇率计算,增长 19%)推动
• Office 消费者产品和云服务营收增长 5%
(以固定汇率计算,增长 2%),Microsoft 365 消费者订阅用户
增至 5020 万
• LinkedIn 营收增长 25%(以固定汇率计算,增长 23%)
• Dynamics 产品和云服务营收增长 26%(以
固定汇率计算,增长 22%)
,受 Dynamics 365 营收增长 45%(以固定汇率计算,增长 40%)推动
萃取段 2
财务业绩 固定汇率调节表
截至 3 月 31 日的三个月
(百万美元,每股金额除外)收入 营业收入 净收入 稀释每股
收益
2020
年
报告(GAAP
)35,021美元12,975美元 10,752美元 1.40 美元2021 年报告(GAAP)41,706美元 17,048美元 15,457美元 2.03 美元2021 年调整后(非 GAAP)41,706美元 17,048美元 14,837美元 1.95 美元同比变化百分比(GAAP)19% 31% 44% 45%同比变化百分比(非 GAAP)19% 31% 38% 39%固定汇率影响972美元 634美元 615美元 0.08 美元同比变化百分比(非 GAAP) 固定汇率影响货币16% 27% 32% 34%部门收入 固定汇率对账截至 2021 年 3 月 31 日的三个月(百万美元)生产力和业务流程智能云更多个人计算2020 年报告11,743美元 12,281美元 10,997 美元2021 年报告13,552 美元15,118美元 13,036 美元百分比变化 同比15% 23% 19%固定汇率影响366美元 367美元 239 美元百分比变化 同比 固定汇率12% 20% 16%选定产品和服务收入 固定汇率对账截至 2021 年 3 月 31 日的三个月百分比变化 同比(GAAP)固定汇率影响百分比变化 同比固定汇率Office 商业产品和云服务14% (4)% 10% Office 365 商业版22% (3)% 19% Office 消费产品和云服务5% (3)% 2% LinkedIn 25% (2)% 23% Dynamics 产品和云服务26% (4)% 22% Dynamics 365 45% (5)% 40%服务器产品和云服务26% (3)% 23% Azure 50% (4)% 46% Windows OEM 10% 0% 10% Windows 商业产品和云服务10% (3)%
7%
Xbox 内容与服务
34%
(2)%
32%
Surface
12%
(5)%
7%
不包括流量获取成本的搜索广告
17%
(3)%
14%
关于微软微软 (Nasdaq “MSFT” @microsoft) 为智能云和智能边缘时代
实现数字化转型。其使命是赋能地球上每个人和每个组织,让他们取得更大成就。
萃取段 3
智能云业务收入为 151 亿美元,增长 23%
(按固定汇率计算增长 20%),其业务亮点如下:
• 服务器产品和云服务收入增长 26%(按
固定汇率计算增长 23%),得益于 Azure 收入增长 50%(按
固定汇率计算增长 46%)。
更加个人计算业务收入为 130 亿美元,增长 19%
(按固定汇率计算增长 16%),其业务亮点如下:
• Windows OEM 收入增长 10%
• Windows 商业产品和云服务收入增长 10%
(按固定汇率计算增长 7%)
• Xbox 内容和服务收入增长 34%(按固定汇率计算增长 32%)
• 不包括流量获取成本的搜索广告收入增长 17%(按固定汇率计算增长 14%)
• Surface 收入增长 12%(按固定汇率计算增长 7%)微软在 2021 财年第三季度
以股票回购和股息的形式向股东返还 100 亿美元,较上年同期增长 1%。 2020 财年第三季度。业务展望Microsoft 将在其收益电话会议和网络广播中就本季度收益公告提供前瞻性指引。季度亮点、产品发布和增强功能Microsoft 每个季度都会推出数百种产品,无论是新版本、服务还是现有产品和服务的增强功能。这些发布是多年来大量研发投资的结果,旨在帮助客户提高工作效率和安全性,并在云端和边缘提供差异化价值。以下是本季度的主要产品发布和其他亮点,按产品类别组织,以帮助说明我们如何在扩大市场机会的同时加速整个业务的创新。应对 COVID-19在 Microsoft,我们的重点仍然是确保员工的安全,努力保护我们运营所在社区的健康和福祉,并为我们的客户和合作伙伴提供技术和资源,帮助他们在远程工作时发挥最佳工作状态。有关 Microsoft 的 COVID-19 响应的更多信息,请单击此处。环境、社会和治理 (ESG)为了更好地履行 Microsoft 的使命,我们将环境、社会和治理 (ESG) 工作重点放在能够产生最积极影响的领域。要了解有关我们的最新计划和优先事项的更多信息,
请访问我们的投资者关系 ESG 网站。
以下是使用前三个提取片段生成的答案。如你所见,与我们预期的答案相比,答案更加详细和冗长。
LinkedIn 2021 年第一 季度收入增长:
根据 微软的财报 ,LinkedIn 2021 年第一季度的收入与 2020 年同期相比增长了25 % 。按固定汇率调整后,增长率为23 % 。这意味着收入的增长并非完全是由于汇率波动。以下是信息细分:*报告的收入增长:25 % *固定汇率增长率:23 %此信息可在所提供上下文的“财务业绩”和“选定产品和服务收入固定汇率对账”部分中找到。
现在,让我们看一下 Vertex AI 搜索返回的可提取答案,这些答案可作为搜索响应的一部分提供。在之前发送的搜索请求中,我们将搜索规范设置为返回最相关文档的前三个匹配可提取答案。您可以在下面看到返回的可提取答案。它们类似于从最匹配的文档(Microsoft Q1 2021)派生的文本段跨度,但更简洁、更短。
有趣的是,我们可以看到回答问题所需的信息仅包含在最后(第三个)提取答案中。为了生成最终答案,我们将所有三个提取答案连接成一个上下文,将其与原始问题一起输入 Gemini,然后生成答案。
提取答案 1
微软云助力第三季度业绩 华盛顿州雷德蒙德 - 2021 年 4 月 27 日
-微软公司今天宣布了截至
2021 年 3 月 31 日的季度业绩,与上一财年同期相比:
• 收入为 417 亿美元,增长 19% • 营业收入为 170 亿美元
,增长 31% • 净收入为 155 亿美元(GAAP)和 148
亿美元(非 GAAP),分别增长 44% 和 38% •
每股摊薄收益为 2.03 美元(GAAP)和 1.95 美元(非 GAAP),
分别增长 45% 和 39% • GAAP 结果包括 6.2 亿美元的净所得税收益,
详情见下文非 GAAP 定义部分 “疫情爆发一年多以来
,数字化采用曲线并没有放缓。它们正在加速,而这仅仅是个开始,”首席执行官
萨蒂亚·纳德拉 (Satya Nadella) 表示
微软。“我们正在构建面向未来十年的云
,扩大我们的潜在市场,并在
技术堆栈的每一层进行创新,以帮助我们的客户实现弹性和转型。”
“微软云凭借其端到端解决方案,继续为
我们的客户提供极具吸引力的价值,创造了 177 亿美元的商业
云收入,同比增长 33%,”
微软执行副总裁兼首席财务官艾米·胡德 (Amy Hood) 表示。
提取答案 2
智能云业务收入为 151 亿美元,增长 23%
(按固定汇率计算增长 20%),其业务亮点如下:
• 服务器产品及云服务收入增长 26%(按
固定汇率计算增长 23%),得益于 Azure 收入增长 50%(按
固定汇率计算增长 46%)。 更加个人计算业务收入为 130 亿美元
,增长 19%(按固定汇率计算增长 16%),其
业务亮点如下: • Windows OEM 收入增长 10% • Windows 商业
产品及云服务收入增长 10%(按固定汇率计算增长 7%)
• Xbox 内容及服务收入增长 34%(按固定汇率计算增长 32%)
• 不包括流量获取成本的搜索广告收入增长
17%(按固定汇率计算增长 14%) • Surface 收入增长 12%(按固定汇率计算增长 7% ) 微软在 2021 财年第三季度
以股票回购和股息的形式向股东返还 100 亿美元,较上年同期增长 1%。 2020财年第三季度。业务展望 微软将在其收益电话会议和网络广播中就本季度收益公告提供前瞻性指引。
提取答案 3
财务业绩 固定汇率对账 截至 3 月 31 日的三个月
(百万美元,每股金额除外) 收入 营业收入
净收入 稀释每股收益 2020 年报告(GAAP) 35021 美元 12975
美元 10752 美元 1.40 美元 2021 年报告(GAAP) 41706 美元 17048 美元 15457 美元 2.03 美元 2021 年
调整后(非 GAAP) 41706 美元 17048 美元 14837 美元 1.95 美元 同比变化百分比(GAAP)
19% 31% 44% 45% 同比变化百分比(非 GAAP) 19% 31% 38% 39% 固定
汇率影响 972 美元 634 美元 615 美元 0.08 美元 同比变化百分比(非 GAAP)
固定汇率 16% 27% 32% 34% 部门收入 固定汇率
调节表 截至 2021 年 3 月 31 日的三个月 (百万美元) 生产力
和业务流程 智能云 更多个人计算 2020 年
报告 11,743 美元 12,281 美元 10,997 美元 2021 年报告 13,552 美元 15,118 美元 13,036 美元
百分比变化 同比 15% 23% 19% 固定汇率影响 366 美元 367 美元 239 美元
百分比变化 同比 固定汇率 12% 20% 16% 选定产品和
服务收入 固定汇率调节表 截至 2021 年 3 月 31 日的三个月
百分比变化 同比(GAAP) 固定汇率影响
百分比变化 同比 固定汇率 Office 商业产品和
云服务 14% (4)% 10% Office 365 商业版 22% (3)% 19% Office
消费产品和云服务 5% (3)% 2% LinkedIn 25% (2)% 23%
Dynamics 产品和云服务 26% (4)% 22% Dynamics 365 45% (5)%
40% 服务器产品和云服务 26% (3)% 23% Azure 50% (4)% 46%
Windows OEM 10% 0% 10% Windows 商业产品和云服务 10%
(3)% 7% Xbox 内容和服务 34% (2)% 32% Surface 12% (5)% 7%
不包括流量获取成本的搜索广告 17% (3)% 14% 关于微软
微软(纳斯达克股票代码为“MSFT”)为
智能云和智能边缘时代实现数字化转型。
我们可以看到,Gemini 生成的最终答案比我们之前使用提取片段生成的答案更短、更简洁。
根据 提供的背景 , 根据微软的财报,LinkedIn在2021 年第一季度的收入增长了25 %。按固定汇率调整后,增长率为23 % 。
替代模式
- 除了上面讨论的标准工作流程之外,还有几种高级技术可以显著增强 PDF 文档的答案生成能力。其中一种方法是查询扩展,它使用相关术语或同义词扩大初始搜索查询的范围。只需将参数设置为,即可使用 Vertex AI Search 轻松启用此功能
AUTO
。或者,可以使用 LLM 设计 DIY 预检索步骤来生成查询变体,然后并行调用 Vertex AI Search。查询扩展是提高问答系统中信息检索质量的关键技术。它不仅通过生成多样化的查询变体来提高搜索相关性,而且在确保排名靠前的文档的代表性方面也发挥着关键作用,这对于生成准确的答案至关重要 - 文档中的关键字提升是提高相关性的另一种强大技术。Vertex AI 搜索开箱即用地支持此功能。通过优先考虑某些术语,可以提高检索结果的相关性。
- 此外,我们可以使用搜索调整来提高检索性能。这种方法对于一般语言模型无法很好解决的行业特定或公司特定查询特别有用。Vertex AI Search 开箱即用地支持搜索调整。
- 通过使用不同的文档解析器为 PDF 文档选择适当的预处理类型,也可以提高检索相关性。Vertex AI Search 主要支持三种类型:布局解析器、OCR 解析器和数字解析器。对于我们的用例,我们使用了布局解析器。如果您计划将 Vertex AI Search 用于 RAG,建议将其用于 PDF 文档。或者,我们可以采用其他复杂的方法,例如使用Markdown 格式的Document AI从文档中提取表格。然后,我们可以将 PDF 连同提取的表格一起转换为文本格式,并将其提取到 Vertex AI Search 中,而不是将它们视为 PDF。
- 最后,对于需要自定义嵌入信息检索的企业,Vertex AI 提供了强大的向量搜索功能。Vertex AI 的向量搜索可以扩展以容纳数十亿个向量并在几毫秒内识别最近邻居。向量搜索(以前称为匹配引擎)类似于 Vertex AI 搜索,是 Agent Builder 的一部分。将 Agent Builder 视为这两个搜索选项的封装 - 我们在本文中广泛介绍的都是关于 Vertex AI 搜索的。另一方面,Vertex AI 向量搜索是一个向量存储,具有其他支持功能,您可以使用它来开发替代的完全可定制的 DIY RAG 管道。如果您希望从分块策略、嵌入模型选择、语义相似性检索的评分算法选择等所有内容都具有完全可定制性,那么这是一个很好的选择。Agent Builder 还包括独立 API,例如检查基础、基础生成和排名 API。这些可用于与向量搜索结合构建自定义 RAG 管道。
评估 RAG 管道
搜索手术刀 (图片由 Imagen 2 生成)
接下来,让我们探索如何评估检索性能和生成的答案质量。我们将首先试验适合评估检索系统的各种指标,然后试验用于评估 RAG 管道中答案质量的指标。这个评估过程将帮助我们改进和优化我们的 RAG 系统,并了解哪种方法更有效。
一、评估检索
a) 精度@K
精确度@K 是量化前 K 个检索文档中相关结果比例的指标。在初始结果的质量优先于信息详尽检索的情况下,此指标尤为重要。一个典型的例子是网络搜索引擎,用户主要关注搜索结果的第一页。
假设有人在 YouTube 上请求前 5 个关于“如何制作纸飞机”的教学视频。如果这五个视频中有三个成功提供了预期的指导,则准确率 @5 就是 5 分之 3,即 60%。此指标提供了一种量化初始搜索结果相关性的方法。
在我们的用例(单跳问答)中,我们的目标是为每个查询获取一个相关项目(文档)。因此,计算精度 @ K=1 是合乎逻辑的。在这种情况下,结果是二进制的:我们要么将所需文档定位在 Vertex AI Search 返回的检索到的项目的顶部,要么不定位。
b)回忆@K
在信息检索领域,召回率 @ K 指标用于衡量在搜索结果中前 K个相关文档的比例。这与精确度不同,召回率优先考虑系统识别所有潜在相关文档的能力,但仅限于前 K 个文档。这一指标在法律或学术研究等领域至关重要,因为遗漏关键文档可能会导致严重后果。
举例来说,假设有 10 个与纸飞机构造相关的视频,而用户感兴趣的是前 5 个结果。如果这 10 个视频中有 4 个出现在前 5 个结果中,那么 @5 的召回率就是 4/10,即 40%。这个百分比表明搜索系统在捕获前 K 个结果中的所有可能相关结果方面的有效性。
考虑到我们用例的独特背景,假设只有一个相关文档,计算召回率 @ K=1 是合乎逻辑的。与准确率类似,这将产生一个二进制结果,表明特定项目是否被检索到。
**注意:**对于我们给出的用例,它是单跳问答,这意味着答案始终只映射到一个文档,而不像多跳问答那样可以从多个文档中得出答案。因此,检索 @ k 和精度 @ k 都设置为 1。对于多跳场景,更高的值(例如 k @ 3 和 k @ 5)可能更有用且更有益。
在我们的用例中,对于没有过滤器的标准搜索,k=1 时的准确率和召回率均为 51%(模式 I)。但是,当我们使用命名实体识别 (NER) 并应用过滤器时,这些指标会增加到 90%(模式 II)。
c)MRR(平均倒数排名)
平均倒数排名 (MRR) 是一种统计数据,用于衡量一系列答案中第一个正确答案的平均倒数排名。当第一个相关文档的位置比是否存在其他相关文档更重要时,MRR 尤其有用。此指标通常用于问答系统和其他搜索环境中,在这些环境中,用户可能会对遇到的第一个正确答案感到满意。
想象一下,您正在使用搜索引擎寻找制作澳洲坚果饼干的完美食谱。如果您点击的第一个食谱正是您所需要的,那么搜索引擎的平均倒数排名 (MRR) 为 1,这表明它立即提供了最佳结果。但是,如果理想的食谱不是您查看的第一个食谱,而是您认为有吸引力的第三个食谱,那么该搜索的 MRR 会下降到 1/3。
MRR 的公式为:
其中 𝑄 是查询的总数,rᵢ是**第 i 个查询的第一个相关答案的排名位置。
对于我们的用例,使用模式 I(无过滤器的文档搜索)时,MRR 等于 64%。但是,使用模式 II,当我们应用过滤器时,这个数字会增加到 91%。
d) DCG (折现累计收益)
DCG 根据文档在结果列表中的位置来衡量文档的有用性或“增益”。这里的假设是,搜索结果中较早出现的文档比较晚出现的文档对用户更相关。“折扣”部分是指将每个文档的相关性得分降低与其在结果列表中的位置成比例的对数因子。这反映了用户在列表中向下移动时检查每个后续结果的可能性降低。公式如下:
其中p是排名位置,relᵢ 是结果在位置 𝑖 的相关性得分,log₂(𝑖+1) 是 (𝑖+1) 以 2 为底的对数,用作折扣因子。要计算*relᵢ,*我们只需对相关文档使用二进制相关性 1,对不相关文档使用二进制相关性 0。
与 MRR 相比,DCG 提供了更全面的搜索质量视图,因为它考虑了多个结果的相关性,而不仅仅是顶部结果。MRR 和 DCG 提供了不同的搜索性能视角,MRR 侧重于顶部结果的准确性,而 DCG 则考虑了整个结果列表的相关性。通过监控这两个指标,您可以详细了解检索策略的有效性。
e)NDCG(标准化折扣累积收益)
DCG 是衡量排名列表总体相关性的指标,而 NDCG 是 DCG 的标准化版本,可用于跨不同列表进行比较。NDCG 通常比 DCG 更受欢迎,因为它为评估排名系统提供了更标准化和可解释的指标。NDCG 的公式如下:
在哪里:
- DCG𝑝 是使用原始公式得出的位置 𝑝 处的 DCG 值。
- IDCG𝑝 是理想 DCG,如果所有结果都按相关性完美排序,则它是位置 𝑝 处的最大可能 DCG 值。IDCG𝑝 的公式如下所示:
在这里,我们按相关性得分降序排列。
对于我们的用例,我们测量模式 I 和 II 的 NDCG。对于模式 I,平均 NDCG 约为 64%。使用过滤器后,这一数字增加到 91% 左右。
f)平均精度(AP)
AP 衡量系统(如搜索引擎)对相关项目的排名情况。它既考虑了找到的相关项目数量,也考虑了这些项目的排名。假设您请求了前 5 个关于如何制作纸飞机的教学视频,您获取的视频顺序如下:
- 视频 A:完美说明(相关)
- 视频 B:完全不相关(不相关)
- 视频 C:合理说明(相关)
- 视频 D:另一个不相关的视频(不相关)
- 视频 E:精彩说明(相关)
为了计算 AP,我们将查看每个相关视频出现的点的精度:
- 视频 A 之后:1/1 = 100%
- 视频 C 之后:2/3 = 66.7%
- 视频 E 之后:3/5 = 60%
现在我们计算这些精度值的平均值:(100% + 66.7% + 60%)/ 3 = 75.6%
因此,此搜索结果的 AP 为 75.6%。这意味着,平均而言,您在搜索的早期就获得了相关结果。虽然 Precision @ 5 仅关注前 5 个结果的相关性(在本例中为 60%),但 AP 会考虑相关视频的查找顺序,从而为相关视频提供更高的排名。这可以更细致地反映搜索引擎在为您查找相关结果方面的表现。计算 AP 的公式如下:
在哪里
- H是相关文档的位置集合。
- ∣𝐻∣ 是相关文献的数量。
- 𝑃(𝑖) 是位置 𝑖 的精度。位置 𝑖 处相关文档的P ( i ) 为 1/ i。
g)平均精度(MAP)
MAP 扩展了平均准确率 (AP) 的概念,以评估多个搜索或查询。AP 衡量的是单个搜索对相关项目的排名情况,而 MAP 则对多个搜索的 AP 得分进行平均,从而为系统在多个查询中提供整体性能指标。这就像在多个测试中获得平均成绩,而不仅仅是一次测试。
虽然 MAP 因其能够处理每个查询包含多个相关文档的复杂场景而受到青睐,但当每个查询只有一个相关结果时,它会经历一个有趣的简化。在处理单个相关文档查询时,MAP 基本上可以归结为以下内容:
- **平均精度变成精度:**每个查询的 AP 只是在单个相关文档出现的排名上实现的精度。
- **精度等于倒数排名:**由于只有一个相关文档,精度是其排名的倒数(例如,如果文档排名为 3,精度就是 1/3)。这正是 MRR 计算中使用的值。
- MAP 镜像 MRR: MAP 是所有查询中这些 AP 值的平均值,最终会平均相关文档的倒数排名。这正是 MRR 所做的。鉴于这种重叠,使用 MAP 不会提供超出 MRR 在我们的特定设置中已经提供的额外见解。MAP 通常在涉及每个查询的多个相关文档(多跳问答)的场景中更具参考价值,它可以提供所有相关文档在不同排名中的检索效果的细致视图。
在我们对模式 I 和 II 的实验中,MAP 基本上等于 MRR。模式 I 的 MAP 为 64%,模式 II 的 MAP 增加到约 91%。
复制上述评估所需的所有支持代码都可以在这里找到。
评估答案
在下一阶段,我们将重点评估 RAG 管道的答案生成组件。鉴于每个问题都有真实答案,我们的目标是评估生成的答案的质量,确保它们既准确又在语义上与测试集中的预期响应相似。
为了实现这一点,我们可以采用两个不同的指标。第一个指标利用余弦相似度(一种从 得出的度量)来量化语义相似度sklearn.metrics.pairwise
。第二个指标利用 LLM 作为评判者的能力。通过向 LLM 呈现生成的答案和人工生成的答案,我们可以评估模型的输出与人类期望的一致程度。这种方法使我们能够评估生成的答案的事实准确性和整体连贯性,确保它们与人工编写的答案没有区别。
a)语义相似性
该指标衡量生成答案和预期答案的向量表示之间的角度余弦。它指的是对生成的响应和基本事实(预期答案)之间的语义相似性的评估。该评估基于基本事实和答案,得出的值范围从 0 到 1。分数越高,表示生成的响应和基本事实之间的一致性越好。
预期答案和生成的答案均使用文本嵌入模型进行编码。text-embedding-003.
此模型可通过 Vertex AI API 获得。您可以在此处找到语义相似度的代码实现。
b) 事实正确性
为了评估我们之前的 RAG 管道中生成的答案的准确性,我们利用 Gemini 进行比较。问题、预期答案(基本事实)和生成的答案都会传递给 Gemini。提示模板会指导 Gemini 将生成的答案分类为“正确”(与预期答案完全一致)、“部分正确”(包含一些准确信息但不完整或部分不正确)或“不正确”(与预期答案不一致)。这种分类允许对答案质量进行细粒度评估,确定答案生成模型可能需要改进的领域。此验证过程的实施细节可在此处找到。
给定 问题、预期答案和生成的答案(如下所示),比较答案并将它们分为三个类别 之一 - `正确 ` 、 ` 部分 正确` 或 `不正确` 。如果答案部分正确或不正确,请提供理由。输出应该是两个东西-作为Python字典的类和理由。对于类,它应该只有一个词(即预期类),对于理由,简洁地提供理由,尤其是只关注数字和事实。不要关注预期答案和预测答案之间的语义。重要提示:只比较数字和事实。如果单位不同,请在比较之前对其进行标准化。例如,10亿= 10亿。问题:{ question }预期答案: { expected_ans } xa预测答案:{ predicted_ans }将预测答案与预期答案进行比较。确定预测答案是否在事实上正确并满足给定的问题。请以以下格式提供您的回复: { format_instructions }
下图显示了总体答案准确率,比较了我们之前试验过的所有四种模式(RAG 管道)。为了计算准确率,我们为完全正确的答案分配 1.0 分,为部分正确的答案分配 0.5 分,为根据 LLM 事实正确性输出错误分类的答案分配 0 分。该图显示,模式 IV 利用外部 LLM 传递的过滤搜索使用提取方法生成答案,其准确率接近 70%,优于所有其他方法。
我们还可以细分四种不同方法(管道)中的类的分布,以更好地了解改进如何随着增强而逐渐发生。
下面的箱线图显示了我们之前创建的四个不同的文档问答 RAG 流程中不同类别(正确、部分正确、不正确)的语义相似性得分分布。x 轴表示不同的类别,而 y 轴表示语义相似性得分,范围从 0(无相似性)到 1(完全相似)。这些箱线图显示每个类别中语义相似性得分的中位数、四分位数和范围。总体而言,该图以简洁而翔实的视觉方式展示了各种问答方法在语义相似性方面的表现。
语义相似度得分按类别分布
分布显示出不同的模式:
- **OOB(模式 I):**显示所有类别的分数范围很广,部分正确答案的集中度较高。这表明,开箱即用 (OOB) 方法难以在我们的测试集上始终如一地产生准确的答案。
- **OOB + 过滤器(模式 II):**与 O OB 方法相比,该方法有明显的改进,特别是在减少错误答案方面。分布更倾向于更高的相似度分数,表明应用过滤器后准确率有所提高。对于错误类别的一个有趣观察是,模式 II 的语义相似度方差下降,集中在 0.5 到 0.6 左右,而模式 II 的语义相似度方差为 1。这与模式 I 相比有所降低,模式 I 的语义相似度分数范围更广,从 0.5 到 1。
- **提取片段(模式 III):**与前两种方法相比,该方法进一步改进,正确答案和部分正确答案的比例更高。这表明,从上下文中提取相关片段是一种比单纯依赖 OOB 模型或基本过滤更有效的策略。
- **提取答案(模式 IV):**总体表现最佳,正确答案集中度最高,错误答案最少。这表明直接从上下文中提取完整答案可获得语义上最相似、最准确的答案。
到目前为止,我们已经讨论了如何评估检索和答案生成,即 RAG 流程的两个主要阶段。对于检索,我们专注于评估检索到的文档的相关性。这可以进一步扩展到评估页面或检索到的上下文的相关性。但是,您需要确保拥有这方面的实际信息。
对于答案质量,我们还可以使用其他开源替代框架,例如 Ragas,或者在适用的情况下利用Vertex AI 的快速评估 API。快速评估服务允许您通过多个指标评估您的 LLM(逐点和成对)。您可以提供推理时间输入、LLM 响应和其他参数,该服务将返回特定于评估任务的指标。
结论
在本指南中,我们探讨了如何使用 Vertex AI Search 在金融领域创建企业级 RAG 管道。我们详细介绍了金融数据集的提取和索引,并利用这些索引通过各种方法执行搜索。我们访问了 Vertex AI Search 提供的不同上下文类型,并创建了四个不同的 RAG 管道以供比较。我们还研究了替代管道配置。
然后,我们评估了检索性能指标和答案质量评估技术。通过比较结果,我们获得了有关不同方法有效性的宝贵见解。
我们的主要发现是,Vertex AI Search 提供了一套全面的功能,可用于构建标准和完全可定制的 RAG 解决方案。该平台显著简化了任何选定领域内的信息检索和问答任务。在未来的文章中,我们将探索涉及 Vertex AI 未开发功能的其他模式。
,模式 II 的语义相似度方差下降,集中在 0.5 到 0.6 左右,而模式 II 的语义相似度方差为 1。这与模式 I 相比有所降低,模式 I 的语义相似度分数范围更广,从 0.5 到 1。
3. **提取片段(模式 III):**与前两种方法相比,该方法进一步改进,正确答案和部分正确答案的比例更高。这表明,从上下文中提取相关片段是一种比单纯依赖 OOB 模型或基本过滤更有效的策略。
4. **提取答案(模式 IV):**总体表现最佳,正确答案集中度最高,错误答案最少。这表明直接从上下文中提取完整答案可获得语义上最相似、最准确的答案。
到目前为止,我们已经讨论了如何评估检索和答案生成,即 RAG 流程的两个主要阶段。对于检索,我们专注于评估检索到的文档的相关性。这可以进一步扩展到评估页面或检索到的上下文的相关性。但是,您需要确保拥有这方面的实际信息。
对于答案质量,我们还可以使用其他开源替代框架,例如 Ragas,或者在适用的情况下利用Vertex AI 的快速评估 API。快速评估服务允许您通过多个指标评估您的 LLM(逐点和成对)。您可以提供推理时间输入、LLM 响应和其他参数,该服务将返回特定于评估任务的指标。
结论
在本指南中,我们探讨了如何使用 Vertex AI Search 在金融领域创建企业级 RAG 管道。我们详细介绍了金融数据集的提取和索引,并利用这些索引通过各种方法执行搜索。我们访问了 Vertex AI Search 提供的不同上下文类型,并创建了四个不同的 RAG 管道以供比较。我们还研究了替代管道配置。
然后,我们评估了检索性能指标和答案质量评估技术。通过比较结果,我们获得了有关不同方法有效性的宝贵见解。
我们的主要发现是,Vertex AI Search 提供了一套全面的功能,可用于构建标准和完全可定制的 RAG 解决方案。该平台显著简化了任何选定领域内的信息检索和问答任务。在未来的文章中,我们将探索涉及 Vertex AI 未开发功能的其他模式。
作为建议,为了充分理解本指南的内容,请设置共享代码存储库。按照我们工作环境中的说明并复制实验和结果。这样,您可以轻松地训练自己以适应您的用例并可能扩展它!
博客原文:专业人工智能技术社区