rag / README.md
Kareman's picture
feat(ContextAI)
14faba3
|
raw
history blame
3.01 kB
# ContextAI
A **FastAPI-based RAG application** that lets users upload documents (PDF/TXT) and ask questions.
Powered by **LangChain**, **ChromaDB**, and **LLMs** for context-aware answers.
πŸ“š FastAPI RAG App with LangChain, ChromaDB & Authentication
This project is a Retrieval-Augmented Generation (RAG) web application built with FastAPI.
It allows users to:
πŸ”‘ Sign up / Sign in (JWT-based authentication)
πŸ“‚ Upload PDF or text documents
🧠 Store document embeddings in ChromaDB (vector database)
πŸ’¬ Ask questions about uploaded documents
⚑ Get context-aware answers powered by LangChain + LLMs (via OpenRouter
)
πŸš€ Features
User authentication with access & refresh tokens
Secure file uploads (.pdf, .txt)
Automatic text chunking & embedding with HuggingFace models
Persistent vector store using ChromaDB
RAG pipeline with LangChain’s RetrievalQA
OpenRouter integration for running LLM queries
CORS configured for frontend integration
πŸ› οΈ Tech Stack
FastAPI
LangChain
ChromaDB
SQLModel
for user database
HuggingFace Embeddings
OpenRouter
(for LLM access)
πŸ“‚ Project Structure
app/
β”œβ”€β”€ main.py # FastAPI routes & entrypoint
β”œβ”€β”€ rag.py # RAG pipeline (embeddings, vector store, QA chain)
β”œβ”€β”€ models.py # User models & schemas
β”œβ”€β”€ auth.py # Auth logic (hashing, tokens, verification)
β”œβ”€β”€ database.py # SQLModel setup
└── config.py # Settings & constants
uploads/ # User uploaded files (ignored in Git)
chroma_db/ # Vector DB storage (ignored in Git)
βš™οΈ Setup & Installation
1️⃣ Clone the repo
git clone https://github.com/your-username/fastapi-rag-app.git
cd fastapi-rag-app
2️⃣ Create & activate virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
3️⃣ Install dependencies
pip install -r requirements.txt
4️⃣ Configure environment variables
Create a .env file in the project root (or copy from .env.example):
# OpenRouter
OPENROUTER=your_openrouter_api_key_here
# JWT secret
SECRET_KEY=your_super_secret_key
⚠️ Never commit your real .env file.
▢️ Run the App
Start the FastAPI server:
uvicorn app.main:app --reload
The API will be available at:
πŸ‘‰ http://127.0.0.1:8000
Interactive API docs:
πŸ‘‰ http://127.0.0.1:8000/docs
πŸ”‘ Authentication Flow
Signup β†’ POST /signup with username & password
Signin β†’ POST /signin to receive access_token & refresh_token
Use Authorization: Bearer <access_token> for protected endpoints
πŸ“‚ Document Workflow
User logs in
Upload document β†’ POST /upload (PDF or TXT)
Ask a question β†’ GET /ask?q=your+question
The system searches your embeddings in ChromaDB and queries the LLM with context
πŸ“ Notes
uploads/ and chroma_db/ are auto-created at runtime if they don’t exist.
Both folders are ignored by Git (runtime data only).
Contributions & pull requests are welcome πŸš€