几年前,ChatGPT 闯入我们的生活,将大语言模型带给了全球数百万用户。

自那以后,人工智能的发展故事主要围绕拥有越来越多参数的更先进模型展开。

事实上,所有大语言模型都共享着同一个局限性:它们是预训练模型,但它们所运作的现实世界从发布的那一刻起就不断变化。我们可以用这张图来观察模型知识随时间的演变过程,它简单地讲述了一个故事:在训练期间知识不断增长,而一旦模型发布,其数据就趋于平稳并保持不变。

这意味着预训练模型只是一张快照。权重中的训练数据内容在训练的最后一刻就被冻结了。但当然,世界并不会因为模型的发布而停止运转。新产品上市、产品价格发生变化、新法律通过以及每天发生的新闻事件,大语言模型对这些都一无所知。

这就导致了各种各样的问题。情况如下所示:史蒂夫想询问大语言模型关于最新款手机的信息。虽然我们都知道有些新手机尚未发布,但在某些情况下,大语言模型仍可能编造出一个听起来极具说服力的答案。

也许它会说:“这款手机是智能手机市场的巨大飞跃,它是第一款可折叠手机,拥有十天续航能力且没有接口,通过 Wi-Fi 充电。”大多数用户会明白这不是真的,并意识到模型正在产生幻觉。

事实上,几乎所有使用过聊天机器人的人现在都对这种自信但错误的回答习以为常了。那么,为什么大语言模型会产生幻觉呢?例如,在训练过程中,模型可能阅读了一些想象未来手机样貌的博客文章,并利用它们来生成这个答案。

仔细想想,这实际上并不是与模型智力相关的缺陷,而是知识缺失的结果。大语言模型被问及一个它不了解的新动态世界,并试图基于其训练的历史数据来回答。好消息是,人类通常会意识到错误并将其忽略,不会造成损害。

但人工智能代理则是另一回事了。因为与史蒂夫不同,AI 代理在执行操作之前并没有人类阅读每一个答案。所以让我们想象一个 AI 代理和一个大语言模型,例如建议电子产品公司做出购买决策的 AI 代理。

假设由于某种原因,该 AI 代理向大语言模型提出了同样的问题,并得到了相同的答案。现在会发生什么?AI 代理的反应方式与人类不同。人类有羞愧感等情感,不想让人失望;它们还有直觉,当事情看起来很奇怪时,人类会放慢速度或停止。

但 AI 代理不是人类。AI 代理可以自信地、大规模且非常快速地失败。例如,这个 AI 代理可能会将错误答案视为完全有效,并建议开始采购组件。在许多情况下,这实际上是一个非常昂贵的错误。

但当多个代理协同工作时情况会更糟。假设这是二号 AI 代理和三号 AI 代理,例如一个是营销代理,另一个是财务代理。

正如我们所见,第一个代理可能会推理错误,并将其决定传递给其他代理。而这些代理反过来也会犯自己的错误。这一切发生得非常快,而且通常很难找到根本原因。

事实上,我们在生产环境中看到的最严重的 AI 系统故障并非关于智力问题,而是关于糟糕的数据以及基于错误、过时或纯粹捏造的信息采取行动的系统。这就是我们所说的“垃圾进,垃圾出”,简称 GIGO。

我相信对于真实用户而言,最具影响力的下一个功能飞跃并非使用拥有最大参数数量的最新 AI 大脑。而是通过将模型连接到现实世界,赋予 AI 访问来自网络的实时上下文层——一个强大的知识层。这最大限度地提高了用户获得有效、有用回答的机会。

让我们谈谈大语言模型如何使用知识层。知识层必须为大语言模型提供网络数据,即来自互联网的数据。这些数据需要是新鲜的、可靠的和详细的。这为模型在其训练数据之上提供了重要的实时上下文增强,然后在推理时用于生成对用户的答案。

从技术上讲,知识层可以访问互联网以尝试抓取数据。但这通常不可靠:网站可能会显示验证码或完全阻止访问,这是一个巨大的失败。这是因为许多网站使用反机器人技术来阻止 AI 代理的访问。

