X

RAG-SaaS

Information

RAG SaaS

Ship RAG solutions quickly

RAG-SaaS Logo

A end to end SaaS Solution for Retrieval-Augmented Generation (RAG)
and Agentic based applications.

Features · Tech Stack · Getting Started · Deployment · Roadmap

GitHub Stars GitHub Forks GitHub Issues GitHub Pull Requests

Features Demo Video
  • Basic Authentication
  • Chat History Tracking
  • Multiple RAG Variations
    • Basic RAG
    • Two additional configurations
  • ‍ Admin Dashboard
    • Data Ingestion
    • Monitoring
    • ️ Observability
    • RAG Configuration Switching
  • ️ S3 Integration for PDF uploads
  • Easy Deployment with Docker / Docker Compose
![f937cd54-217f-4106-81b6-56636a17306f (1)](https://github.com/user-attachments/assets/2f2c75fa-a3f0-4311-9a43-554d8cb3e04e)
## Tech Stack - LlamaIndex: For building and orchestrating RAG pipelines - MongoDB: Used as both a normal database and a vector database - FastAPI: Backend API framework - ️ Next.js: Frontend framework - Qdrant: Vector database for efficient similarity search - ️ Arize Phoenix: Observability Platform to monitor/evaluate your RAG system ## Why RAG-SaaS? Setting up reliable RAG systems can be time-consuming and complex. RAG-SaaS allows developers to focus on fine-tuning and developing their RAG pipeline rather than worrying about packaging it into a usable application. Built on top of [create-llama](https://www.llamaindex.ai/blog/create-llama-a-command-line-tool-to-generate-llamaindex-apps-8f7683021191) by LlamaIndex, RAG-SaaS provides a solid foundation for your RAG-based projects. ## Getting Started 1. Clone the repository: \`\`\`bash git clone https://github.com/adithya-s-k/RAG-SaaS.git cd RAG-SaaS \`\`\` ## Docker Compose Deployment ### Environment Variables
How to Set up .env ### Environment Variables To properly configure and run RAG-SaaS, you need to set up several environment variables. These are divided into three main sections: Frontend, Backend, and Docker Compose. Here's a detailed explanation of each: #### Frontend Environment (./frontend/.env.local) - \`NEXT_PUBLIC_SERVER_URL\`: (Compulsory) The endpoint URL of your FastAPI server. - \`NEXT_PUBLIC_CHAT_API\`: (Compulsory) Derived from NEXT_SERVER_URL, typically set to \`$\{NEXT_PUBLIC_SERVER_URL\}/api/chat\`. #### Backend Environment (./backend/.env) 1. Model Configuration: - \`MODEL_PROVIDER\`: (Compulsory) The AI model provider (e.g., 'openai'). - \`MODEL\`: (Compulsory) The name of the LLM model to use. - \`EMBEDDING_MODEL\`: (Compulsory) The name of the embedding model. - \`EMBEDDING_DIM\`: (Compulsory) The dimensionality of the embedding model. 2. OpenAI Configuration: - \`OPENAI_API_KEY\`: (Compulsory) Your OpenAI API key. 3. Application Settings: - \`CONVERSATION_STARTERS\`: (Compulsory) A list of starter questions for users. - \`SYSTEM_PROMPT\`: (Compulsory) The system prompt for the AI model. - \`SYSTEM_CITATION_PROMPT\`: (Optional) Additional prompt for citation. - \`APP_HOST\`: (Compulsory) The host address for the backend (default: '0.0.0.0'). - \`APP_PORT\`: (Compulsory) The port for the backend (default: 8000). 4. Database Configuration: - \`MONGODB_URI\`: (Compulsory) The MongoDB connection URI. - \`MONGODB_NAME\`: (Compulsory) The MongoDB database name (default: 'RAGSAAS'). - \`QDRANT_URL\`: (Compulsory) The URL for the Qdrant server. - \`QDRANT_COLLECTION\`: (Compulsory) The Qdrant collection name. - \`QDRANT_API_KEY\`: (Optional) API key for Qdrant authentication. 5. Authentication: - \`JWT_SECRET_KEY\`: (Compulsory) Secret key for signing JWT tokens. - \`JWT_REFRESH_SECRET_KEY\`: (Compulsory) Secret key for signing JWT refresh tokens. - \`ADMIN_EMAIL\`: (Compulsory) Administrator email for application login. - \`ADMIN_PASSWORD\`: (Compulsory) Administrator password for application login. 6. AWS S3 Configuration (Optional): - \`AWS_ACCESS_KEY_ID\`: AWS Access Key ID. - \`AWS_SECRET_ACCESS_KEY\`: AWS Secret Access Key. - \`AWS_REGION\`: AWS Region for your services. - \`BUCKET_NAME\`: The name of the S3 bucket to use. 7. Observability: - \`ARIZE_PHOENIX_ENDPOINT\`: (Optional) Endpoint for Arize Phoenix observability. #### S3 Integration To enable S3 integration for PDF uploads/Ingestion: 1. Set the following environment variables in your \`.env\` file: \`\`\` AWS_ACCESS_KEY_ID=your_access_key AWS_SECRET_ACCESS_KEY=your_secret_key AWS_REGION=bucket_region BUCKET_NAME=your_bucket_name \`\`\` ### Docker Compose Env (./env) \`\`\` backend: build: context: ./backend dockerfile: Dockerfile image: ragsaas/backend:latest container_name: backend ports: - '8000:8000' environment: # MongoDB Configuration MONGODB_NAME: RAGSAAS MONGODB_URI: mongodb://admin:password@mongodb:27017/ # Qdrant Configuration QDRANT_COLLECTION: default QDRANT_URL: http://qdrant:6333 # QDRANT_API_KEY: # OPENAI_API_KEY is compulsory OPENAI_API_KEY: # Backend Application Configuration MODEL_PROVIDER: openai MODEL: gpt-4o-mini EMBEDDING_MODEL: text-embedding-3-small EMBEDDING_DIM: 1536 FILESERVER_URL_PREFIX: http://backend:8000/api/files SYSTEM_PROMPT: 'You are a helpful assistant who helps users with their questions.' APP_HOST: 0.0.0.0 APP_PORT: 8000 JWT_SECRET_KEY: JWT_REFRESH_SECRET_KEY: ARIZE_PHOENIX_ENDPOINT: http://arizephoenix:4317 \`\`\`
For Docker Compose deployment, use: \`\`\`bash docker compose up -d \`\`\` Pull down the containers \`\`\`bash docker compose down \`\`\` ### Development Mode To run the project in development mode, follow these steps: 1. **Start the Next.js Frontend:** Navigate to the \`frontend\` directory and install the required dependencies. Then, run the development server: \`\`\`bash cd frontend npm install npm run dev \`\`\` 2. **Set Up the Vector Database (Qdrant), Database (MongoDB), and Observability Platform (Arize Phoenix):** You can either self-host these services using Docker or use hosted solutions. **Self-Hosted Options:** - Qdrant: \`\`\`bash docker pull qdrant/qdrant \`\`\` - MongoDB: \`\`\`bash docker pull mongo \`\`\` - Arize Phoenix: \`\`\`bash docker pull arizephoenix/phoenix \`\`\` **Hosted Options:** - Qdrant Cloud: [Qdrant Cloud](https://cloud.qdrant.io/) - MongoDB Atlas: [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) - Arize Phoenix: [Arize Phoenix](https://app.phoenix.arize.com/) 3. **Start the FastAPI Server:** Navigate to the \`backend\` directory and set up the Python environment. You can use either Conda or Python's built-in \`venv\`: \`\`\`bash cd backend \`\`\` **Using Conda:** \`\`\`bash conda create -n ragsaas-venv python=3.11 conda activate ragsaas-venv \`\`\` **Using Python's \`venv\`:** \`\`\`bash python -m venv ragsaas-venv \ragsaas-venv\Scripts\activate # On Windows source ragsaas-venv/bin/activate # On macOS/Linux \`\`\` Install the required dependencies and run the server: \`\`\`bash pip install -e . python main.py \`\`\` --- ## Roadmap - [x] add support to store ingested data in AWS S3 - [x] Add Docker compose for each set up - [x] Implement Observability - [ ] Improve authentication system - [ ] Integrate OmniParse API for efficient Data ingestion - [ ] Provide more control to Admin over RAG configuration - [ ] Implement Advanced and Agentic RAG ## Contributing We welcome contributions to RAG-SaaS! Please see our [CONTRIBUTING.md](CONTRIBUTING.md) for more details on how to get started. ## Licensing This project is available under a dual license: - Apache License 2.0 for students, developers, and individuals - GNU General Public License v3.0 for companies and commercial use See the [LICENSING.md](LICENSING.md) file for more details. ## Acknowledgements This project is built on the following frameworks, technologies and tools: - [LlamaIndex](https://www.llamaindex.ai/) for the create-llama tool and RAG orchestration - [FastAPI](https://fastapi.tiangolo.com/) - [Next.js](https://nextjs.org/) - [MongoDB](https://www.mongodb.com/) - [Qdrant](https://qdrant.tech/) - [Arize Phoenix](https://docs.arize.com/phoenix) ## Contact & Support ### Bug Reports If you encounter any issues or bugs, please report them in the [Issues](https://github.com/adithya-s-k/RAG-SaaS/issues) tab of our GitHub repository. ### Commercial Use & Custom Solutions For inquiries regarding: - Commercial licensing - Custom modifications - Managed deployment - Specialized integrations Please contact: adithyaskolavi@gmail.com We're here to help tailor RAG-SaaS to your specific needs and ensure you get the most out of our solution. ## Star History

Star History Chart

Prompts

Reviews

Tags

Write Your Review

Detailed Ratings

ALL
Correctness
Helpfulness
Interesting
Upload Pictures and Videos

Name
Size
Type
Download
Last Modified
  • Community

Add Discussion

Upload Pictures and Videos