mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-06-16 14:58:29 +00:00
3.5 KiB
3.5 KiB
GitHub Copilot Instructions for Perplexica
This file provides context and guidance for GitHub Copilot when working with the Perplexica codebase.
Project Overview
Perplexica is an open-source AI-powered search engine that uses advanced machine learning to provide intelligent search results. It combines web search capabilities with LLM-based processing to understand and answer user questions, similar to Perplexity AI but fully open source.
Key Components
- Frontend: Next.js application with React components (in
/src/components
and/src/app
) - Backend Logic: Node.js backend with API routes (in
/src/app/api
) and library code (in/src/lib
) - Search Engine: Uses SearXNG as a metadata search engine
- LLM Integration: Supports multiple models including OpenAI, Anthropic, Groq, Ollama (local models)
- Database: SQLite database managed with Drizzle ORM
Architecture
The system works through these main steps:
- User submits a query
- The system determines if web search is needed
- If needed, it searches the web using SearXNG
- Results are ranked using embedding-based similarity search
- LLMs are used to generate a comprehensive response with cited sources
Key Technologies
- Frontend: React, Next.js, Tailwind CSS
- Backend: Node.js
- Database: SQLite with Drizzle ORM
- AI/ML: LangChain for orchestration, various LLM providers
- Search: SearXNG integration
- Embedding Models: For re-ranking search results
Project Structure
/src/app
: Next.js app directory with page components and API routes/src/components
: Reusable UI components/src/lib
: Backend functionality/lib/search
: Search functionality and meta search agent/lib/db
: Database schema and operations/lib/providers
: LLM and embedding model integrations/lib/prompts
: Prompt templates for LLMs/lib/chains
: LangChain chains for various operations
Focus Modes
Perplexica supports multiple specialized search modes:
- All Mode: General web search
- Local Research Mode: Research and interact with local files with citations
- Chat Mode: Have a creative conversation
- Academic Search Mode: For academic research
- YouTube Search Mode: For video content
- Wolfram Alpha Search Mode: For calculations and data analysis
- Reddit Search Mode: For community discussions
Development Workflow
- Use
npm run dev
for local development - Format code with
npm run format:write
before committing - Database migrations:
npm run db:push
- Build for production:
npm run build
- Start production server:
npm run start
Configuration
The application uses a config.toml
file (created from sample.config.toml
) for configuration, including:
- API keys for various LLM providers
- Database settings
- Search engine configuration
- Similarity measure settings
Common Tasks
When working on this codebase, you might need to:
- Add new API endpoints in
/src/app/api
- Modify UI components in
/src/components
- Extend search functionality in
/src/lib/search
- Add new LLM providers in
/src/lib/providers
- Update database schema in
/src/lib/db/schema.ts
- Create new prompt templates in
/src/lib/prompts
- Build new chains in
/src/lib/chains
AI Behavior
- Avoid conciliatory language
- It is not necessary to apologize
- If you don't know the answer, ask for clarification
- Do not add additional packages or dependencies unless explicitly requested
- Only make changes to the code that are relevant to the task at hand