
人工智能开发领域不断进步,将可靠的搜索 API 与您的语言学习模型(LLM)结合使用,可以通过提供最新和相关的数据,显著增强您的 AI 代理的性能。
然而,在众多选择中,选择最合适的一个可能会有挑战。本文旨在通过使用 GPT-4 评估四种知名且新颖的搜索 API,协助您在决策过程中做出选择。
我们将迅速介绍各种服务,评估它们在信息详细程度、相关性、及时性、整体答案质量以及答案是否正确回答用户或代理的问题方面的效率。这种比较将帮助您确定最适合您的 LLM 项目的 API。
搜索 API
以下部分简要介绍我们将在后文评估或相互比较的搜索引擎服务。
You.com
图 1. You.com API 参考截图(作者提供的图片)。
You.com 专注于 LLM 应用场景,通过三个独特的端点提供实时网络数据:
- Web LLM:将 Web 搜索与 LLM 结合,以获得精细的响应
- Web Search:提供比传统搜索引擎(如必应和谷歌)更详细信息的扩展摘要
- News:类似 Web Search,但专注于最新事件
文档简单易懂,配有使用流行的 requests
Python 包的代码片段。
当前速率限制为 每秒 20 次,默认调用的执行时间约为 1 秒。Web Search 返回的数据比常规搜索引擎 API 多得多,我建议使用具有大(即 32k)上下文窗口的 LLM。
Tavily Search
图 2. Tavily Search 截图(作者提供的图片)。
Tavily Search API 将复杂搜索简化为单个调用,为 AI 开发人员提供快速准确的结果。它结合了爬取和数据提取,每次请求访问 20 多个来源,以获得准确答案和全面研究。
Tavily 提供详细的文档和用户友好的 API 演示环境供测试。响应时间根据搜索深度和选择的字段而异(1-10 秒),可以选择访问原始搜索内容,尽管可能需要进行广告相关的清理。
我的请求的代码执行时间约为 1 秒。速率限制为 每分钟 20 次,相当严格。
Exa Search
图 3. Exa Search API 参考截图(作者提供的图片)。
Exa Search API(前身为 Metaphor)适用于 LLM 应用场景,使用基于嵌入的搜索来获取网络内容。作为知识 API,它为 LLM 提供了神经和关键字搜索功能,提供相关的网页和智能 RAG 模型突出显示的 HTML 内容,可能消除了对网页爬取的需求。
Exa.AI 展示了对用户体验的承诺,提供了交互式文档和在线演示环境。他们的 Python 包 exa-py
有助于轻松集成,但用户也可以使用经典的 requests
Python 包。
执行速度快,约为 1 秒,有调整查询以获得更好结果的选项。然而,该服务有时会返回较旧的内容,这可能需要额外的参数来解决。当前速率限制为 每秒 10 次。
Perplexity AI
图 4. Perplexity AI API 参考截图(作者提供的图片)。
Perplexity AI 提供引用、研究和获取等服务,有助于进行广泛的查询和研究整合。
开发人员可以使用他们的 pplx-api 进行知识访问。提供的文档用户友好且易于理解。Perplexity AI 提供了开源语言模型和名为 Sonar 的在线模型。然而,目前通过 API 提供的在线模型不返回来源或引文,但这一功能计划在未来更新中实现。我的代码执行大约需要 1 秒。在线模型的当前速率限制为 每分钟 20 次,相当严格。
该模型的最新数据通常为 3 天前(我向模型询问了最新数据)。在线来源没有指示更新频率,因此可能会有一些延迟。
比较
方法
为了比较这些 API 及其结果,我将为每个开发一个工具。这个工具将提供给一个基于 GPT-4(gpt-4-0125-preview)的代理。
代理将得到四个关于当前事件或趋势的样本问题。随后,我将部署另一个基于 GPT-4 的链,评估代理提供的答案。
评估将基于以下标准进行:
- 答案中的详细程度(1-5)
- 答案中信息的相关性和及时性,考虑到来源的日期(如果提供)(1-5)
- 答案的整体质量(1-5)
- 答案是否正确回答了用户的问题,这将是一个简单的二元是或否。
最终,将为每个工具或服务计算每个类别的平均分数。这些分数将被可视化,以便轻松解释。
问题
- “2024 年的顶级营销趋势是什么?”
- “2024 年 2 月发生了哪些重要的地缘政治事件?”
- “您能总结一下人工智能研究和突破的最新进展吗?”
- “根据劳工统计局报告,美国最新的失业率是多少?
代码
注意:为了使本文更易读,我没有在下面的代码片段中显示导入语句。但是,您可以在这里找到完整的笔记本。
工具
注意:为了使结果更具可比性,我还将返回结果数量设置为 3。
为了确保我们的代理稍后可以利用每个介绍的服务,我们需要创建或包装每个工具,使用自定义工具装饰器,遵循 LangChain 的指南来定义自定义工具。
# YOU.COM API
@tool
def you_com_api(query: str) -> str:
"""使用此工具在互联网上搜索最新信息。"""
headers = {
"X-API-Key": "XXX"}
params = {
"query": query, "num_web_results": 3}
results = requests.get(
f"https://api.ydc-index.io/search",
params=params,
headers=headers