Skip to content

Web search: 国内私有化部署需要无 key 可用方案 (SearxNG + Bing API + Tavily provider 评估) #1800

@earayu

Description

@earayu

Context

当前 ApeRAG web search 实现走 aperag/domains/web_access/search/ 双 provider chain:

  1. Jina (优先) — 用户在 model-platform 配 provider_type=jinahttps://s.jina.ai/ 调用
  2. DuckDuckGo (fallback) — 默认 fallback,无需 key

国内私有化部署场景下两条路都不理想:

  • DuckDuckGo:GFW 屏蔽,国内 deploy 上 timeout / connection-reset 频繁
  • Jina:可用但需用户自配 API key + 单次延迟 ~5-9s(且需用户自己注册 jina.ai 账号)

→ 默认部署后用户开箱体验是「web search 不可用」,需要用户额外配置 key 才能用。

Market landscape (主流 chatbot web search 实现方式)

类别 代表产品 search backend ApeRAG 能否复制
商业 SaaS 内嵌付费 key ChatGPT / Claude.ai / Perplexity / Gemini Bing API / 自有 crawler / Google ❌ 私有化部署不能 bake key
国内大厂自家搜索基建 百度文心 / 字节豆包 / 腾讯元宝 / 阿里通义 / 月之暗面 / 智谱 各家自营 search ❌ ApeRAG 无自有基建
自部署开源 meta-search (n/a) SearxNG 聚合 Google/Bing/Baidu/搜狗等 最适合 ApeRAG 私有化部署
多 paid SaaS 兜底 (n/a) Bing API + Tavily + Brave + SerpAPI ✅ 但需用户配 1+ key

Proposal: SearxNG + 多 search provider 矩阵

核心改动

新增 3 个 search provider 选项,让 deploy 选最贴合自己网络环境的:

1. SearxNG (推荐 P0) — 开源 meta-search,无 key,docker 自部署

  • 仓库: https://github.com/searxng/searxng
  • 用户 deploy: docker-compose.yaml 加一个 searxng container(参考社区 docker-compose)
  • ApeRAG 加 aperag/domains/web_access/search/providers/searxng_search_provider.py
  • 配置: SEARXNG_BASE_URL=http://searxng:8080.env 一行)
  • 国内可用 (SearxNG backend 配置中可启用 Baidu / 搜狗 / 必应国内版)

2. Tavily (推荐 P1) — 专为 AI agent 设计,免费 1000/mo

  • API: https://tavily.com/
  • 1 个 API key 即可,国际可用,对比 Jina 配置更简单(不需要分别配 key + bot)
  • ApeRAG 加 aperag/domains/web_access/search/providers/tavily_search_provider.py
  • 用户在 model-platform 配 provider_type=tavily

3. Bing Search API (P2) — Microsoft Cognitive Services

Provider 优先级链 (per user model-platform 配置)

类似现有 Jina 优先 → DuckDuckGo fallback 模式,扩展为:

SearxNG (if SEARXNG_BASE_URL set)
  → Bing API (if user configured)
  → Tavily (if user configured)  
  → Jina (if user configured)
  → DuckDuckGo (free, public)

实施层在 _search_with_jina_fallback 改名 _search_with_provider_chain + 按优先级链走。

配套改动

  • envs/env.templateSEARXNG_BASE_URL= 默认空 + 注释解释如何启 SearxNG container
  • aperag/domains/web_access/README-zh.md 加 SearxNG 自部署 guide
  • model-platform UI 加 Tavily / Bing 作可选 provider type
  • 默认 deploy 体验:docker-compose up 启 ApeRAG + SearxNG → 国内开箱可用 web search

Acceptance criteria

  • aperag/domains/web_access/search/providers/searxng_search_provider.py 实现 + 单测
  • (可选 P1) aperag/domains/web_access/search/providers/tavily_search_provider.py
  • (可选 P2) aperag/domains/web_access/search/providers/bing_search_provider.py
  • _search_with_provider_chain 替代 _search_with_jina_fallback,按优先级走
  • envs/env.templateSEARXNG_BASE_URL env var
  • docker-compose.yaml 增加 SearxNG service (optional profile)
  • README-zh.md + 国内部署 guide 更新

Out of scope

  • 自建中文搜索 crawler(需要法务 / 反爬 / robots.txt 评估,单独 issue)
  • 与厂商谈 Bing API 批发授权(私有化部署不适用)

Related

  • Wave 10/11 close-out: web search 失败诊断(msg=29ef1397 thread)
  • Jina parser bug fix: PR pending Bryce hot-fix(X-Return-Format: jsonAccept: application/json,独立 PR)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions