Perplexica:开源的 AI 搜索引擎,Perplexity 的自托管平替
📖 简介
📝 详细介绍
Perplexica:把 Perplexity 拆开,用 Docker 装回自己服务器
Perplexity 这类 AI 搜索工具确实好用,但每次搜索都要把 query 发给第三方服务,还要忍受响应慢和配额限制。Perplexica 解决了这个问题——它是一个完全自托管的 AI 搜索引擎,把大模型检索增强生成(RAG)和实时网络搜索结合,部署在自己服务器上,数据不外流,也没有 token 焦虑。它不是一个 demo 级的玩具,而是生产可用的工具。
| 指标 | 数据 |
|---|---|
| Stars | 9.8k |
| 主要语言 | TypeScript |
| 开源协议 | MIT |
| 最近更新 | 2024-11-20 |
| Contributors | 42 |
项目背景
开发者 ItzCrazyKns 在 2024 年 5 月启动了这个项目。他的痛点很直接:Perplexity 的 AI 搜索体验虽好,但用户无法定制 —— 不能选择自己的 LLM,不能用本地模型,数据全部经过服务器。Perplexica 的目标是做一个 开源、可自托管、支持本地 LLM 的 AI 搜索引擎,且不牺牲搜索质量。项目推出后很快获得社区认可,目前 Stars 接近 10k,这在 AI 搜索赛道里算是一匹黑马。
核心功能解析
1. 多模式搜索:不同任务不同检索策略
Perplexica 内置了多种搜索模式(类似 Perplexity 的 Focus 功能),每种模式对应不同的提示词模板和搜索策略:
- All:综合模式,在所有来源中搜索,类似普通搜索引擎
- Academic:针对学术论文,优先抓取 arXiv 和学术数据库
- Reddit:从讨论帖中检索,适合社区经验类问题
- Video:搜索 YouTube 并总结视频字幕
切换模式本质上是更换了聚合提示词,这意味着你可以自己扩展新模式。这个设计很干净,把系统的可变性收敛到了配置文件里,不需要改主逻辑。
2. 自选 LLM 后端:从 OpenAI 到本地模型
通过集成 LiteLLM(一个统一 LLM API 的网关),Perplexica 支持切换任意模型提供商:
# config.toml 中的 LLM 配置示例
[llm]
provider = "ollama" # 可选 openai / anthropic / ollama
model = "llama3.1:8b" # 本地模型
endpoint = "http://localhost:11434"
如果你不想把数据发给任何商业 API,配置为本地 Ollama 模型即可实现 完全私有的搜索。这个细节让 Perplexica 跟那些"开源但依赖云端 API"的竞品拉开差距。
3. 持续的会话记忆
Perplexica 给每个聊天会话保存了历史记录,上下文管理由后端处理。这意味着你可以问"刚才那个问题的来源是什么?",它知道你在说什么。作为 AI 搜索工具,没有记忆的搜索引擎交互性是很差的,这个功能属于基本款,但实现得扎实。
快速上手
官方提供了多阶段构建的 Dockerfile,而且镜像体积控制得不错,部署走通了就不会有意外风险。核心启动步骤只有两条命令:
# 1. 克隆仓库并进入目录
git clone https://github.com/ItzCrazyKns/Perplexica && cd Perplexica
# 2. 用 Docker Compose 启动(默认带上 SearXNG 搜索后端)
docker compose up -d
首次启动需要等待容器拉取 SearXNG(用于无 API 的常规网页搜索)。启动后访问 http://localhost:3000 即可。如果要用非默认的 LLM,编辑 config.toml 后重启容器即可生效。
技术亮点
架构:SearXNG + RAG 两层检索
Perplexica 没有自己爬虫,而是把 SearXNG(一个开源元搜索引擎)作为后端。这样做的好处是:不需要处理搜索 API 的配额和封禁,而是聚合了 Google/Bing/DuckDuckGo 等 70+ 来源的结果。对自托管项目来说,这是聪明的取舍——把非核心的复杂系统外包给成熟组件。
查询重写与结果重排
系统中有一个关键环节:用户查询不是直接发给搜索后端,而是先通过 LLM 进行重写(rewrite),提炼出更精确的搜索关键词。获取结果后,还有一个重排(re-rank)阶段,把相关结果按与用户原始意图的匹配度排序。这一段链路是有实际价值的——直接搜索多义词往往得到不相关的信息,经过 LLM 重写后能提升命中率。
嵌入与向量库
Perplexica 用 ollama 或 OpenAI 的 embedding 接口生成查询向量,再在本地向量数据库(默认是 LanceDB)中做语义相似度匹配。这样可以实现跨文档的主题聚类和引用定位,不只是靠关键词匹配。这套设计不算前沿,但对一个自托管项目来说,工程上是完整且可控的。
同类对比
| 特性 | Perplexica | Perplexity (SaaS) | SearXNG | LibreChat |
|---|---|---|---|---|
| AI 搜索 | ✅ 原生支持 | ✅ 核心功能 | ❌ 仅聚合结果 | ⚠️ 需自行组合 |
| 本地 LLM 支持 | ✅ Ollama 直接集成 | ❌ 不可用 | N/A | ✅ 支持 |
| 自托管 | ✅ Docker 一键 | ❌ | ✅ | ✅ |
| 数据隐私 | ✅ 流量可控 | ❌ 全部走云端 | ✅ | ✅ |
| 部署复杂度 | 中(需要 Docker + 模型配置) | 零 | 低 | 中 |
| 查询重写/重排 | ✅ 内置 | ✅ 内置 | ❌ | ❌ |
| 扩展性 | 高(MIT 开源可改) | 无 | 插件化 | 高,但搜索偏弱 |
简单来说,SearXNG 只是无 AI 的搜索代理,而 LibreChat 更多是聊天前端,搜索能力需要自己接。Perplexica 是两者之间的缝合方案,而且缝合得很自然。
总结
Perplexica 适合以下人群:需要 AI 搜索能力但无法信任云端服务的团队、有本地模型资源并想省 API 费用的开发者、以及对搜索流程有自定义需求的技术用户。
一句话:Perplexica 是 Perplexity 的开源自我替代品,架构选型务实,部署简单,生产可用;如果你需要一个完全掌控的 AI 搜索引擎,这是目前最接近"装上就能用"的选择。
AI 项目推荐
智能体- 标签
- #AI搜索 #知识库 #RAG #开源
- 浏览
- 👁️ 16
- 发布日期
- 2026-08-30