Vane 上手:Perplexica 改名后的自托管 AI 搜索,Docker 部署与边界

AI相关57秒前发布 一方
0 00

Vane 是一个可以自托管的 AI 搜索与问答界面。你提问,它先用 SearXNG 去网上检索,再抓取并筛选结果,最后由你指定的模型生成带引用的回答。项目原名 Perplexica,改名后旧仓库地址仍会跳转到 ItzCrazyKns/Vane。

它面向的场景很具体:希望把搜索记录、提问内容和模型调用都留在自己机器上的技术用户。截至 2026 年 11 月 5 日,仓库约有 3.8 万 Star、4200 余次 fork,采用 MIT 许可证,主要语言是 TypeScript,主体是 Next.js 应用。

它是什么:搜索、阅读、引用串成一条流水线

官方架构文档把一次问答拆成三步。系统先对问题做分类,判断是否需要联网检索、是否要弹出天气或股价小组件、以及如何把带上下文的追问改写成独立问题。

第二步并行执行:检索在后台跑,小组件同时计算。第三步由对话模型基于收集到的材料写答案,并按提示词要求标注引用编号,前端把这些编号渲染成可点击的来源链接。

几个接口的分工也写得很清楚。POST /api/chat 服务网页对话,POST /api/search 给程序调用,GET /api/providers 列出已配置的供应商和模型,图片与视频搜索分别走 /api/images 和 /api/videos。

除了默认的联网问答,它还能把搜索范围限定到具体域名,也支持直接上传 PDF、文本或图片后对着文件提问。图片和视频结果单独成列展示,不会混进正文的引用编号里。

Vane 项目 GitHub 仓库首页,展示项目简介与功能列表
截图来源:github.com(2026-11-05)

一条 Docker 命令跑起来,或换 slim 镜像接自己的 SearXNG

官方推荐 Docker 部署,整包镜像里同时包含 Vane 和 SearXNG,拉下来就能用。在装好 Docker 的机器上执行 docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest 即可。

启动后打开 http://localhost:3000,会进入初始化向导,在这里选模型供应商、填密钥、选对话模型和嵌入模型。命名卷 vane-data 保存配置、会话历史和上传文件,容器删掉重建,数据仍在。

已经有 SearXNG 实例的人可以换精简镜像,用环境变量指过去:docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:slim-latest。

这条路上有两个容易漏的前提。那个 SearXNG 实例必须在设置里开启 JSON 输出格式,并启用 Wolfram Alpha 引擎;少一项,检索可能直接返回空结果,报错信息也不会指出是这里的问题。

部署方式镜像额外条件适合谁
整包itzcrazykns1337/vane:latest无,SearXNG 已内置第一次安装、单机自用
精简itzcrazykns1337/vane:slim-latest自备 SearXNG,开 JSON 与 Wolfram Alpha已有 SearXNG、想统一检索口径
源码构建docker build -t vane .需要自行维护镜像要改代码或审计依赖

接模型:Ollama、云端 API 与必须配的嵌入模型

模型可以接两类:本地 Ollama,或 OpenAI、Anthropic、Google Gemini、Groq 这类云端服务,v1.12.1 又补了 LM Studio。初始化时可以只配一个,也可以同时配多个,之后在设置里切换。

如果 Vane 跑在 Docker 里而 Ollama 跑在宿主机,地址不能写 127.0.0.1。Windows 和 macOS 用 http://host.docker.internal:11434,Linux 要填宿主机的内网地址。

Linux 上还要让 Ollama 监听外部网卡。在 /etc/systemd/system/ollama.service 里加一行 Environment="OLLAMA_HOST=0.0.0.0:11434",再执行 systemctl daemon-reload 和 systemctl restart ollama。只改地址不改监听,连接一样会失败。

嵌入模型经常被忽略,但它在搜索 API 里是必填项。上传 PDF、文本或图片之后做语义检索靠的就是它,配对话模型时顺手把嵌入模型选好,否则文件问答这条路走不通。

云端供应商按各自价目计费,Vane 不代收也不加价。不过一次 quality 模式的问答可能触发多轮检索与长上下文,账单会比手写一次提示词高。先在 speed 模式下摸清单次成本,再决定要不要开放给整个团队。

