DeepSeek
这是一种新的实验性架构,用于构建由大语言模型驱动的互联网规模_检索引擎_。这种架构与目前的_答案引擎_设计的研究代理完全不同。
你可以在这里查看一些示例结果:https://deep-seek.vercel.app/(注意,这不允许你进行实际查询,因为我负担不起 😅)
两个概念之间的主要区别如下:
- 答案引擎:汇总大量来源以找到一个_正确_答案。这是近期“研究代理”的收敛方向。示例包括perplexity、gpt-researcher、或aomni。
- 检索引擎:处理大量来源以收集一个_全面_的实体列表。到目前为止,还没有人尝试过这样做(据我所知)。
答案引擎的最终结果是研究报告,而检索引擎的最终结果是包含所有检索到的实体和丰富列的表格。
以下是最终结果的样子(缩小以显示比例):
这实际上只是查询结果的一小部分。实际结果如此之大,以至于无法截屏。最终结果中有94条记录,代理在浏览了356个来源后收集并丰富了这些记录。
代理在丰富数据时还会为表格单元格中的数据生成置信评分。注意,有些单元格用黄色突出显示——这些是低置信度的单元格。这些情况可能是来源有冲突,或者根本没有来源,所以代理进行了最佳猜测。这实际上是一个介于0-1之间的数字,因此可以有更好和更具创意的用户界面来展示更高保真度的评分。
入门
安装
安装以下任一包管理器
- npm
- yarn
- pnpm
- bun
按照安装中的说明安装包管理器和项目依赖
要运行开发服务器,请根据你的包管理器使用以下命令之一
npm run dev
# 或者
yarn dev
# 或者
pnpm dev
# 或者
bun dev
使用浏览器打开http://localhost:3000开始搜索或探索预构建的示例。请注意,这些示例实际上不会运行代理(因为成本很高),更多的是展示架构的优势和缺陷,通过让你检查结果。
如果你设置了环境变量,可以自己运行代理。注意,它大约需要5分钟,并且可能花费0.1到3美元的信用,具体取决于检索到的实体数量和需要丰富的数据量。
运行代理时,请检查终端以查看后台发生的日志。
环境变量
创建一个.env文件,并输入以下环境变量:
ANTHROPIC_KEY="anthropic_api_key"
EXA_KEY="exa_api_key"
架构
系统作为一个多步骤的研究代理工作。初始用户查询被分解成一个计划,答案通过系统迭代构建。这种架构的另一个名称是流水工程。
研究流程分为4个主要步骤:
- 计划 - 基于用户查询,计划者构建最终结果的形状。这是通过定义要提取的实体类型以及结果表中的不同列来实现的。列代表与用户查询相关的其他数据,这些数据与实体有关。
- 搜索 - 我们使用标准关键词搜索和神经搜索来查找相关内容进行处理(这两种搜索均由Exa提供)。关键词搜索在查找用户生成的谈论要查找的实体的内容(例如,评论,列表文章等)方面非常有效。神经搜索在查找特定实体(例如,公司,论文等)方面非常出色。
- 提取 - 所有搜索到的内容通过LLM处理以提取特定实体及其相关内容。这是通过一种我正在测试的新技术实现的,在内容的句子之间插入特殊标记(通过winkNLP的小型语言模型拆分),然后要求LLM通过指示起止标记来定义要提取的内容范围。这非常快速且令牌效率高。
- 丰富 - 我们在这个更大的检索代理中确实有一个较小的答案代理,其任务是丰富计划者为每个实体定义的所有列。这是整个过程最耗时的部分,但也是这个代理极其彻底的原因。
以下是操作的更详细流程:
示例
对于探索这种架构的任何人 - 如果你找到一个好的或有趣的用例,请将其添加到示例列表中,以便其他人可以查看!在app
下有一个examples.ts
文件,其中包含所有示例的原始数据。你可以在查询完成后通过浏览器控制台获取原始数据(只需将其复制到示例文件中)。
未来工作
- 按相关性排序/排名检索到的实体 - 这对于带有“最佳”或“最新”等修饰符的查询尤其重要。这应该作为管道末尾的一个附加步骤添加。
- 更好的实体解析以检测重复的实体 - 代理有时仍会被M2 vs M3 Macbooks等事情难住,有更好格式化实体标题的技术可以在这里带来更好的表现。
- 与上一点相关,丰富时更好地验证来源以确保其连接到原始实体。
- 支持深度浏览来源 - 有时代理应该点击网页以真正钻研内容,这对于搜索arxiv上的研究论文至关重要。
- 支持数据流式传输 - 在用户界面中实时看到列表被填充和单元格被丰富将是惊人的。现在,你只能通过查看终端上的日志来了解进度。
如果你想合作或只是想讨论想法,请随时通过david@aomni.com给我发邮件或在twitter上联系我。