大家好,我是 Ryan,Exa 的全栈工程师。今天我很兴奋能向大家介绍一项非常酷的功能:虽然 AI 代理的完美搜索即将推出,但目前大家至少可以对其进行版本控制。今天的演示将分为几个部分:首先解释什么是 Exa、什么是代理式网络搜索,以及为什么大家需要它;其次探讨版本控制的价值。最后会有一个互动环节,可能还有奖品,希望大家认真听讲以参与抽奖。

首先做个小调查:有多少人听说过 Exa?有多少人以前用 Google 做桌面研究?又有多少人在改用 ChatGPT 或 Claude 等 AI 代理来查找信息?这正是我们看到的趋势:如今 AI 的搜索行为比人类更频繁且高效。AI 能处理多轮对话,进行多次搜索并浏览多个页面以找到确切答案,而人类往往比较“懒惰”,只关注第一页结果。

AI 代理在需要超出其知识范围的信息时,会调用外部工具如 Exa。我们为全球最大的编码代理和应用提供搜索支持,例如 Cursor 利用它查找文档以回答用户问题,或 Gamma 用它获取特定金融数据。此外,在金融科技领域,对冲基金、主权财富基金和风险投资机构也广泛使用 Exa 来获取 Alpha 收益、预测风险或抢先发现热门初创公司。

Exa 不仅是一个搜索提供商,更像一个致力于基础研究的实验室。我们关注质量、成本和延迟这三个核心要素。为了确保持续领先,我们建立了自有的再生基准测试体系,因为搜索技术迭代迅速,静态基准很快会过时。我们需要动态更新基准,确保搜索引擎能返回最新信息,这也是使用专用搜索提供商而非仅依赖大模型权重的原因。

在成本控制方面,我们不仅关注搜索结果本身的费用,更重视输入 token 的成本。由于搜索涉及大量数据进入上下文窗口,我们开发了特定技术,仅返回完成任务所需的必要 token。这确保了编码代理或其他应用能在不产生高昂输入成本的情况下回答问题,从而优化整体资源效率。

最后是延迟性能。我们的搜索速度极快,通常在 300 毫秒以内即可完成查询;对于更复杂的任务,如查找所有视频游戏发行商及其开发者,即使耗时 20 分钟并返回数千条结果,系统也能稳定运行。无论您处于架构实施的哪个阶段,Exa 都能提供从极速简单查询到复杂深度检索的全方位支持。

现在大家可能会问:“Ryan,Exa 很棒,但我为什么要进行版本控制?”或者“为什么我要关心这个功能?”接下来我们将深入探讨版本控制在代理式搜索中的重要性。通过理解这一点,您将能够清楚地看到如何在实际应用中利用这一功能来回溯和测试您的应用表现。

今天讨论的重点是我们要介绍的一项新功能,称为“Exa 快照”(Exa Snapshot)。它允许你在现有的搜索功能基础上,查看如果在过去某个时间点进行搜索会是什么结果。我首先想说明这是什么,以及为什么你关心它。那么,这到底是什么呢?我们是搜索引擎,因此花费大量时间浏览网络。每当发现这些内容时,我们将其编入索引。当我们找到页面的新版本,或者甚至在过去的某个日期发现同一页面时,我们都会存储该版本。

这意味着在你整个索引中的每个 URL 都可以回溯时间。我们的索引包含约一千亿份文档,追踪着数万亿个 URL。有两种方式可以实现这一点。第一种是你已知某个 URL,但想查看它过去的样子。为此有内容版本控制功能:你可以提供一个日期,我们将显示该日期的内容或我们拥有的最近日期的内容。这样可以确保你拥有我们在当时会提供的那个页面版本。

更广泛地说,你可以使用“版本搜索”(version search)。这不仅仅是查找 URL,而是像在现在执行搜索一样,但在过去进行。让我们通过两个小例子来深入探讨一下,从而大致了解一些用例。首先假设你对金融市场感兴趣。在座谁对金融市场感兴趣呢?你可能想做的一件事是弄清楚:“嘿,我该如何了解最热门和最新的初创公司?”也许你们听说过 OpenAI。

最近有一些有趣的新闻,此前 Axios 和其他一些人报道了 OpenAI 的年化收入约为 700 亿美元。但最近有很多新闻讨论到底是 700 亿还是 500 亿?事实证明,这涉及一些会计管理问题:是总收入还是净收入?是否将某些云提供商的成本转嫁给你?你是否确认了这笔收入?但如果你是一个致力于理解这些事情的人,能够确保你设计的系统能够在拥有这些信息的时间点揭示这些会计附注会非常有帮助。