三种模式、三类来源,以及老教程里的 Focus Mode

优化模式有三个取值:speed、balanced、quality,对应响应速度与检索深度的取舍。日常问一句事实用 speed,写调研提纲切 quality,等待时间会明显变长。

来源在 v1.12.0 之后固定为 web、academic、discussions 三类,可以单独开关,也能全部关掉,只对着上传的文件提问。这个改动是那轮重构的一部分:版本说明里写明项目移除了 LangChain,改成自研实现以便控制流式输出和各家供应商的差异。

所以网上不少教程还在讲 Web、Academic、YouTube、Reddit、Writing Assistant 这些 Focus Mode,界面里已经找不到对应入口。照旧教程去配,多数会白忙一场。

项目可选值说明
优化模式speed / balanced / quality速度与深度权衡,越靠后越慢
检索来源web / academic / discussions可叠加,也可全关只查上传文件
模型接入Ollama、OpenAI、Claude、Gemini、Groq、LM Studio同一实例可配多个并切换

边界与代价:没有登录、上游限流、引用不等于正确

README 的待办清单里还挂着身份验证。这意味着当前版本没有账号体系,任何能访问 3000 端口的人都能直接使用,能看到会话历史,也能在设置页看到你填的 API 密钥。第三方部署脚本也专门提示了这一点:Vane 没有登录,端口一旦可达就等于把密钥交出去。放到公网之前,至少套一层带认证的反向代理。

检索质量受 SearXNG 的上游影响。搜索引擎限流、返回验证码、或者目标站点拒绝抓取,都会让结果变薄;容器本身健康,问题出在外面。v1.12.2 加了基于 Chromium 的抓取器,兼容性比早期版本好一些,但没有消除这类外部依赖。

引用只保证答案附了来源链接,不保证每条结论都被原文支持。数字、日期、政策条款这类内容仍然要点开链接核对,尤其是模型把多个来源的观点混进一段的时候。

自托管也不等于离线。用云端模型时,问题和检索到的正文照样会发出去;只有模型与检索都在本地,数据才不外流。还要留意发布节奏:v1.12.2 发布于 2026 年 4 月 10 日,此后代码库只有零散提交,开放 issue 仍有 377 条。

数据都堆在一个命名卷里,备份就是把这个卷打包,或者挂到宿主目录交给现有的备份工具。升级前先导出一份,比出问题再翻日志省事。

Vane 适合谁用,和 Open WebUI、LiteLLM 怎么分工

三类人比较对口:需要把检索过程留痕的研究者、要给团队搭内部问答入口的开发者、想对比不同模型在同一批网页上表现的人。它给的是成品界面加 API,不是一堆需要自己拼的组件。

和 Open WebUI 比,后者重心在对话界面与多用户管理,联网检索要靠外部工具补;Vane 的重心就是检索加引用,代价是没有账号体系。和 LiteLLM 比,后者只解决多供应商统一入口,不管搜索。和 Crawl4AI 这类库比,Vane 开箱可用,代价是定制空间小。

要嵌进自己的系统,直接调 POST /api/search。请求体里给 chatModel 和 embeddingModel 各一个 providerId 与 key,providerId 从 /api/providers 拿。再填 query、sources 数组和 optimizationMode,就可以发起请求。

返回是 message 加 sources,每条 source 带 content 与 metadata,metadata 里有标题和 URL。把 stream 设成 true,响应变成 SSE,依次推送 init、sources、response 分片和 done。

第一次部署建议按这个顺序走:先用整包镜像跑通,确认能出带引用的答案;再换成本地模型,观察显存占用和首字延迟;最后才考虑接自建 SearXNG 或对外提供接口。更新时先 docker pull 再删旧容器重建,命名卷不动,配置和历史都会保留。

如果你的需求只是给模型加一个聊天界面,Open WebUI 的自托管方案更省事;如果是想把网页批量转成干净文本喂给模型,Crawl4AI 的抓取流程更直接;要在多个模型供应商之间做统一入口,可以看 LiteLLM 的接入方式。三条路和 Vane 不冲突,经常是搭配着用。

© 版权声明

相关文章