LLM超长高低文查问
在大型言语模型(LLM)的运行中,有几个场景须要以结构化的形式出现数据,其中消息提取和查问剖析是两个典型的例子。咱们最近经过降级的文档和一个专门的代码仓库强调了消息提取的关键性。关于查问剖析,咱们雷同降级了关系文档。在这些场景中,数据字段或者包括字符串、布尔值、整数等多种类型。而在这些类型中,处置高基数的分类值(即枚举类型)是最具应战性的。
所谓的“高基数分类值”,指的是那些必定从有限的选项当选用的值,这些值不能轻易指定,而必定来自一个预约义的汇合。当这个汇合中的有效值数量十分庞大时,咱们称之为“高基数”。处置这类值之所以艰巨,是由于LLM自身并不知道这些或者的值是什么。因此,咱们须要向LLM提供关于这些或者值的消息。假设疏忽了这一点,LLM或者会自行假造值。关于只要少数几个或者值的状况,咱们可以经过在提醒中明白列出这些值来处置。然而,当或者的值十分多时,疑问就变得复杂了。
随着或者值数量的参与,LLM正确选用值的难度也随之参与。一方面,假设或者的值太多,它们或者不可顺应LLM的高低文窗口。另一方面,即使一切或者的值都能顺应高低文,将它们所有蕴含在内会造成处置速度变慢、老本参与,以及LLM在处置少量高低文时的推理才干降低。
咱们最近对查问剖析启动了深化钻研,并在订正关系文档时特意参与了一个关于如何处置高基数分类值的页面。在这篇博客中,咱们将深化讨论几种试验性方法,并提供它们的功能基准测试结果。
结果的概览可以在LangSmith中检查。接上去,咱们将具体引见:
数据集概览
具体的数据集可以在这里检查。
为了模拟这一疑问,咱们假定了一个场景:咱们要查找某位作者关于外星人的书籍。在这个场景中,作者字段是一个高基数分类变量——或者的值有很多,但它们应该是特定的有效作者名字。为了测试这一点,咱们创立了一个蕴含作者姓名和罕用别名的数据集。例如,“Harry Chase”或者是“Harrison Chase”的别名。咱们宿愿自动系统能够处置这类别名。有了这个姓名和别名列表后,咱们又生成了10,000个随机姓名。须要留意的是,10,000的基数并不算高——关于企业级系统来说,或者要面对的是数百万级别的基数。
应用这个数据集,咱们提出了这样的疑问:“Harry Chase关于外星人的书有哪些?”咱们的查问剖析系统应该能够将这个疑问解析为结构化格局,蕴含两个字段:主题和作者。在这个例子中,预期的输入应该是{“topic”: “aliens”,“author”: “Harrison Chase”}。咱们希冀系统能够识别出没有名为Harry Chase的作者,但Harrison Chase或者是用户想要表白的意思。
经过这种设置,咱们可以针对咱们创立的别名数据集启动测试,审核它们能否能够正确映射到实在姓名。同时,咱们还会记载查问的提前和老本。这种查问剖析系统理论用于搜查,因此咱们十分关心这两个目的。出于这个要素,咱们也限度了一切方法只能启动一次性LLM调用。咱们或者会在未来的文章中对经常使用屡次LLM调用的方法启动基准测试。
接上去,咱们将引见几种不同的方法及其功能体现。
完整的结果可以在LangSmith中检查,复现这些结果的代码可以在这里找到。
基线测试
首先,咱们对LLM启动了基线测试,即在不提供任何有效姓名消息的状况下,间接要求LLM启动查问剖析。结果不出所料,没有一个疑问获取了正确回答。这是由于咱们故意构建了一个须要经过别名查问作者的数据集。
高低文填充法
在这种方法中,咱们将一切10,000个非法的作者姓名都放入了提醒中,并要求LLM在启动查问剖析时记住这些是非法的作者姓名。一些模型(如GPT-3.5)由于高低文窗口的限度,基本不可口头这个义务。关于其余具备更长高低文窗口的模型,它们在准确选用正确姓名方面也遇到了艰巨。GPT-4只在26%的案例当选用了正确的姓名。它最经常出现的失误是提取了姓名但没有启动校对。这种方法不只速度慢,老本也高,平均须要5秒钟才干实现,总老本为8.44美元。
LLM前过滤法
咱们接上去测试的方法是在将或者的值列表传递给LLM之行启动过滤。这样做的好处是只传递或者姓名的子集给LLM,这样LLM须要思考的姓名就少得多,宿愿能够让它更快、更廉价、更准确地实现查问剖析。但这也参与了一个新的潜在失败形式——假设初步过滤出错怎样办?
基于嵌入的过滤法
咱们最后经常使用的过滤方法是嵌入法,并选用了与查问最相似的10个姓名。须要留意的是,咱们是将整个查问与姓名启动比拟,这并不是一个理想的比拟形式!
咱们发现,经常使用这种方法,GPT-3.5能够正确处置57%的案例。这种方法比以前的方法快得多,也廉价得多,平均只要要0.76秒就能实现,总老本仅为0.002美元。
基于NGram相似性的过滤法
咱们经常使用的第二种过滤方法是对一切有效姓名的3-gram字符序列启动TF-IDF向量化,并经常使用向量化的有效姓名与向量化的用户输入之间的余弦相似度来选用最关系的10个有效姓名参与到模型提醒中。雷同须要留意的是,咱们是将整个查问与姓名启动比拟,这并不是一个理想的比拟形式!
咱们发现,经常使用这种方法,GPT-3.5能够正确处置65%的案例。这种方法雷同比以前的方法快得多,也廉价得多,平均只要要0.57秒就能实现,总老本仅为0.002美元。
LLM后选用法
咱们最后测试的方法是在LLM实现初步查问剖析后,尝试纠正任何失误。咱们首先对用户输入启动了查问剖析,没有在提醒中提供任何关于有效作者姓名的消息。这与咱们最后启动的基线测试相反。而后,咱们启动了一个后续步骤,取作者字段中的姓名,找到最相似的有效姓名。
基于嵌入相似性的选用法
首先,咱们经常使用嵌入法启动了相似性审核。
咱们发现,经常使用这种方法,GPT-3.5能够正确处置83%的案例。这种方法比以前的方法快得多,也廉价得多,平均只要要0.66秒就能实现,总老本仅为0.001美元。
基于NGram相似性的选用法
最后,咱们尝试经常使用3-gram向量化器启动相似性审核。
咱们发现,经常使用这种方法,GPT-3.5能够正确处置74%的案例。这种方法雷同比以前的方法快得多,也廉价得多,平均只要要0.48秒就能实现,总老本仅为0.001美元。
论断
咱们对处置高基数分类值的查问剖析方法启动了多种基准测试。咱们限度了自己只能启动一次性LLM调用,这是为了模拟事实环球中的提前限度。咱们发现,经常使用LLM后基于嵌入相似性的选用方法体现最佳。
还有其余方法值得进一步测试。特意是,在LLM调用之前或之后寻觅最相似的分类值有许多不同的方法。此外,本数据集中的类别基数并不像许多企业系统所面临的那样高。这个数据集大概有10,000个值,而许多事实环球中的系统或者须要处置的是数百万级别的基数。因此,对更高基数的数据启动基准测试将是十分有价值的。
本文转载自,作者: