你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
检索扩充生成(RAG)开发和试验的第一阶段是准备阶段。 在此阶段,为解决方案定义业务域。 定义域后,将收集文档和多媒体内容、执行内容分析,并收集与域相关的示例问题。 你并行执行这些步骤,因为它们是相互关联的。 例如,内容分析可帮助你确定应收集的测试文档、媒体文件和测试查询。 您提出的问题必须由文档和多媒体中的内容回答,内容必须回答相关问题。
本文是系列文章的一部分。 阅读简介。
确定解决方案域
此过程的第一步是明确定义解决方案或用例的业务要求。 这些要求可帮助你确定解决方案应回答的问题类型,以及哪些源数据或文档有助于回答这些问题。 在后期阶段,解决方案领域有助于指导嵌入模型策略。
分析内容
内容分析的目标是收集有关内容集合的足够信息,以帮助你了解:
内容的不同分类。 例如,你可能具有产品规格、季度报告、汽车保险合同、健康保险合同、培训视频或说明性录音。
不同类型的内容和格式。 例如,你可能具有 PDF、Markdown 文件、HTML 文件、DOCX 文件、MP4 视频、MP3 音频文件、JPEG 图像或 PowerPoint 演示文稿。
安全约束。 例如,可能需要身份验证和授权才能访问内容,具体取决于内容是否公开可用。
内容的结构和特征。 例如,文档长度可能会有所不同,视频的持续时间和分辨率可能不同,音频文件可能包含语音或背景音乐,或者内容可能有主题中断、上下文相关图像或表格数据。
以下部分介绍了此信息如何帮助你选择加载和分块策略。
了解内容分类
请务必了解不同的内容分类,以帮助确定所需的测试项目数。 分析的这一部分应识别高级分类,如保险或财务。 它还应识别子分类,例如医疗保险文档、汽车保险文档、产品演示视频或客户服务录音。 确定这些子分类具有不同的结构、格式还是内容特征。
目标是了解你拥有的所有不同内容变体。 你不希望在试验中过度代表或低估特定内容分类。
内容类型和格式
了解集合中的不同文件格式时,有助于确定测试内容的数量和细分。 例如,如果有季度报表的 PDF 和 Open XML 文档类型,则需要针对每种格式测试内容。 如果还包含相同内容的视频演示文稿和音频录制,请在测试中包含它们。 了解内容类型时,可以更好地了解加载和处理内容的技术要求。 技术要求包括可以处理文件格式、音频和视频内容的听录服务以及用于图像分析的计算机视觉模型的特定库。
安全约束
你需要了解安全约束,以确定加载和处理策略。 例如,确定某些或全部内容是否需要身份验证、授权或网络可见性至关重要。 如果内容位于安全外围内,请确保代码可以访问它,或实现一个进程,以安全地将内容复制到处理代码可以访问的位置。
文档有时引用或嵌入对上下文非常重要的图像、视频或音频。 该媒体也可能受到与主文档本身类似的访问控制。 如果媒体需要身份验证或网络链接,则必须确保代码能够访问媒体,或者已经准备好访问和复制内容的流程。 此外,在处理可能包含个人数据或敏感对话的音频和视频内容时,请考虑隐私和合规性要求。
如果工作负荷要求不同的用户仅有权访问不同的内容或内容段,请确保了解如何在分块解决方案中保留这些访问权限。
内容结构和特征
你需要了解内容的结构和特征,包括布局、格式、持续时间以及所包含的信息类型。 此理解可帮助你做出以下决定:
内容是否需要预处理来清理噪音、提取媒体、转录音频、从视频中提取帧、重新设置内容或批注项目以忽略
您是想要忽略还是排除部分内容
哪些内容部分是您要捕获和处理的
如何对内容进行分块或分段
如何处理图像、表格、图表、视频剪辑、音频段和其他嵌入式媒体
以下部分列出了可用于帮助你做出其中一些决定的分类问题。
确定可以忽略的项
某些结构元素可能不会向文档添加含义,在分块时可以安全地忽略。 在某些情况下,这些元素可以添加有价值的上下文,并改进查询与索引的相关性,但并非全部。 询问以下有关常见文档功能的问题,以查看它们是添加相关性还是应忽略。
文档是否包含目录?
是否有页眉或页脚?
是否有版权或免责声明?
是否有脚注或尾注?
是否有水印?
是否有批注或注释?
确定文档预处理要求
以下有关文档结构的问题可以帮助你决定是否需要预处理文档,以便更轻松地处理文档。 它们还有助于选择分块策略。
是否存在多列数据或多列段落? 你不希望以与单列内容相同的方式解析多列内容。
文档的结构如何? 例如,HTML 文件有时会使用表格,这些表格需要与嵌入式的表格数据区分开。
有多少段落? 段落有多长? 段落长度是否相似?
文档中有哪些语言、语言变体或方言?
文档是否包含 Unicode 字符?
数字的格式如何? 它们是否包含逗号或小数? 它们是否一致?
文档的哪些部分是统一的,哪些部分不是?
是否有可以提取语义含义的标头结构?
是否有项目符号或有意义的缩进?
确定图像预处理要求
若要确定图像预处理要求,请了解图像的属性,例如图像是否有足够的分辨率进行处理,以及图像是否包含所有必需的信息。 以下问题可以帮助你确定要求。
图像的分辨率是多少?
图像中是否嵌入了文本?
有没有不增加价值的抽象图像? 例如,图标可能不会添加任何语义值。 为图标添加说明可能会对解决方案造成不利影响,因为该图标通常与文档的内容无关。
图像与周围文本之间的关系是什么? 请确定图像是具有独立内容,还是在传递给语言模型时需要使用其周围的上下文。 标题是周围文本的一个示例,该文本可能具有图像中不包含的有价值的上下文。
是否有丰富的文本描述,比如对图像的无障碍说明?
确定视频和音频预处理要求
若要确定视频和音频处理要求,请了解多媒体内容、它是否包含有价值的信息以及如何有效地提取这些信息。 以下问题可以帮助你确定要求。
媒体文件的质量特征是什么? 这些特征包括视频分辨率和帧速率、音频质量和采样率,以及文件压缩和编解码器类型。
媒体文件包含哪些类型的内容? 内容类型包括口述演示文稿、讲座、采访、音乐、声音效果和屏幕录制。
视频文件是否包含对理解非常重要的视觉信息? 信息的示例包括演示文稿幻灯片、演示、图表、图形、可视化效果、文本覆盖和题注。
是否有可用于音频和视频内容的脚本或隐藏式字幕?
音频和视频内容中讲了哪些语言?
媒体文件是否具有有助于分段的元数据或章节?
是否有背景噪音或音乐可能会干扰听录?
多媒体内容与伴随文本之间的关系是什么? 确定媒体是具有独立内容,还是需要利用周围文档中的上下文来处理媒体。
确定您的表格、图表和其他媒介处理需求
若要确定如何处理封装在表、图表和其他媒体中的信息,请了解其特征。 以下问题可以帮助你了解你的表格、图表及其他媒体处理需要。
文档是否包含包含数字的图表?
文档是否包含表?
表格是复杂的(例如嵌套表),还是非复杂的?
是否有表格标题?
这些表格的长度是多少? 长表可能需要在区块中重复标头。
是否有其他类型的嵌入式媒体,如视频或音频?
文档中是否有数学公式或科学表示法?
收集具有代表性的测试内容
在此步骤中,收集最能代表您解决方案中使用内容的材料。 内容必须解决定义的用例,并回答在问题收集并行阶段中收集的问题。 内容包括文档、图像、视频、音频文件以及属于内容集合的任何其他媒体类型。
注意事项
评估潜在代表性测试内容时,请考虑以下方面:
相关性: 内容必须满足聊天应用程序的业务要求。 例如,如果构建可帮助客户执行银行作的聊天机器人,则内容必须满足该要求。 内容应包括有关打开或关闭银行账户的文档、有关银行程序的说明视频或客户服务交互的录音。 内容必须能够解决你在并行步骤中收集的测试问题。 如果内容没有与问题相关的信息,则解决方案无法生成有效的响应。
表示法: 内容应表示解决方案使用的不同类型的内容。 例如,汽车保险文档包含的信息与健康保险或人寿保险文档不同,视频演示可能传达的信息与书面程序不同。 假设用例需要解决方案才能跨多种媒体格式支持这三种保险类型,但你只有汽车保险文档。 你的解决方案可能在健康和人寿保险运营中表现不佳,或者可能未充分利用多媒体内容中丰富的信息。 每个变体和格式应至少有两段内容。
物理内容质量: 内容需要采用可用形状。 扫描的图像可能不会让你提取可用信息,质量不佳的录音可能无法准确转录,低分辨率的视频可能无法提供清晰的视觉信息。
内容质量: 内容必须高质量。 文档不应包含拼写错误或语法错误,音频应清晰且可听到,视频应具有足够的分辨率和照明。 如果向语言模型和其他 AI 服务提供质量不佳的内容,则语言模型和其他 AI 服务性能不佳。
要成功收集测试内容,您应在质量上确信这些测试内容在所有媒体类型中能够完全准确地表示您的特定领域。
测试内容指南
选择真实内容而不是合成内容。 真实内容必须完成清理过程才能删除个人数据,这对于可能包含语音、人脸或其他识别信息的音频和视频内容尤其重要。
请考虑选择性地使用综合数据扩充内容。 此过程有助于确保内容涵盖各种方案,包括预测的未来方案。 如果必须使用合成数据,请尽最大努力使其尽可能类似于真实内容,包括真实的音频质量、视频特征和视觉元素。
确保内容可以解决你收集的问题。 确保视频内容具有清晰的视觉对象,音频内容具有清晰的语音,多媒体内容提供补充或补充基于文本的内容的信息。
对于每个内容变体和格式,至少有两段内容。 例如,如果你有教学视频,请包含具有不同演示者、环境或口语的视频。
使用语言模型、听录服务、计算机视觉模型和其他工具来帮助评估所有媒体类型中内容的质量。
收集测试查询
在这一步中,要收集测试查询,用来评估分块、搜索解决方案和提示工程。 收集代表性内容时执行此步骤。 收集查询并确定代表性内容如何同时处理这些查询。 通过同时提供示例查询和解决这些查询的示例内容的各个部分,可以在试验不同的策略和方法时评估 RAG 解决方案的每个阶段。
收集测试查询输出
此阶段的输出包括 来自收集代表性测试查询 步骤和 收集代表性测试内容步骤的内容 。 输出是包含以下数据的集合:
查询:问题,表示合法用户的潜在提示。
上下文: 处理查询的文档中实际文本的集合。 对于每一段上下文,都应包括页面和实际文本。
答案: 对查询的有效响应。 响应可以是可以直接来自文档的内容,也可以是根据一个或多个上下文重新表述。
创建综合查询
对于特定领域的主题专家(SME)来说,为用例整理出一个全面的问题列表常常是具有挑战性的任务。 战胜这一挑战的办法之一是根据收集到的代表性测试文档来生成合成问题。 以下步骤介绍了从代表性文件生成综合问题的实际方法:
对文档进行分块。 将文档分解成区块。 不要对整体解决方案使用分块策略。 使用此一次性步骤生成综合查询。 如果文档数量合理,则可以手动执行分块。
为每个区块生成查询。 对于每个区块,请手动或使用语言模型生成查询。 使用语言模型时,通常首先为每个区块生成两个查询。 还可以使用语言模型创建答案。 以下示例演示了为区块生成问题和答案的提示。
Please read the following CONTEXT and generate two question and answer JSON objects in an array based on the CONTEXT provided. The questions should require deep reading comprehension, logical inference, deduction, and connecting ideas across the text. Avoid simplistic retrieval or pattern-matching questions. Instead, focus on questions that test the ability to reason about the text in complex ways, draw subtle conclusions, and combine multiple pieces of information to arrive at an answer. Ensure that the questions are relevant, specific, and cover the key points of the CONTEXT. Provide concise answers to each question, and directly quote the text from the provided context. Provide the array output in strict JSON format as shown in the output format. Ensure that the generated JSON is completely structurally correct, including proper nesting, comma placement, and quotation marks. There shouldn't be a comma after the last element in the array. Output format: [ { "question": "Question 1", "answer": "Answer 1" }, { "question": "Question 2", "answer": "Answer 2" } ] CONTEXT:验证输出。 验证问题是否与用例相关,以及答案是否解决了问题。 SME 应执行此验证。
未处理的查询
重要的是,要收集文档未能解决的查询和可以解决的查询。 测试解决方案时,尤其是测试语言模型时,需要确定解决方案应如何响应它没有足够的上下文来回答的查询。 若要响应解决方案无法解决的查询,解决方案可以:
指出它不知道答案。
声明它不知道答案并提供一个链接,用户可以在其中找到更多信息。
收集用于测试的多媒体内容查询
与文本一样,应收集一组涉及使用多媒体内容生成高度相关的答案的各种问题。 如果有包含图形、表或屏幕截图的图像,请确保存在涵盖所有用例的问题。 如果你有包含演示、演示文稿或视觉信息的视频,请包含需要了解视觉内容的问题。 对于包含口述信息、面试或演示文稿的音频内容,请确保有问题来测试系统提取和推理口述内容的能力。
如果在内容分析步骤中确定在多媒体之前或之后文本需要回答一些问题,请确保在测试查询中存在这些问题。 此外,还考虑需要合并来自多种媒体类型的信息的问题,例如需要了解书面文档和相关说明视频的问题。
收集测试查询指南
确定是否有一个包含真实客户问题的系统可供使用。 例如,如果构建聊天机器人来回答客户问题,则可能能够使用技术支持、常见问题解答或票证系统中的客户问题。
用例的客户或 SME 应充当质量把关人,确定收集的文档、相关的测试查询以及文档中的查询答案是否全面、具有代表性且正确无误。
定期查看问题和答案正文,确保它们继续准确反映源文档。