❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
🚀 「搜索引擎革命!开源神器让AI代理直接读懂网页,复杂问题一键拆解」
大家好,我是蚝油菜花。当传统搜索引擎还在返回零散链接时,这个开源项目已经让AI学会了「阅读理解」!
你是否也受够了这些搜索困境------
- 🔍 查学术资料要手动对比10个网页
- 📊 分析市场数据得自己整理表格
- 🤖 问AI复杂问题总得到碎片化答案...
今天要介绍的 OpenDeepSearch ,正在重新定义信息检索!这个由Sentient AGI开源的搜索核弹:
- ✅ 语义理解开挂:用知识图谱解析网页内容,告别关键词匹配
- ✅ 多跳推理王:自动拆解「A对B的影响如何通过C体现」类复杂问题
- ✅ AI代理最佳拍档:与Hugging Face生态无缝集成,搜索结果直接喂给代码生成器
已有团队用它1小时完成竞品分析报告,接下来将揭秘这套开源搜索系统的技术架构!
🚀 快速阅读
OpenDeepSearch是专为AI代理优化的开源深度搜索工具。
- 功能:支持语义搜索和多跳查询,提供快速和专业两种模式。
- 技术:基于语义重排器和ReAct框架,整合网络爬取与推理能力。
OpenDeepSearch 是什么
OpenDeepSearch 是专为AI代理设计的开源深度搜索工具,通过语义理解优化传统关键词检索方式。该系统包含Open Search Tool和Open Reasoning Agent两大核心组件,支持从简单查询到复杂多跳问题的全场景搜索需求。
作为Hugging Face SmolAgents生态的优化组件,它采用模块化设计,允许自由切换不同的大语言模型作为推理引擎。测试显示其在处理需要跨文档验证的问题时,准确率比传统搜索引擎提升47%。
OpenDeepSearch 的主要功能
- 语义搜索:基于Qwen2-7B等模型实现语义级结果重排
- 双模式检索:快速模式响应时间<1秒,专业模式支持多轮验证
- 代理集成:直接输出结构化数据供AI代理进一步处理
- 数学计算:通过Wolfram Alpha API处理数值问题
- 动态爬取:实时抓取最新网页内容确保信息时效性
OpenDeepSearch 的技术原理
- 查询扩展:生成多个语义相关查询提升召回率
- 段落提取:从网页中智能抽取关键内容段落
- ReAct框架:结合思考-行动-观察循环解决复杂问题
- 代码执行:通过生成Python代码处理计算密集型任务
- 微服务架构:各组件可独立部署和扩展
如何运行 OpenDeepSearch
下面将带你了解如何安装、配置和运行 OpenDeepSearch,以充分利用其语义搜索和高级搜索模式。
安装
在开始使用 OpenDeepSearch 之前,请确保你的系统满足以下安装要求:
1. 安装依赖
运行以下命令以安装 OpenDeepSearch 的依赖项:
bash
pip install -e . # 你也可以使用:uv pip install -e .
pip install -r requirements.txt # 你也可以使用:uv pip install -r requirements.txt
注意 :必须安装 torch
,并且建议使用 uv
而非 pip
来简化安装过程。
配置
2. 获取 Serper.dev API 密钥
- 获取你的 API 密钥并将其设置为环境变量:
- serper.dev :serper.dev
bash
export SERPER_API_KEY='your-api-key-here'
3. 选择重新排序解决方案
OpenDeepSearch 支持以下重新排序选项:
-
快速启动 :使用
Jina AI
获取 API 密钥以快速上手。 -
自托管选项 :使用开源模型(如
Qwen2-7B-instruct
)设置Infinity Embeddings
服务器。 -
Jina AI :jina.ai/
-
Qwen2-7B-instruct 模型权重 :huggingface.co/Alibaba-NLP...
-
Infinity Embeddings :github.com/michaelfeil...
4. 配置 LiteLLM 提供程序
选择一个支持的提供程序(如 OpenAI、Anthropic 或 Google Gemini),并设置其 API 密钥:
bash
export <PROVIDER>_API_KEY='your-api-key-here' # 例如:OPENAI_API_KEY, ANTHROPIC_API_KEY
在初始化 OpenDeepSearch 时,指定你选择的模型:
python
search_agent = OpenDeepSearchTool(model_name="provider/model-name") # 例如:'openrouter/google/gemini-2.0-flash-001'
使用教程
以下是使用 OpenDeepSearch 的几种常见方式。
单独运行 OpenDeepSearch
以下代码展示了如何单独运行 OpenDeepSearch 工具:
python
from opendeepsearch import OpenDeepSearchTool
import os
# 设置环境变量
os.environ["SERPER_API_KEY"] = "your-serper-api-key-here"
os.environ["OPENROUTER_API_KEY"] = "your-openrouter-api-key-here"
os.environ["JINA_API_KEY"] = "your-jina-api-key-here"
# 初始化搜索工具
search_agent = OpenDeepSearchTool(
model_name="openrouter/google/gemini-2.0-flash-001",
reranker="jina" # 也可以设置为 "infinity"
)
# 执行搜索
query = "地球上最快的陆地动物是什么?"
result = search_agent.search(query)
print(result)
解释:
- 代码中使用了 OpenDeepSearchTool 并指定了模型(
openrouter/google/gemini-2.0-flash-001
)和重新排序工具(jina
)。 search
方法用于执行搜索,返回结果并打印。
使用 Gradio 演示界面
Gradio 提供了一个用户友好的界面,你可以通过以下命令运行:
bash
python gradio_demo.py
运行后,你将看到一个本地 Web 界面,可以交互式地测试不同搜索查询和模式。
集成 SmolAgents 和 LiteLLM
以下是将 OpenDeepSearch 与 SmolAgents 和 LiteLLM 集成的示例代码:
python
from opendeepsearch import OpenDeepSearchTool
from smolagents import CodeAgent, LiteLLMModel
import os
# 设置环境变量
os.environ["SERPER_API_KEY"] = "your-serper-api-key-here"
os.environ["OPENROUTER_API_KEY"] = "your-openrouter-api-key-here"
os.environ["JINA_API_KEY"] = "your-jina-api-key-here"
# 初始化搜索工具
search_agent = OpenDeepSearchTool(
model_name="openrouter/google/gemini-2.0-flash-001",
reranker="jina"
)
# 初始化 LiteLLM 模型
model = LiteLLMModel(
"openrouter/google/gemini-2.0-flash-001",
temperature=0.2
)
# 初始化 CodeAgent
code_agent = CodeAgent(tools=[search_agent], model=model)
# 执行复杂搜索
query = "猎豹以最快速度跑完亚历山大三世桥的长度需要多久?"
result = code_agent.run(query)
print(result)
解释:
- 代码中使用了
CodeAgent
,它集成了 OpenDeepSearch 作为工具。 run
方法接收复杂查询,并结合搜索工具和模型生成结果。
使用 ReAct 代理执行多工具操作
以下是结合搜索和数学工具的示例:
python
from opendeepsearch import OpenDeepSearchTool
from opendeepsearch.wolfram_tool import WolframAlphaTool
from opendeepsearch.prompts import REACT_PROMPT
from smolagents import LiteLLMModel, ToolCallingAgent, Tool
import os
# 设置环境变量
os.environ["SERPER_API_KEY"] = "your-serper-api-key-here"
os.environ["JINA_API_KEY"] = "your-jina-api-key-here"
os.environ["WOLFRAM_ALPHA_APP_ID"] = "your-wolfram-alpha-app-id-here"
os.environ["FIREWORKS_API_KEY"] = "your-fireworks-api-key-here"
# 初始化模型
model = LiteLLMModel(
"fireworks_ai/llama-v3p1-70b-instruct",
temperature=0.7
)
# 初始化搜索工具
search_agent = OpenDeepSearchTool(
model_name="fireworks_ai/llama-v3p1-70b-instruct",
reranker="jina"
)
# 初始化 Wolfram Alpha 工具
wolfram_tool = WolframAlphaTool(app_id=os.environ["WOLFRAM_ALPHA_APP_ID"])
# 初始化 ReAct 代理
react_agent = ToolCallingAgent(
tools=[search_agent, wolfram_tool],
model=model,
prompt_templates=REACT_PROMPT # 使用 REACT_PROMPT 作为系统提示
)
# 执行复杂查询
query = "罗马斗兽场与威尼斯里亚托桥之间的距离是多少米?"
result = react_agent.run(query)
print(result)
解释:
- 代码中使用了
ToolCallingAgent
,它结合了搜索和 Wolfram Alpha 工具。 run
方法能够处理复杂的多跳查询,并返回详细结果。
搜索模式
OpenDeepSearch 提供两种搜索模式,以适应不同的需求。
默认模式
- 使用基于 SERP 的交互,快速返回结果。
- 适合单跳查询,响应时间短。
- 适用于基础信息检索。
专业模式
- 包括全面的网页抓取和语义重新排序。
- 适合多跳查询和复杂搜索需求。
- 结果更详细,但处理时间稍长。
资源
- GitHub 仓库 :github.com/sentient-ag...
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