假设你想做一件也许更重要或不太重要的事情,即了解重要人物甚至不那么重要人物的负面媒体。例如 Ed Sheeran 最近有一些针对他的负面新闻。但如果回溯到该事件之前,你可以看到:“嘿,当时还存在哪些其他事情?也许他在保险方面表现不佳,你可能不想为他的保险产品做赞助。”这里的关键在于:现在你作为保险公司或任何企业,在进行合作伙伴关系时需要进行交易对手尽职调查(KYB/KYC)。

能够回溯并说:“嘿,我设计了一个系统去进行大量网络搜索以确定此人或此企业的性质、分类以及是否承保。”现在你可以设计该系统,然后使用 Exa 进行回溯测试。这给出了一些快照如何用于系统回测的例子。这里有一个示例作为说明。需要注意的是,这一点很重要,因为它可能有助于你未来取得卓越成就。

假设你想了解关于收购公司的情况。你可能想:“嘿,我正在设计我的系统。如果现在进行搜索,我会看到该公司已被收购;但我可能想回溯到过去:在收购前 1 天、1 周或一个月,我能找到预测这一点的信息吗?”实时搜索必然保持最新。这就是你付费购买的内容:如果你现在进行搜索,你将获得最新信息。

但这也会将未来的知识泄露到对过去的评估中。如果你创建一个预测系统,它只是查看新闻说某事已被收购,然后标记为成功(100% 真阳性率),这是假设搜索足够好。快照和版本控制搜索的价值在于,你可以限制特定信息在何时暴露。在这个小例子中,我可能将快照日期设置在结果公布之前。

这样我就知道,告知该系统的唯一信息是不泄露确切确认的信息。然后你可以调整它以执行不同的任务。也许我有一个非常关心的功能是关于招聘的,我想确保找到正确的招聘信号;或者有一个关心分析财报电话会议、转录稿或 CEO 播客采访的功能。无论什么对你重要,你都能调整该系统并查看:“嘿,这实际上会改善我的预测吗?”

接下来我将花一点时间谈谈我们在回测领域最近看到的几种模式。第一种是关于传统模型的想法:你只需收集数据来测试你已经拥有的模型。你可以这样想:“嘿,也许我有一个在现实中运行的系统。”我不需要那种代理式网络搜索。我热爱我的……

系统,这太神奇了。”对吧?但也许有一件事是你做不到的,那就是无法回溯并收集过去今天所具备的特征。这可能是因为它们基于网页,而这些网页本身并不存储可供回溯的版本。也可能是你试图构建某种系统来处理报纸页面或其他文章,但你无法真正信任其发布日期。这里稍微插一句题外话,文章的发布日期实际上一直在更新。无论是出于“我们确实进行了全面修订”这样的正当理由,还是因为搜索引擎优化(SEO)偏爱最新鲜的文章而选择再次更新。这意味着你无法真正信任发布日期这一特征,尤其是当你基于此做出重大决策时,确保该特征的可靠性至关重要。

因此,你可能会决定:“好吧,我要使用快照功能。”我知道一些我关心的网址或网站,我会跳回去收集所需的数据,然后将其放入任何需要的特征中,比如一组数值等。X 甚至不参与预测过程,但这是一种完全有效且相对直接的方式,你可能已经在利用某些版本数据来对系统进行回测。好了,这就是现有的空间。那么未来呢?完美搜索的未来。这里主要有两种模式。第一种是向传统模型添加一个代理功能,这与之前讨论的内容类似,但核心理念是在实时模型中,它将使用 X 或类似的工具去搜索网络。

其目的是将所有非结构化信息转化为结构化的信号,并据此进行交易。你可以将其想象为针对我们之前提到的 Ed Sheeran 的负面新闻扫描功能。你可能正在设计系统以执行某种交易对手尽职调查,在实时生产系统中,这可能只是其中一个模块。也就是说,系统本身可能没有任何代理能力,它仅仅收集大量特征,然后训练一个像传统机器学习模型那样的算法来做出“是的,我们要投资”或“不,我们不投资”的决策。

你可以使用 X 逐一回测这些代理功能,并评估:“在真正正匹配的情况下——即你关心的事情发生了,无论是该业务成功还是失败——我们能否正确预测到这一点?或者我们没有?”更重要的是,你可以随后调整该系统。因为对于所有这些非确定性系统而言,如何调整它们至关重要。如果你将其调整为以某种方式搜索,它可能会更频繁地成功;如果选择另一种搜索方式,成功率则较低。

