先从一个直接的问题说起:想要一个完全由自己掌控的AI搜索引擎,又不想依赖任何第三方服务,这真的可行吗?
答案是肯定的。今天要介绍的Farfalle,正是一个实现这一目标的开源项目。本质上,它是Perplexity的克隆版本,但核心亮点在于——你可以选择使用本地大模型来驱动搜索与问答,也可以接入云端接口。灵活性相当高,既适合注重隐私的开发者,也适合需要定制化搜索能力的企业团队。
简单来说,Farfalle 提供了一个自托管的搜索解决方案。在本地模型方面,它支持 llama3、mistral、gemma、phi3 等主流选择;云端模型则可以接入 Groq/Llama3 或 OpenAI/gpt4-o。这意味着,无论你是注重隐私的独立开发者,还是需要深度定制搜索能力的企业,都能找到最适合自己的搭配方式。
项目特点
使用场景
哪些场景需要这样一款工具?坦白说,如果只是日常查资料,直接使用现有搜索引擎即可。但如果你希望搜索体验能被AI增强——比如结合上下文理解问题、自动汇总多源信息,或者想把搜索能力嵌入到自己的产品中——那么 Farfalle 就是一个非常合适的底座。个人开发者可以拿它做实验,企业可以基于它构建内部知识库的搜索入口,教育机构也能利用它搭建定制化的学习资源检索系统。
技术栈
整个项目的技术选型非常现代且透明:
- 前端:Next.js
- 后端:FastAPI
- 搜索 API:SearXNG 或 Tavily
- 日志记录:Logfire
- 速率限制:Redis
- 组件库:shadcn/ui
功能特点
- 支持多个搜索提供商(Tavily、Searxng),可根据需要灵活切换
- 云模型回答:OpenAI/gpt4-o、OpenAI/gpt3.5-turbo、Groq/Llama3 都可以使用
- 本地模型回答:llama3、mistral、gemma、phi3 也完全支持
使用方法
先决条件
- 安装 Docker
- 如果要运行本地模型,还需要安装 Ollama 并下载对应模型
获取 API 密钥
- Tavily(可选)
- OpenAI(可选)
- Groq(可选)
安装步骤
- 克隆仓库
git clone git@github.com:rashadphz/farfalle.git
cd farfalle
- 添加环境变量
创建 .env 文件,并添加以下变量:
- 如果使用 Tavily(需要 API 密钥):
TA VILY_API_KEY=...
SEARCH_PROVIDER=ta vily
- 如果使用 Searxng(不需要 API 密钥):
SEARCH_PROVIDER=searxng
- 可选云模型 API 密钥:
OPENAI_API_KEY=...
GROQ_API_KEY=...
- 运行容器
用 Docker Compose 启动服务:
docker-compose -f docker-compose.dev.yaml up -d
然后在浏览器中访问 http://localhost:3000 查看应用。
部署
- 后端部署
使用 Render 部署后端:Deploy to Render
- 前端部署
使用 Vercel 部署前端,并将后端的 URL 设为 NEXT_PUBLIC_API_URL 环境变量:Deploy with Vercel
注:本文内容仅供参考,具体项目特性请参照官方 GitHub 页面的最新说明。
资源列表
[1] 项目地址: https://github.com/rashadphz/farfalle
[2] Render后端部署: https://render.com/deploy?repo=https://github.com/rashadphz/farfalle
[3] Vercel前端部署: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Frashadphz%2Ffarfalle&env=NEXT_PUBLIC_API_URL&envDescription=URL%20for%20your%20backend%20application.%20For%20backends%20deployed%20with%20Render%2C%20the%20URL%20will%20look%20like%20this%3A%20https%3A%2F%2F%5Bsome-hostname%5D.onrender.com&root-directory=src%2Ffrontend
