Vane 接入外部 SearXNG 实例的 3 步完整集成指南
【免费下载链接】VaneVane is an AI-powered answering engine.项目地址: https://gitcode.com/GitHub_Trending/pe/Vane
把 Vane 接到你自己的 SearXNG 实例上,SearXNG 集成就算完成了——这个 AI 问答引擎背后的多搜索源聚合能力立刻就位,答案里附带的每条引用都归你管。
为什么值得换成自己的 SearXNG
- 🔍 一次查询聚合一众引擎,答案引用不再被单一来源带偏
- 🕵️ 搜索链路全程自托管,查询数据不经过第三方服务
- ⚡ 元搜索帮你过滤去重,来源回得快,答案有据可查
- 🛠️ 用哪些引擎、搜哪些类别,几行配置就能微调
动手前先备齐这 3 样
- 一个外部可访问的 SearXNG 实例,且已开启 JSON 输出格式
- Vane 的 Docker 镜像或源码:
git clone https://gitcode.com/GitHub_Trending/pe/Vane cd Vane- 实例的完整地址,形如
http://your-host:8080
如果你手上没有实例、又不想折腾,直接用默认镜像最省事——它内置了一个 SearXNG,跑在容器内部 8080 端口,整段外部集成可以直接跳过:
docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest主流程:3 步接通外部 SearXNG
第 1 步:把实例地址喂给 Vane
定位配置入口:src/lib/config/serverRegistry.ts 里的getSearxngURL(),它只从配置管理器读search.searxngURL这一个键,所有配置统一落在data/config.json(目录可用DATA_DIR环境变量改)。
所以"改什么"只有两条路:在 setup 界面填 "SearXNG URL" 字段,或者启动容器时注入环境变量。slim 镜像配自有 SearXNG 时,后者最省事:
docker run -d -p 3000:3000 \ -e SEARXNG_API_URL=http://your-searxng:8080 \ -v vane-data:/home/vane/data \ --name vane itzcrazykns1337/vane:slim-latest为什么这一行就够:启动时 src/lib/config/index.ts 会自动把SEARXNG_API_URL读进配置并写盘,后面不用再手工碰文件。
第 2 步:给 SearXNG 侧打开 JSON 输出
定位文件:仓库自带的参考配置searxng/settings.yml。在你实例的同名 settings.yml 里对齐两处:
search: formats: - html - json # 必须开启 engines: - name: wolframalpha disabled: false # 建议开启,Vane 会用它做计算类参考为什么:src/lib/searxng.ts的searchSearxng调的是/search?format=json,实例没开 json 格式的话,这个请求会被直接挡回来。
第 3 步:用一条 curl 验证集成通了
先直连 SearXNG 实例,确认它能吐出 JSON:
curl "http://your-host:8080/search?q=test&format=json"再打 Vane 的搜索 API:
curl -X POST http://localhost:3000/api/search \ -H 'Content-Type: application/json' \ -d '{"sources":["web"],"query":"What is Vane"}'响应里出现sources数组,说明 SearXNG 集成已经通了。
进阶:只搜你想搜的那部分
src/lib/searxng.ts里的SearxngSearchOptions有两个高频选项,改造搜索行为时顺手就能加上:
// 指定聚合哪些引擎,结果更干净 searchSearxng('AI 模型最新进展', { engines: ['google', 'wikipedia'], }); // 限定结果类别,比如只看技术内容 searchSearxng('Rust 异步运行时对比', { categories: ['it'], });效果很直接:论坛噪音少很多,返回的来源更贴近你要的那类信息。
踩坑速查
报错 "SearXNG search timed out"
症状:答案卡一会儿后抛超时错误。最可能的原因:实例不可达,或响应慢超过了代码里 10 秒的超时上限。30 秒检查:直接 curl 实例的/search?format=json,慢或不通就先修实例和网络。
结果为空,或返回 403/406
症状:搜索调用失败或结果为空。最可能的原因:实例没开 json 格式,或请求被 limiter 拦了。30 秒检查:确认实例配置里有formats: - json;浏览器手动加&format=json请求一次看返回什么。
setup 界面里搜索配置是空的
症状:Vane 日志提示搜索源不可用。最可能的原因:环境变量和界面都没设,config.json里search.searxngURL为空。30 秒检查:在 setup 界面 "SearXNG URL" 填入地址,或检查数据卷里data/config.json的search.searxngURL字段。
现在你能做什么
Vane 已经跑在你自己的 SearXNG 搜索源上,每条答案背后的引用不再是黑箱。
延伸阅读:
- 搜索核心实现:src/lib/searxng.ts
- 搜索 API 文档:docs/API/SEARCH.md
- 参考 SearXNG 配置:searxng/settings.yml
【免费下载链接】VaneVane is an AI-powered answering engine.项目地址: https://gitcode.com/GitHub_Trending/pe/Vane
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考