你可以控制这些实验,然后一次一个特征地将它们添加到系统中。另一方面,在右侧的未来场景中,理念是存在一些预测初创公司和其他运营方,其中整个系统可能是代理型的。因此,该系统本身可能会或可能不会通过工具调用选择搜索网络。它也可以结合内部知识,或者结合结构化的外部知识,并在运行时执行这些操作。其理念是:“这有点像人类在进行预测时的做法。”

他们拥有代理能力,会搜索这个或那个。本质上,你可以将模型的接口锚定到外部世界。然后,你可以确保当该系统运行时,它只能搜索当时所拥有的信息。一个实际的例子是:假设你试图改进你的编码模型。其中一部分在于判断它是否能解决某个拉取请求(PR)。你可以这样做:“在外部仓库中该 PR 被解决的瞬间之前冻结系统,然后让系统运行。”

如果它成功解决了任务,你可以更有信心地认为这是模型权重或系统中你实际通过训练流程付费改进的组件的变化,而不是像未来信息泄露到当前这样的巧合。好了,这就是关于快照及其用于回测的一些方式的简要概述。我将总结一下我们到目前为止看到的内容。首先,为什么我们要喜欢 Exa?因为它是非常优秀的搜索工具。

对于模型而言,搜索非常重要,因为它们需要了解当前的情况,且质量必须高、成本效益好,并具备适合我系统的延迟。好吧,我们都学到了这一点。然后我们会想:“嘿,我真的需要这个。”而将其集成到模型中的很大一部分在于能够对其进行版本控制,以便证明它确实增加了价值,而不只是靠直觉和希望它能增加价值。现在我们要做的将是本次研讨会最有趣的部分:我们将给大家时间亲自上手操作这个工具。

屏幕上有一个二维码,你可以用手机扫描它。你也可以直接在电脑中输入这个小网址,笔记本电脑上的界面可能会更友好一些。接下来我将简要概述我们要在这里做什么。回想一下之前的例子,你将尝试预测公司收购在发生前的情况。让我讲个小故事:假设你在一家金融机构工作,你的老板的老板的老板去参加了一个 AI 工程师研讨会。

他们听说了一种非常酷的网页搜索功能,认为应该向投资组合经理展示一下。而投资组合经理说:“好的,我想看看它。你有 20 分钟时间。”试着把它做好。这里最令人困惑的变量是你没有编码代理,所以你必须手工完成这项工作,因为你的使用额度用完了或者发生了其他情况。这就是我们所处的背景情境。

任务将是找到两个最能准确预测公司被收购的特征。然后,Access Snapshot 将利用这些特征回溯至收购前1天、7天和30天的时间点,并测试你的特征。如果公司未被收购,则使用随机日期进行测试,其中包含一些混淆变量。所谓“特征”,就像是一个你相信能预测收购的“是/否”问题。你可以测试任意数量的特征,这里有一些示例,我会四处走动与大家交流,并在过程中提供帮助。

计分规则如下:如果你的特征预测某公司在其实际被收购前的170至30天内将被收购,则得+1分;如果你预测其被收购但实际并未发生,则扣-1分。对于漏报或误报(未预测到但实际发生了),由于我们非常友好,因此没有影响。最佳分数会自动记录,你可以尝试任意多次。我将为大家设置30分钟的时间窗口,现在就开始计时。在这30分钟内,请尝试提出你认为最完美的特征。我会四处走动巡视。

也许我们可以播放一些轻柔的音乐,营造出在投资组合管理公司工作的氛围,听着低保真(Lo-fi)节拍。我会过来和大家交流。好的,我先做一个简短的实时示例,向大家展示它是如何工作的。如果你已经胸有成竹并准备获胜,请继续磨练你的技能。但我还是要在里面放一个示例给大家看。

你会看到面前的这个界面,它会要求你输入一个新特征。你可以选择一个示例或自行键入内容并点击运行。它将执行搜索,使用 Excess Snapshot 进行大量检索。这个速度很快是因为它已被缓存,这展示了我们事先测试过的性能提升效果。但它会针对这一组10家公司运行该查询,其中一些公司被收购了,另一些则没有。

这些是混淆变量。其思路是这样的:我们将针对特定查询进行回溯搜索,例如“该公司是否失去了CEO或CFO?或者任命了临时领导?”对于所有这些情况,我们将进行版本搜索。以Delivery Hero为例,我们可以看到:“嘿,高管领导层发生了变动。”是的,而且该公司最终确实被收购了。所以这可能具有预测性。

