智能搜索与深度研究:打造本地化 AI 驱动的高效信息采集平台

在信息爆炸的时代,简单地罗列大量网页链接已无法满足深度研究的需求。DeepRearch 项目应运而生,它基于 Python 实现,结合 AI 智能检索与多模型协同机制,帮助用户从海量数据中筛选出真正有价值的内容,并通过可视化流程,让研究过程透明、可控。

“提升搜索质量,胜过囫囵吞枣地堆砌数百个页面。”


目录

  1. 核心理念
  2. 主要特性
  3. 系统架构概览
  4. 外部服务集成
  5. 深度研究模式
  6. 环境准备与快速上手
  7. 关键配置详解
  8. API 使用示例
  9. Python 库依赖
  10. 效果展示
  11. 已知问题与解决思路
  12. 未来规划与贡献方式

核心理念

传统搜索引擎往往以数量为导向,将海量搜索结果简单堆叠,用户需要自行筛选、判断质量。而 DeepRearch 核心在于:

  • 质量优先:通过 AI 模型评估网页价值,只选取高相关度、高可用性的结果。
  • 流程透明:研究过程可视化,实时“直播”从关键词生成到结果总结的每一步,让用户随时掌控方向。
  • 多模型协同:不同阶段由不同大模型负责,从搜索关键词生成、结果评估,到内容压缩提取、最终总结,各司其职。

这种方法不仅提升了信息获取效率,也让研究结论更加精准、有深度。


主要特性

1. 完全本地部署

所有服务模块(除大模型 API)都可在本地运行,无需依赖外部在线服务。

  • 安全可控:敏感数据和搜索流程仅在本地网络中流转。
  • 可定制化:方便根据企业或个人需求进行功能扩展和二次开发。

2. 可视化研究过程

从初步规划、动态搜索、评估网页到迭代深化,整个流程可视化呈现。

用户可以实时看到 AI 如何:

  1. 拆分任务
  2. 调整搜索策略
  3. 选择最优结果

This transparency builds trust and helps users quickly定位问题节点。

3. 兼容 OpenAI 格式的 API 服务

基于 Flask 构建,提供标准的 /v1/chat/completions/v1/models 接口,用户可直接对接现有 LLM 客户端。

  • 流式响应:实时流回部分结果,提升交互体验。
  • 智能模式切换:根据请求内容自动判断使用“普通搜索”还是“深度研究”模式。

4. 深度研究模式

deep-research 模式在普通搜索的基础上迭代多轮搜索、评估、提取、规划,实现对复杂问题的深入探索。下一节将详细解读。

5. 搜索引擎与爬虫灵活集成

支持多种搜索引擎(SearXNG、Tavily)和网页爬虫(FireCrawl、Crawl4AI),并可在它们之间自动切换,保证高可用性和抓取效果。

6. 网页内容压缩

利用大模型对抓取到的网页进行智能压缩,去除冗余信息,提升后续处理的效率和上下文密度。

7. 多模型协同工作

  • 基础对话模型:处理用户交互、工具调度
  • 搜索关键词生成模型:智能拆解查询、优化检索词
  • 网页价值评估模型:对搜索结果进行相关性、价值打分
  • 内容压缩与提取模型:提炼网页核心观点
  • 结果总结模型:整合多源信息,形成连贯结论

这种流水线式协作确保各环节尽最大能力靠 AI 完成,最终呈现高质量的研究报告。


系统架构概览

下图展示了项目的主要组件与数据流向:

  1. 用户请求层

    • 接收查询,路由到对应的研究模式
  2. 搜索引擎模块

    • 支持 SearXNG/Tavily,生成原始搜索结果
  3. 爬虫服务

    • FireCrawl/Crawl4AI,抓取网页内容
  4. 模型调度层

    • 负责调用不同大模型,执行关键词生成、评估、压缩、提取、总结等任务
  5. 结果输出层

    • 将整理后的报告以 JSON/流式响应形式返回给客户端

该架构可水平扩展,用户可根据负载情况部署多实例。


外部服务集成

项目设计了两套二选一的外部服务方案,以提升灵活性和容错能力。

搜索引擎 API

  • SearXNG

    • 可自建(Docker 部署)或使用公共实例
    • JSON 格式输出,易于解析
  • Tavily

    • 商业 API,可通过 TAVILY_KEY 调用
    • 支持多种搜索结果排序策略

系统优先尝试 SearXNG,若请求失败则自动切换到 Tavily。

网页爬虫

  • FireCrawl

    • 自建或调用官方 API
    • 并发抓取性能优异
  • Crawl4AI

    • 作为备用方案,兼容 Docker 部署

同样遵循优先级策略,保证在主服务不可用时仍能继续抓取。


深度研究模式

“深度研究”不仅是一次搜索,而是一套迭代探索方案,主要流程:

  1. 规划初始查询

    • 由搜索关键词生成模型,将用户问题拆解成多个高效检索词
  2. 多轮搜索评估

    • 每轮调用搜索引擎、爬虫,抓取 top N 页面
    • 评估模型对每页内容进行价值打分,筛选高分页面
  3. 内容压缩与提取

    • 压缩模型去除冗余
    • 提取模型抽取页面核心观点
  4. 动态规划下一步

    • 基于已收集内容,调整检索策略
    • 新增或细化搜索关键词
  5. 终极总结

    • 综合所有提取内容,由总结模型撰写连贯报告