即使网站允许访问,互联网实际上是为人类设计的,使用鼠标和眼睛来查看富有创意的页面设计。因此它本质上是很混乱的:网站不一致,而且更糟糕的是,网页使用 HTML,这既沉重又复杂,使得大语言模型难以理解。

为了可靠、不间断地获取互联网上的公共网络数据,知识层需要从专用工具中获取信息。这就是 Web 数据基础设施层发挥作用的地方。Web 数据基础设施层从实时抓取的网页中向知识层提供大量新鲜且可靠的数据,并以最适合大语言模型的方式对其进行结构化处理。

知识层中的数据通常不会长期存储。对于许多问题,AI 会向 Web 基础设施层请求来自互联网的新鲜上下文切片。Web 数据基础设施层必须非常快速地抓取、处理并将数据传输给知识层,以便在推理时使用。

保持知识层的更新对提高大语言模型回答当前事件(如价格、产品以及发布后发生变化的所有内容)的质量有着巨大影响。因此,正如我们所见,Web 数据基础设施层在确保大语言模型拥有新鲜可用信息方面发挥着关键作用。

提供给知识层的数据必须是值得信赖的。那么,要维持高水平的可靠性并信任 Web 数据需要什么呢?有五个要素:它需要有据可查。每一个声明或数据点都必须有引用,即指向 AI 在需要时可以阅读的源头的途径,以及用户如果想深入了解时后来可以点击的链接。

想想维基百科吧。人们信任它的原因在于,尽管任何人都可以编辑它,但每一个声明都有可以点击的引用。没有这些引用,它就只是某人的个人观点。

观点同样重要。如果没有引用,用户很难信任 AI 的回答。谁知道呢?也许就像我们之前的手机例子一样,这是由大语言模型编造的。因此,数据需要深入。也就是说,要足够充分以减少幻觉的概率。我们要给大语言模型足够的上下文来理解信息,从而生成正确的答案。这意味着简单的单段落片段是不够的。想象一下让人审阅合同,却只给他们看摘要页。他们可能会了解大意,但也可能错过一些非常重要的条款。当我们向大语言模型提供片段而不是完整上下文时,就会发生这种情况。

理想情况下,我们希望交付完整的网页、完整的文档、完整的数据集以及描述信息本身的元数据。例如字段的名称和使用的格式。我们需要给大语言模型提供事实和结构,而不仅仅是一堆文本。此外,数据需要是新鲜的。交付实时且真正最新的数据非常重要。我的意思是,就像用户在基础设施层抓取页面时刷新浏览器所看到的一样过时的数据会让大语言模型自信地犯错。

这不仅仅是理论上的问题。本周我访问了一座新城市,并向我的 AI 代理询问博物馆推荐。它自信地建议我去某个特定的博物馆,但当我在谷歌地图上查找路线时,却显示“永久关闭”。我搜索了一下,发现它实际上三个月前就关门了。幸好我没有开车去那里。新鲜数据针对不同事物有不同的分辨率,例如价格以分钟计,新闻以小时计,而法律等事项则以天为单位。

数据还需要正确格式化。这是因为抓取网页会产生原始 HTML 格式,而这种格式不适合 AI 代理摄入。它可能高达数兆字节,因此在令牌消耗方面非常昂贵,并且包含会混淆 AI 的不相关信息。比如 CSS 和 JavaScript 等。事实上,向 AI 代理提供原始 HTML 有点像在宜家买床却没找到盒子里的说明书。你只得到一堆木零件和一些螺栓。大语言模型必须先弄清楚各部分如何组装,才能做点有用的事情。这需要时间和令牌,并引入错误。

因此,Web 基础设施层需要将数据格式化为大语言模型易于理解和消化的形式。但它还需要数据紧凑以节省令牌。Web 基础设施层将原始 HTML 转换为令牌高效的格式,例如使用项目符号列表的 Markdown 语言,或仅包含相关数据的结构化 JSON 文件。最后,数据必须及时。Web 数据必须快速传递给知识层,因为如果上下文在大语言模型已经提供答案后才到达,那就太晚了。

