在我的行业中,使用大型语言模型在幻觉方面带来了许多挑战。想象一下,一个人工智能误读发票金额为 100,000 美元而不是 1,000 美元,导致多付了 100 倍。面对这样的风险,预防幻觉成为构建强大人工智能解决方案的关键方面。这些是我在设计可能容易产生幻觉的解决方案时关注的一些关键原则。
使用验证规则和“人工介入”
有多种方法可以将人工监督纳入 AI 系统。有时,提取的信息总是呈现给人类进行审查。例如,解析后的简历可能会在提交给申请人跟踪系统 (ATS) 之前显示给用户。更常见的是,提取的信息会自动添加到系统中,并且仅在出现潜在问题时才标记以供人工审查。
任何 AI 平台的一个关键部分是确定何时纳入人工监督。这通常涉及不同类型的验证规则:
1. 简单的规则,例如确保项目总数与发票总数相符。
2. 查找和集成,例如在会计系统中验证采购订单的总金额或根据供应商的以前的记录验证付款细节。
这些流程是好事。但我们也不想要一个不断触发保护措施并迫使人工干预的人工智能。如果人工智能不断触发这些保护措施,幻觉就会违背使用人工智能的目的。
小语言模型
防止幻觉的一个解决方案是使用“可提取”的小型语言模型 (SLM)。这意味着模型会标记文档的各个部分,然后我们将这些标签收集到结构化输出中。我建议尽可能尝试使用 SLM,而不是对每个问题都默认使用 LLM。例如,在求职网站的简历解析中,等待 LLM 处理简历 30 多秒通常是不可接受的。对于这种用例,我们发现 SLM 可以在 2-3 秒内提供结果,并且比 GPT-4o 等大型模型的准确率更高。
来自我们管道的一个例子
在我们的初创公司中,一份文档最多可以由 7 种不同的模型处理——其中只有 2 种可能是 LLM。这是因为 LLM 并不总是完成这项工作的最佳工具。某些步骤(例如检索增强生成)依赖于小型多模态模型来创建有用的嵌入以进行检索。第一步——检测某物是否是文档——使用一个小型超快模型,准确率可达 99.9%。将问题分解成小块,然后找出 LLM 最适合哪些部分,这一点至关重要。这样,你就可以减少出现幻觉的机会。
区分幻觉和错误
我特别强调了幻觉(模型虚构信息)和错误(模型误解现有信息)。例如,选择错误的美元金额作为收据总额是一种错误,而生成不存在的金额则是一种幻觉。提取模型只会犯错误,而生成模型既会犯错误,又会产生幻觉。
风险承受能力和接地
使用生成模型时,我们需要某种方法来消除幻觉。
基础是指任何一种迫使生成 AI 模型参考一些权威信息来证明其输出的技术。如何管理基础取决于每个项目的风险承受能力。
例如,一家拥有通用收件箱的公司可能会寻找行动项目。通常,需要采取行动的电子邮件会直接发送给客户经理。一个通用收件箱里充满了发票、垃圾邮件和简单的回复(“谢谢”、“好的”等),里面有太多消息,人类无法检查。如果操作被错误地发送到这个通用收件箱会发生什么?操作经常被错过。如果一个模型犯了错误但总体上是准确的,那它已经比什么都不做要好。在这种情况下,对错误/幻觉的容忍度可能很高。
其他情况可能需要特别低的风险容忍度——想想财务文件和“直通式处理”。在这种情况下,提取的信息会自动添加到系统中,而无需人工审核。例如,一家公司可能不允许将发票自动添加到会计系统中,除非 (1) 付款金额与采购订单中的金额完全匹配,并且 (2) 付款方式与供应商之前的付款方式匹配。
即使风险很低,我仍然会谨慎行事。每当我专注于信息提取时,我都会遵循一个简单的规则:
如果从文档中提取文本,那么它必须与文档中找到的文本完全匹配。
当信息是结构化的(例如表格)时,这很棘手——尤其是因为 PDF 不包含有关页面上单词顺序的任何信息。例如,一行项目的描述可能会分成多行,因此目标是在提取的文本周围绘制一个连贯的框,而不管单词的顺序是从左到右(或在某些语言中是从右到左)。
强制模型指向文档中的确切文本是“强基础”。强基础不仅限于信息提取。例如,客户服务聊天机器人可能需要引用内部知识库中的标准化回复(逐字逐句)。这并不总是理想的,因为标准化回复可能实际上无法回答客户的问题。
另一个棘手的情况是需要根据上下文推断信息。例如,医疗助理 AI 可能会根据症状推断出疾病的存在,而无需明确说明医疗状况。确定这些症状在哪里被提及将是一种“弱基础”。响应的理由必须存在于上下文中,但确切的输出只能从提供的信息中综合出来。进一步的基础步骤可能是强制模型查找医疗状况并证明这些症状是相关的。这可能仍然需要弱基础,因为症状通常可以通过多种方式表达。
解决复杂问题
使用 AI 解决日益复杂的问题可能会使使用基础变得困难。例如,如果模型需要执行“推理”或从上下文中推断信息,您如何为输出提供基础?以下是为复杂问题添加基础的一些注意事项:
- 确定可以分解为一组规则的复杂决策。不要让模型生成最终决策的答案,而是让它生成该决策的组成部分。然后使用规则显示结果。(警告 – 这有时会使幻觉变得更糟。向模型提出多个问题会给它多次产生幻觉的机会。问一个问题可能会更好。但我们发现当前的模型在复杂的多步骤推理方面通常更差。)
- 如果某件事可以用多种方式表达(例如症状描述),第一步可能是让模型标记文本并对其进行标准化(通常称为“编码”)。这可能为更强大的基础打开机会。
- 为模型设置“工具”以将其调用,从而将输出限制为非常具体的结构。我们不想执行由 LLM 生成的任意代码。我们希望创建模型可以调用的工具,并对这些工具中的内容进行限制。
- 尽可能地包含工具使用方面的基础 — — 例如在将响应发送到下游系统之前根据上下文验证响应。
- 有没有办法验证最终的输出?如果手工制定的规则不行,我们可以制定一个验证提示吗?(并且对经过验证的模型也遵循上述规则)。
关键要点
- 当谈到信息提取时,我们不能容忍在原始上下文中找不到的输出。
- 我们随后采取验证步骤来发现错误和幻觉。
- 除此之外,我们所做的一切都是为了评估风险和降低风险。
- 将复杂的问题分解为更小的步骤并确定是否需要法学硕士学位。
- 对于复杂问题,使用系统的方法来识别可验证的任务:
— 坚实的基础迫使法学硕士逐字引用可信来源的内容。始终最好使用坚实的基础。
— 薄弱的基础迫使 LLM 引用可信来源,但允许综合和推理。
— 当问题可以分解为较小的任务时,尽可能使用坚实的任务基础。
RA/SD 衍生者AI训练营。发布者:chris,转载请注明出处:https://www.shxcj.com/archives/6322