建议配置:

  • MAX_DEEPRESEARCH_RESULTS: 每轮处理页面数量(推荐 3)
  • MAX_STEPS_NUM: 最大迭代次数(推荐 12)

此模式可针对复杂主题(如技术调研、市场分析)进行深入探讨,避免一次性“过大”搜索导致无效信息泛滥。


环境准备与快速上手

1. 系统与 Python 环境

  • 操作系统:Linux/macOS/Windows
  • Python 版本:3.8 及以上
  • 虚拟环境:推荐使用 venv 或者 conda
# 克隆仓库
git clone https://your.repo/DeepRearch.git
cd DeepRearch

# 创建并激活虚拟环境
python -m venv venv
source venv/bin/activate    # macOS/Linux
venv\Scripts\activate       # Windows

# 安装依赖
pip install -r requirements.txt

2. 配置环境变量

复制模板并编辑 .env,填写必需的 API_KEY 和 URL:

cp .env.template .env

主要变量说明:

变量名 作用 示例
API_KEY 本项目 API 授权密钥 your_project_secret
SEARXNG_URL SearXNG 实例地址 http://localhost:8080
TAVILY_KEY Tavily 服务密钥 your_tavily_key
FIRECRAWL_API_URL / KEY FireCrawl 服务地址与密钥 https://api.firecrawl.dev
CRAWL4AI_API_URL Crawl4AI 服务地址 https://api.crawl4ai.com
BASE_CHAT_MODEL 基础对话模型名称 gpt-4o
SEARCH_KEYWORD_MODEL 关键词生成模型 gpt-4o-search
EVALUATE_MODEL 网页评估模型 gpt-4o-eval
COMPRESS_MODEL 内容压缩模型 gpt-4o-compress
SUMMARY_MODEL 总结生成模型 gpt-4o-summary
MAX_SEARCH_RESULTS 普通模式下单次最大处理页面数 10
MAX_DEEPRESEARCH_RESULTS 深度模式下单次最大处理页面数 3
MAX_STEPS_NUM 深度研究最大迭代轮数 12

配置完成后,即可一键测试并启动服务:

# 测试所有 API 是否正常
python main.py --test

# 启动服务
python main.py

默认监听 http://0.0.0.0:5000


API 使用示例

以下示例以常见的 OpenAI-兼容客户端为基础,演示如何调用普通搜索和深度研究接口。

普通搜索模式

curl -X POST http://localhost:5000/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "model": "gpt-4o",
        "messages": [{"role":"user","content":"Linux 下如何启用 RK3399 的 QEMU KVM 加速?"}]
      }'
  • 返回流式段落,包含搜索关键词、评估结果及简要回答。

深度研究模式

curl -X POST http://localhost:5000/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "model": "gpt-4o-deep-research",
        "messages": [{"role":"user","content":"请深入分析如何在 Linux 上对 RK3399 使用 QEMU 的 KVM 加速"}]
      }'
  • 将触发多轮迭代,最终输出包含:

    1. 关键词规划
    2. 各轮高质量网页精选
    3. 核心命令示例与配置方法
    4. 完整结论与注意事项

Python 库依赖

本项目所依赖的关键 Python 库列表如下,均在 requirements.txt 中声明:

  • Flask:轻量级 Web 框架
  • openai:OpenAI Python SDK
  • requests:HTTP 请求库
  • beautifulsoup4:HTML/XML 解析
  • PyMuPDF、python-docx、openpyxl:多种文档格式解析
  • python-dotenv:加载环境变量

安装方式:

pip install Flask openai requests beautifulsoup4 PyMuPDF python-docx openpyxl python-dotenv

效果展示

以下示例展示了 DeepRearch 在实际场景中的输出效果。

多模型参数汇总

用户 Prompt:

获取 gemini、claude、deepseek、glm、qwen 等对话模型参数及官方 API 价格,并用表格展示。

项目输出示例:

模型参数表格

冷门技术问题解答

用户 Prompt:

RK3399 在 Linux 下如何使用 QEMU 的 KVM 加速?

输出要点:

  1. 核心依赖 taskset 绑定大小核
  2. KVM 模块加载与权限配置
  3. 性能对比数据与注意事项
技术解答

已知问题与解决思路

虽然整体流程稳定,但在特定场景下仍有一些已知问题

  1. 过早结束研究

    • 原因:用户未在初始 Prompt 中指明“详细模式”
    • 解决:在请求中加入“深度研究”“详细研究”等关键词
  2. 客户端超时

    • 原因:深度模式轮次过多、抓取时间过长

    • 解决:

      • 调低 MAX_STEPS_NUM(如 ≤ 8)
      • 限制抓取并发数 CRAWL_THREAD_NUM
  3. 第三方服务不可用

    • 原因:SearXNG 或 FireCrawl 实例停机
    • 解决:检查环境变量配置,备用服务(Tavily/Crawl4AI)会自动切换

未来规划与贡献方式

🛠️ 未来规划

  • 并发优化:引入异步调度,提升大规模任务吞吐量
  • 插件化架构:支持更多外部服务(图像搜索、学术论文 API 等)
  • 智能问答:结合知识图谱,提供更丰富的上下文关联
  • 可视化 Dashboard:实时监控任务进度与模型调用情况

🤝 如何贡献

  1. Fork 仓库并创建分支 feature/xxx
  2. 提交 Pull Request,描述所改进功能或修复的问题
  3. 提交 Issue 讨论需求或报告 Bug

欢迎所有热爱 AI 驱动研究的同行共同完善 DeepRearch!