试想一下,如果 NBA 体育解说员描述了比赛中的每一个动作,但音频却延迟了 20 秒会发生什么。从技术上讲是准确的,但对于任何观看直播比赛的人来说完全没用。根据不同的需求,所需的延迟可以是几秒,有时甚至是几毫秒。这意味着延迟是 Web 基础设施的关键功能,而不仅仅是一个注脚。如果你遗漏了这五个要素中的任何一个,信任就会崩溃,你又会回到“垃圾进、垃圾出”的局面。但如果做到了所有五点,你就有了一个值得信赖的 Web 数据层来为你的 AI 工具提供燃料。

然而,即使有了正确的基础设施,Web 本身有时也会与你作对。让我们看看 LLMs 和代理在使用公共 Web 数据时可能遇到的一些常见问题。如前所述,AI 代理必须使用新鲜的数据才能赢得用户的信任。假设我们要构建一个购物 AI 代理,它的一个功能是比较价格,检查多个零售商网站的产品价格。为了这个例子,我们只使用其中一个站点。

此时,假设我们要处理一个产品 X。在零售商网站上,该产品有库存,价格为 50 美元。现在假设代理每天抓取网站并找到产品 X。然后它收集价格和库存可用性,并将产品价格和库存信息发送给我们之前讨论过的知识层。但是,零售商的价格和库存可用性每天都在变化,有时每小时都在变。对于需求旺盛的热销产品尤其如此。这些正是用户实际可能会询问的产品。

事实上,存储的电子商务数据的鲜度衰减率非常高。正如你在图表中看到的,Y 轴表示鲜度,高代表新鲜,低代表陈旧。X 轴表示时间。你可以看到博客文章的衰减相当缓慢,但电子商务数据的衰减要快得多。所以假设 X 是一个热门产品,现在已经不再可用了。零售商网站上的该产品已售罄。让我们假设有一个新用户叫乔伊(Joe)。

乔伊想使用价格比较代理来查看该产品是否可以购买。他可以查询 AI 代理,可能会看到产品仍有库存。但与此同时,正如我们所见,零售商已经售罄,不再拥有产品 X 的库存。然后当乔伊去零售商网站完成购买时,他会沮丧地发现该产品实际上不可用,并且会失去对价格比较代理的信任。

在电子商务方面,产品数据的不同部分在变化速度上并不相同。产品的规格和描述本质上是相对静态的,知识层可以缓存更长时间。但价格和库存可用性变化非常频繁。因此最佳做法是在推理时刷新它们。让我们总结一下:这里有一个尝试直接访问 Web 的知识层的大语言模型。有时它有效,但正如我们所见,网站有时会阻止访问或呈现验证码,甚至提供虚假信息。即使数据流动,网站提供的原始 HTML 格式也很难被大语言模型使用。

数据不可靠,对大语言模型的信任可能会受损。这可能导致不愉快的用户或错误,有时甚至是代价高昂的错误。知识层的质量仅取决于它接收到的输入,直接访问 Web 是不够的。这通常导致“垃圾进、垃圾出”。在右侧,是同一个大语言模型和同一个知识层,但现在添加了一个可靠的 Web 数据基础设施层。Web 数据基础设施层处理机器人检测,避免虚假信息,并

为大型语言模型提供格式正确的可信网络数据。到达知识层的网络数据具备根基性、深度、新鲜度、规范格式以及及时性。借助可信的网络数据,大型语言模型或人工智能代理能够基于实时发生的真实世界情况提供准确无误的答案。这一切均无需猜测,也避免了因产品缺货而让乔感到兴奋,或向丽莎展示错误的酒店价格。

总而言之,当今构建可靠人工智能系统最困难的部分并非模型本身,而是其底层的数据层。该数据层必须在规模上、实时地运作,并应对为人类构建且往往抗拒被机器读取的网络。网络基础设施层确保了在处理网络数据时消除“垃圾进、垃圾出”的现象。

如果你构建好了这一层,人工智能代理的实用性将大幅提升。你将拥有一个值得信赖的系统,能够被世界上那些要求苛刻的用户所使用。