RustXNG - 面向本地 AI 智能体的自托管搜索与 grounding 引擎
RustXNG 是维护者 sahenjp 开发的自托管搜索与 grounding 引擎,采用 AGPL-3.0 许可,用一次请求同时返回排序结果与网页正文,供本地 AI 智能体引用来源作答。项目自述无需 API key、可运行在本机网络内,并带 SSRF 防护。
RustXNG 是一个自托管的网页搜索与 grounding 引擎,目标用户是运行本地 AI 智能体的开发者。据项目自述,它不需要 API key、不按席位计费,一次请求即可返回排序后的搜索结果以及对应页面的正文,让智能体基于来源作答而不是凭猜测生成。项目把自己定位为智能体的「检索层」:智能体反复搜索、阅读、判断,底层需要的不是又一个搜索界面,而是一个可被高频调用、能返回可引用文本的服务。
维护者与状态
RustXNG 由 sahenjp 维护,仓库创建于 2026-10-18,最后一次提交在 2026-11-01。最新正式版本为 v0.26.0,发布于 2026-11-01。截至 2026-11-02,仓库获得 411 个星标。项目采用 AGPL-3.0 许可证。
从时间线看,这是一个非常年轻的项目:创建到最新版本不足一个月,版本号已推进到 v0.26.0,迭代节奏较快。素材中的安装示例仍引用 v0.25.0 的下载地址与 tag,而 Docker 镜像自述从 v0.26.0 起发布,读者在选用具体版本时应以仓库 Releases 页面为准。
主要能力
以下能力均据项目 README 自述整理,未经本站独立验证:
- 搜索与正文一体化:一次请求返回排序结果,并可附带页面正文。README 称单次请求可从排名前 5 的页面取得约 32,000 个字符的文本,用于 grounding。
- 引擎覆盖:从 SearXNG 移植了 226 种引擎类型、352 条配置项,默认启用 180 个引擎。
- 排序策略:在原始引擎顺序之上做重排,考虑词项覆盖、权威站点、标识符匹配(如 RFC 编号),并进行去重。
- 容错机制:按引擎设置超时,失败后暂停并退避,长期无有效结果的引擎会被自动停用。
- 可选本地索引:附带
rustxng-index二进制,可抓取自有语料、用 BM25 排序并合并进搜索结果。项目说明该功能为实验性,默认关闭。 - 运维接口:提供
/healthz健康检查、OpenMetrics 格式的/metrics、响应缓存、图片与 favicon 代理、机器人限流,以及用于 sidecar 场景的RUSTXNG_IDLE_TIMEOUT。 - SSRF 防护:README 称只访问公网地址,以降低不可信 URL 带来的风险。
README 还给出了一组与商业搜索 API 的对比数字,并同时声明这些数字在多次运行间会有几个点的波动。由于对比数据涉及第三方产品,本文不转述具体数值,仅提示读者可查阅仓库内的基准文档自行判断。
使用入口
项目仓库地址为 sahenjp/RustXNG,安装方式与文档均以仓库内容为准。
据 README,安装有四条路径:从 Releases 下载对应平台的预编译二进制并放入 PATH;用 Cargo 从 git 仓库按 tag 安装,会同时得到服务端 rustxng 与可选的 rustxng-index;使用 Docker 镜像并映射 8888 端口;或克隆源码后执行 cargo build --release。从源码构建要求 Rust 1.85 或更新版本,除 C 工具链外不需要其他系统库。
启动后默认监听 127.0.0.1:8888,搜索接口形如:
curl "http://127.0.0.1:8888/search?q=tokio+runtime&format=json"
加上 include_raw_content=1 参数即可同时取回页面正文。响应结构与 SearXNG 兼容,结果项包含 title、url、content 与 raw_content 字段。README 还提到可通过挂载 settings.toml 覆盖默认配置。
许可与限制
许可证为 AGPL-3.0。README 说明本项目是 SearXNG 的移植,署名与移植范围记录在 NOTICE 文件中;若将修改后的版本作为网络服务运行,AGPL 第 13 条要求向使用者提供其源代码。
项目自述的已知限制包括:
- Google 在当前构建中不可用。README 解释其 WML 端点返回 403、HTML 端点依赖 JavaScript,而无头浏览器会被识别。
- 本地索引为实验性功能,默认关闭,不适合直接当作稳定组件依赖。
- 冷查询延迟高于缓存命中。README 称重复查询可命中缓存,而首次查询需要等待引擎返回。
- 版本引用不一致。安装示例中的下载地址与 Cargo tag 指向 v0.25.0,而事实表中的最新版本为 v0.26.0,部署前应核对实际可用的发布产物。
此外,项目创建时间很短,接口与配置仍可能随版本变化;README 建议贡献者在提交前运行 cargo fmt、cargo clippy、cargo test 并保持夜间基准测试通过,这也侧面说明其质量门槛依赖持续集成而非长期线上验证。