# farfalle **Repository Path**: ocisly/farfalle ## Basic Information - **Project Name**: farfalle - **Description**: 是一款开源的AI搜索引擎项目,类似Perplexity AI。 可使用本地或云 LLM 自托管。 特征: • 使用多个搜索提供商进行搜索(Tavily、Searxng) • 使用云模型回答问题(OpenAI/gpt4-o、OpenAI/gpt3.5-turbo、Groq/Llama3) • 使用本地模型(llama3、mistral、gemma、phi3)回答问题 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-11-16 - **Last Updated**: 2024-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Farfalle Open-source AI-powered search engine. (Perplexity Clone) Run local LLMs (**llama3**, **gemma**, **mistral**, **phi3**), custom LLMs through **LiteLLM**, or use cloud models (**Groq/Llama3**, **OpenAI/gpt4-o**) https://github.com/rashadphz/farfalle/assets/20783686/9527a8c9-a13b-4e53-9cda-a3ab28d671b2 Please feel free to contact me on [Twitter](https://twitter.com/rashadphz) or [create an issue](https://github.com/rashadphz/farfalle/issues/new) if you have any questions. ## 💻 Live Demo [farfalle.dev](https://farfalle.dev/) (Cloud models only) ## 📖 Overview - 🛠️ [Tech Stack](#%EF%B8%8F-tech-stack) - 🏃🏿‍♂️ [Getting Started](#%EF%B8%8F-getting-started) - 🚀 [Deploy](#-deploy) ## 🛣️ Roadmap - [x] Add support for local LLMs through Ollama - [x] Docker deployment setup - [x] Add support for [searxng](https://github.com/searxng/searxng). Eliminates the need for external dependencies. - [x] Create a pre-built Docker Image - [x] Add support for custom LLMs through LiteLLM - [x] Chat History - [x] Expert Search - [ ] Chat with local files ## 🛠️ Tech Stack - Frontend: [Next.js](https://nextjs.org/) - Backend: [FastAPI](https://fastapi.tiangolo.com/) - Search API: [SearXNG](https://github.com/searxng/searxng), [Tavily](https://tavily.com/), [Serper](https://serper.dev/), [Bing](https://www.microsoft.com/en-us/bing/apis/bing-web-search-api) - Logging: [Logfire](https://pydantic.dev/logfire) - Rate Limiting: [Redis](https://redis.io/) - Components: [shadcn/ui](https://ui.shadcn.com/) ## Features - Search with multiple search providers (Tavily, Searxng, Serper, Bing) - Answer questions with cloud models (OpenAI/gpt4-o, OpenAI/gpt3.5-turbo, Groq/Llama3) - Answer questions with local models (llama3, mistral, gemma, phi3) - Answer questions with any custom LLMs through [LiteLLM](https://litellm.vercel.app/docs/providers) - Search with an agent that plans and executes the search for better results ## 🏃🏿‍♂️ Getting Started Locally ### Prerequisites - [Docker](https://docs.docker.com/get-docker/) - [Ollama](https://ollama.com/download) (If running local models) - Download any of the supported models: **llama3**, **mistral**, **gemma**, **phi3** - Start ollama server `ollama serve` ### Get API Keys - [Tavily (Optional)](https://app.tavily.com/home) - [Serper (Optional)](https://serper.dev/dashboard) - [OpenAI (Optional)](https://platform.openai.com/api-keys) - [Bing (Optional)](https://www.microsoft.com/en-us/bing/apis/bing-web-search-api) - [Groq (Optional)](https://console.groq.com/keys) ### Quick Start: ``` git clone https://github.com/rashadphz/farfalle.git cd farfalle && cp .env-template .env ``` Modify .env with your API keys (Optional, not required if using Ollama) Start the app: ``` docker-compose -f docker-compose.dev.yaml up -d ``` Wait for the app to start then visit [http://localhost:3000](http://localhost:3000). For custom setup instructions, see [custom-setup-instructions.md](/custom-setup-instructions.md) ## 🚀 Deploy ### Backend [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/rashadphz/farfalle) After the backend is deployed, copy the web service URL to your clipboard. It should look something like: https://some-service-name.onrender.com. ### Frontend Use the copied backend URL in the `NEXT_PUBLIC_API_URL` environment variable when deploying with Vercel. [![Deploy with Vercel](https://vercel.com/button)](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) And you're done! 🥳 ## Use Farfalle as a Search Engine To use Farfalle as your default search engine, follow these steps: 1. Visit the settings of your browser 2. Go to 'Search Engines' 3. Create a new search engine entry using this URL: http://localhost:3000/?q=%s. 4. Add the search engine.