--- title: LangGraph RAG + RAGAS emoji: 🤖 colorFrom: blue colorTo: indigo sdk: streamlit sdk_version: 1.31.1 app_file: app.py pinned: false --- # LangGraph RAG + RAGAS Built this RAG system to experiment with LangGraph's workflow capabilities and RAGAS metrics. It's a straightforward implementation that lets you upload docs, ask questions, and get quality metrics for each response. ## What it does - Takes your docs and chunks them semantically (sentence-level similarity with greedy paragraph grouping) - Uses ChromaDB to store and retrieve relevant context - Spits out responses with RAGAS metrics: - Faithfulness: How well the response sticks to the context - Answer Relevancy: How relevant the answer is to the question - Context Precision: How precise the retrieved context is - Context Recall: How much relevant context was retrieved - Answer Correctness: How accurate the answer is - Simple Streamlit UI to interact with it all ## Getting it running 1. Clone the repo 2. Install the deps: ```bash pip install -r requirements.txt ``` 3. Toss your OpenAI key in `.env`: ``` OPENAI_API_KEY=your_key_here ``` ## Using it 1. Run the Streamlit app: ```bash streamlit run app.py ``` 2. Upload your docs in the sidebar 3. Fire away with questions 4. Check the metrics to see how well it's doing ## Under the hood - LangGraph handles the RAG pipeline (retrieve -> generate -> evaluate) - ChromaDB stores the vectors with cosine similarity - GPT-3.5-turbo generates responses - RAGAS evaluates response quality - Streamlit for the UI ## Heads up - Vectors get stored in `chroma_db` - Using semantic chunking with sentence-level similarity and paragraph grouping - Each response comes with its RAGAS metrics - Minimum chunk size is a single sentence, max is 1000 chars