然而,Quagen(我不确定发音是否正确)也发生了高管领导层变动,但最终并未被收购。哦不,这是一个混淆变量。因此,你的任务是尝试找出一个或两个特征,将它们加入后能产生最强的预测效果。在这里我要再添加一个:“据报道正在探索出售事宜?”这会让结果变得更好还是更糟?

在这种情况下,你可以看到:“嘿,我们捕捉到了很多收购案例,所以在发现目标方面做得不错。但是,我们也捕捉到了大量的虚假警报。”因此,我们在结合这两个特征的方式上可能需要更加严格。在这里我设置了一个非常简单的组合逻辑:你可以选择“或”(OR),即如果两个特征中任意一个触发为“是”,我们就认为整体预测结果为该公司将在当天被收购。

你也可以选择“与”(AND)。如果我查看结果,分数略有提高,这意味着这两个特征必须同时为真。只有当这两项特征在当天对该公司都为“是”时,才会触发预测为收购。这只是个提示(PSA)。我会回到那个排行榜那里,但如果在过程中有任何问题,请随时举手提问。

好的,还剩10秒。如果你还没有点击运行,可能已经太晚了。你可以随意尝试组合“与”和“或”,以获取最后几组结果。呼,好的。恭喜大家!那么,Zane、John 和 Ree,如果你们赢得了奖品,能否上台来与我汇合?如果没有,我们就继续往下看名单。让我们掌声欢迎!

上来吧,别害羞。太棒了,精美的礼品和神秘盒子在等着你们。嘿,恭喜 John。非常有价值的土地。好的,让我来分发这些奖品。

谢谢。你们排好队以便我们可以拍照。

好的,我们稍后可以从视频中截取一张静态照片。那么,让我们随意逛逛,好奇地看看第一名的人做了什么。Zane:这家公司是上市公司吗?非常有趣的特征。第二名:除了 Qiagen、Vitris(可能是指某种加密货币银行或类似实体)、American Electric Power 之外的公司?恭喜你,你就是我当初想要保留一个独立测试集(holdout set)的原因。

[笑声] >> 我移除它是因为我想让事情变得简单,但这是一个很好的例子,说明了为什么需要进行回溯测试,以及为什么要使用独立测试集进行回溯测试。所以,我将这视为一个特性而非缺陷(bug),这也是不包含独立测试集时的一个特点。 [笑声] >> 过拟合非常危险,因为我不认为这个特定的算法在未来会成功,但谁知道呢? [笑声] >> 第二名是 Ree。好吧,他抄袭了 Zane。[笑声] 也许当时坐得近一点会更好。最后是 John:在过去12个月内,是否有活跃投资者或重要股东公开呼吁整体出售公司?或者该公司当前股价是否低于过去5年最高价的至少60%?又或者它被命名为 Dominion?

这也有一点过拟合,但我认为它的表现可能会更好。这提供了一个示例,说明了为什么进行回溯测试如此重要且必要。因为你知道这是一个受限的示例环境。我觉得我有点后悔移除了独立测试集,虽然我也觉得如果我那样做的话,大家可能会更加困惑。但这让你明白了它的价值所在:如果你知道现有的数据集是什么,你可以对其进行过拟合;但关键在于你拥有这种能力来检查这一点。

你可以回溯并说:“嘿,我要回到我的记录中,约束一下我所知道的这10家公司……”

发生在那20家未采用公司的情况,并以此训练和迭代我的模型。还要确保它在公开可见的数据集之外也能持续保持高性能。好了,让我们回顾一下重点内容。天哪,这里人真多,我得滚动很久才能看到下面。我会把大家引导到一个感谢页面——我应该已经在那个页面上才对。

在感谢页面上,你们可以找到我们文档的链接。我们要强调一下对文档的重视;还有博客链接,它比文档更易读,也更面向普通用户。最后,还有一个给我发邮件的机会——我现在有点后悔了,因为现场有100个人,我预计会收到大量邮件。但这同样是一项企业功能。我们有一些公开使用的案例,但如果你希望你的团队也能访问这项服务,请给我发邮件,我会将你们对接给我们的企业团队。

让我们再次回顾重点:第一,我们热爱Exa。为什么?因为它是一款优秀的代理式网络搜索工具;它性价比高、极具成本效益,且能满足我所需的任何延迟要求。我希望它能集成到我的模型中。第二是快照功能(Snapshot)。它让我能够回溯测试我的模型,并直观地看到Exa在提升你的模型效果方面究竟有多出色。第三是建议你在竞赛中认真加入保留集(holdout set),否则你可能会出现过拟合的问题。谢谢大家。