[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72070":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":8,"rankLanguage":8,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":8,"pushedAt":8,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},72070,"production-agentic-rag-course","jamwithai\u002Fproduction-agentic-rag-course","jamwithai",null,"Python",6831,1531,67,8,0,58,673,972,174,112.56,"MIT License",false,"main",[],"2026-06-12 04:01:03","# The Mother of AI Project\n## Phase 1 RAG Systems: arXiv Paper Curator\n\n\u003Cdiv align=\"center\">\n  \u003Ch3>A Learner-Focused Journey into Production RAG Systems\u003C\u002Fh3>\n  \u003Cp>Learn to build modern AI systems from the ground up through hands-on implementation\u003C\u002Fp>\n  \u003Cp>Master the most in-demand AI engineering skills: \u003Cstrong>RAG (Retrieval-Augmented Generation)\u003C\u002Fstrong>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.12+-blue.svg\" alt=\"Python Version\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-0.115+-green.svg\" alt=\"FastAPI\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenSearch-2.19-orange.svg\" alt=\"OpenSearch\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Compose-blue.svg\" alt=\"Docker\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FStatus-Week%207%20Advanced%20Features-brightgreen.svg\" alt=\"Status\">\n\u003C\u002Fp>\n\n\u003C\u002Fbr>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#-about-this-course\">\n    \u003Cimg src=\"static\u002Fmother_of_ai_project_rag_architecture.gif\" alt=\"RAG Architecture\" width=\"700\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n## 📖 About This Course\n\nThis is a **learner-focused project** where you'll build a complete research assistant system that automatically fetches academic papers, understands their content, and answers your research questions using advanced RAG techniques.\n\n**The arXiv Paper Curator** will teach you to build a **production-grade RAG system using industry best practices**. Unlike tutorials that jump straight to vector search, we follow the **professional path**: master keyword search foundations first, then enhance with vectors for hybrid retrieval.\n\n> **🎯 The Professional Difference:** We build RAG systems the way successful companies do - solid search foundations enhanced with AI, not AI-first approaches that ignore search fundamentals.\n\nBy the end of this course, you'll have your own AI research assistant and the deep technical skills to build production RAG systems for any domain.\n\n### **🎓 What You'll Build**\n\n- **Week 1:** Complete infrastructure with Docker, FastAPI, PostgreSQL, OpenSearch, and Airflow\n- **Week 2:** Automated data pipeline fetching and parsing academic papers from arXiv  \n- **Week 3:** Production BM25 keyword search with filtering and relevance scoring\n- **Week 4:** Intelligent chunking + hybrid search combining keywords with semantic understanding\n- **Week 5:** Complete RAG pipeline with local LLM, streaming responses, and Gradio interface\n- **Week 6:** Production monitoring with Langfuse tracing and Redis caching for optimized performance\n- **Week 7:** **Agentic RAG with LangGraph and Telegram Bot for mobile access**\n\n---\n\n## 🏗️ System Architecture Evolution\n\n### Week 7: Agentic RAG & Telegram Bot Integration\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"static\u002Fweek7_telegram_and_agentic_ai.png\" alt=\"Week 7 Telegram and Agentic AI Architecture\" width=\"800\">\n  \u003Cp>\u003Cem>Complete Week 7 architecture showing Telegram bot integration with the agentic RAG system\u003C\u002Fem>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n### LangGraph Agentic RAG Workflow\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"static\u002Flanggraph-mermaid.png\" alt=\"LangGraph Agentic RAG Flow\" width=\"800\">\n  \u003Cp>\u003Cem>Detailed LangGraph workflow showing decision nodes, document grading, and adaptive retrieval\u003C\u002Fem>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\n**Week 7 Code walkthrough + blog:** [Agentic RAG with LangGraph and Telegram](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fagentic-rag-with-langgraph-and-telegram) \n\n**Key Innovations in Week 7:**\n- **Intelligent Decision-Making**: Agents evaluate and adapt retrieval strategies\n- **Document Grading**: Automatic relevance assessment with semantic evaluation\n- **Query Rewriting**: Adaptive query refinement when results are insufficient\n- **Guardrails**: Out-of-domain detection prevents hallucination\n- **Mobile Access**: Telegram bot for conversational AI on any device\n- **Transparency**: Full reasoning step tracking for debugging and trust\n\n---\n\n## 🚀 Quick Start\n\n### **📋 Prerequisites**\n- **Docker Desktop** (with Docker Compose)  \n- **Python 3.12+**\n- **UV Package Manager** ([Install Guide](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fgetting-started\u002Finstallation\u002F))\n- **8GB+ RAM** and **20GB+ free disk space**\n\n### **⚡ Get Started**\n\n```bash\n# 1. Clone and setup\ngit clone \u003Crepository-url>\ncd arxiv-paper-curator\n\n# 2. Configure environment (IMPORTANT!)\ncp .env.example .env\n# The .env file contains all necessary configuration for OpenSearch, \n# arXiv API, and service connections. Defaults work out of the box.\n# You need to add Jina embeddings free api key and langfuse keys (check the blogs)\n\n# 3. Install dependencies\nuv sync\n\n# 4. Start all services\ndocker compose up --build -d\n\n# 5. Verify everything works\ncurl http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fv1\u002Fhealth\n```\n\n### **📚 Weekly Learning Path**\n\n| Week | Topic | Blog Post | Code Release |\n|------|-------|-----------|--------------|\n| **Week 0** | The Mother of AI project - 6 phases | [The Mother of AI project](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fthe-mother-of-ai-project) | - |\n| **Week 1** | Infrastructure Foundation | [The Infrastructure That Powers RAG Systems](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fthe-infrastructure-that-powers-rag) | [week1.0](https:\u002F\u002Fgithub.com\u002Fjamwithai\u002Farxiv-paper-curator\u002Freleases\u002Ftag\u002Fweek1.0) |\n| **Week 2** | Data Ingestion Pipeline | [Building Data Ingestion Pipelines for RAG](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fbringing-your-rag-system-to-life) | [week2.0](https:\u002F\u002Fgithub.com\u002Fjamwithai\u002Farxiv-paper-curator\u002Freleases\u002Ftag\u002Fweek2.0) |\n| **Week 3** | OpenSearch ingestion & BM25 retrieval | [The Search Foundation Every RAG System Needs](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fthe-search-foundation-every-rag-system) | [week3.0](https:\u002F\u002Fgithub.com\u002Fjamwithai\u002Farxiv-paper-curator\u002Freleases\u002Ftag\u002Fweek3.0) |\n| **Week 4** | **Chunking & Hybrid Search** | [The Chunking Strategy That Makes Hybrid Search Work](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fchunking-strategies-and-hybrid-rag) | [week4.0](https:\u002F\u002Fgithub.com\u002Fjamwithai\u002Farxiv-paper-curator\u002Freleases\u002Ftag\u002Fweek4.0) |\n| **Week 5** | **Complete RAG system** | [The Complete RAG System](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fthe-complete-rag-system) | [week5.0](https:\u002F\u002Fgithub.com\u002Fjamwithai\u002Farxiv-paper-curator\u002Freleases\u002Ftag\u002Fweek5.0) |\n| **Week 6** | **Production monitoring & caching** | [Production-ready RAG: Monitoring & Caching](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fproduction-ready-rag-monitoring-and) | [week6.0](https:\u002F\u002Fgithub.com\u002Fjamwithai\u002Farxiv-paper-curator\u002Freleases\u002Ftag\u002Fweek6.0) |\n| **Week 7** | **Agentic RAG & Telegram Bot** | [Agentic RAG with LangGraph and Telegram](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fagentic-rag-with-langgraph-and-telegram) | [week7.0](https:\u002F\u002Fgithub.com\u002Fjamwithai\u002Farxiv-paper-curator\u002Freleases\u002Ftag\u002Fweek7.0) |\n\n**📥 Clone a specific week's release:**\n```bash\n# Clone a specific week's code\ngit clone --branch \u003CWEEK_TAG> https:\u002F\u002Fgithub.com\u002Fjamwithai\u002Farxiv-paper-curator\ncd arxiv-paper-curator\nuv sync\ndocker compose down -v\ndocker compose up --build -d\n\n# Replace \u003CWEEK_TAG> with: week1.0, week2.0, etc.\n```\n\n### **📊 Access Your Services**\n\n| Service | URL | Purpose |\n|---------|-----|---------|\n| **API Documentation** | http:\u002F\u002Flocalhost:8000\u002Fdocs | Interactive API testing |\n| **Gradio RAG Interface** | http:\u002F\u002Flocalhost:7861 | User-friendly chat interface |\n| **Langfuse Dashboard** | http:\u002F\u002Flocalhost:3000 | RAG pipeline monitoring & tracing |\n| **Airflow Dashboard** | http:\u002F\u002Flocalhost:8080 | Workflow management |\n| **OpenSearch Dashboards** | http:\u002F\u002Flocalhost:5601 | Hybrid search engine UI |\n\n#### **NOTE**: Check airflow\u002Fsimple_auth_manager_passwords.json.generated for Airflow username and password\n---\n\n## 📚 Week 1: Infrastructure Foundation ✅\n\n**Start here!** Master the infrastructure that powers modern RAG systems.\n\n### **🎯 Learning Objectives**\n- Complete infrastructure setup with Docker Compose\n- FastAPI development with automatic documentation and health checks\n- PostgreSQL database configuration and management\n- OpenSearch hybrid search engine setup\n- Ollama local LLM service configuration\n- Service orchestration and health monitoring\n- Professional development environment with code quality tools\n\n### **🏗️ Architecture Overview**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fweek1_infra_setup.png\" alt=\"Week 1 Infrastructure Setup\" width=\"800\">\n\u003C\u002Fp>\n\n**Infrastructure Components:**\n- **FastAPI**: REST endpoints with async support (Port 8000)  \n- **PostgreSQL 16**: Paper metadata storage (Port 5432)\n- **OpenSearch 2.19**: Search engine with dashboards (Ports 9200, 5601)\n- **Apache Airflow 3.0**: Workflow orchestration (Port 8080)\n- **Ollama**: Local LLM server (Port 11434)\n\n### **📓 Setup Guide**\n\n```bash\n# Launch the Week 1 notebook\nuv run jupyter notebook notebooks\u002Fweek1\u002Fweek1_setup.ipynb\n```\n\n**Completion Guide:** Follow the [Week 1 notebook](notebooks\u002Fweek1\u002Fweek1_setup.ipynb) for hands-on setup and verification steps.\n\n### **📖 Deep Dive**\n**Blog Post:** [The Infrastructure That Powers RAG Systems](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fthe-infrastructure-that-powers-rag) - Detailed walkthrough and production insights\n\n---\n\n## 📚 Week 2: Data Ingestion Pipeline ✅\n\n**Building on Week 1 infrastructure:** Learn to fetch, process, and store academic papers automatically.\n\n### **🎯 Learning Objectives**\n- arXiv API integration with rate limiting and retry logic\n- Scientific PDF parsing using Docling\n- Automated data ingestion pipelines with Apache Airflow\n- Metadata extraction and storage workflows\n- Complete paper processing from API to database\n\n### **🏗️ Architecture Overview**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fweek2_data_ingestion_flow.png\" alt=\"Week 2 Data Ingestion Architecture\" width=\"800\">\n\u003C\u002Fp>\n\n**Data Pipeline Components:**\n- **MetadataFetcher**: 🎯 Main orchestrator coordinating the entire pipeline\n- **ArxivClient**: Rate-limited paper fetching with retry logic\n- **PDFParserService**: Docling-powered scientific document processing  \n- **Airflow DAGs**: Automated daily paper ingestion workflows\n- **PostgreSQL Storage**: Structured paper metadata and content\n\n### **📓 Implementation Guide**\n\n```bash\n# Launch the Week 2 notebook  \nuv run jupyter notebook notebooks\u002Fweek2\u002Fweek2_arxiv_integration.ipynb\n```\n\n**Completion Guide:** Follow the [Week 2 notebook](notebooks\u002Fweek2\u002Fweek2_arxiv_integration.ipynb) for hands-on implementation and verification steps.\n\n### **📖 Deep Dive**\n**Blog Post:** [Building Data Ingestion Pipelines for RAG](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fbringing-your-rag-system-to-life) - arXiv API integration and PDF processing\n\n---\n\n## 📚 Week 3: Keyword Search First - The Critical Foundation\n\n**Building on Weeks 1-2 foundation:** Implement the keyword search foundation that professional RAG systems rely on.\n\n### **🎯 Learning Objectives**\n- Why keyword search is essential for RAG systems (foundation first approach)\n- OpenSearch index management, mappings, and search optimization\n- BM25 algorithm and the math behind effective keyword search\n- Query DSL for building complex search queries with filters and boosting\n- Search analytics for measuring relevance and performance\n- Production patterns used by real companies\n\n### **🏗️ Architecture Overview**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fweek3_opensearch_flow.png\" alt=\"Week 3 OpenSearch Flow Architecture\" width=\"800\">\n\u003C\u002Fp>\n\n**Search Infrastructure Components:**\n- **OpenSearch Service**: `src\u002Fservices\u002Fopensearch\u002F` - Professional search service implementation\n- **Search API**: `src\u002Frouters\u002Fsearch.py` - Search API endpoints with BM25 scoring\n- **Learning Materials**: `notebooks\u002Fweek3\u002F` - Complete OpenSearch integration guide\n- **Quality Metrics**: Precision, recall, and relevance scoring\n\n### **📓 Setup Guide**\n\n```bash\n# Launch the Week 3 notebook\nuv run jupyter notebook notebooks\u002Fweek3\u002Fweek3_opensearch.ipynb\n```\n\n**Completion Guide:** Follow the [Week 3 notebook](notebooks\u002Fweek3\u002Fweek3_opensearch.ipynb) for hands-on OpenSearch setup and BM25 search implementation.\n\n### **📖 Deep Dive**\n**Blog Post:** [The Search Foundation Every RAG System Needs](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fthe-search-foundation-every-rag-system) - Complete BM25 implementation with OpenSearch\n\n---\n\n## 📚 Week 4: Chunking & Hybrid Search - The Semantic Layer\n\n**Building on Week 3 foundation:** Add the semantic layer that makes search truly intelligent.\n\n### **🎯 Learning Objectives**\n- Section-based chunking with intelligent document segmentation\n- Production embeddings with Jina AI integration and fallback strategies\n- Hybrid search mastery using RRF fusion for keyword + semantic retrieval\n- Unified API design with single endpoint supporting multiple search modes\n- Performance analysis and trade-offs between search approaches\n\n### **🏗️ Architecture Overview**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fweek4_hybrid_opensearch.png\" alt=\"Week 4 Hybrid Search Architecture\" width=\"800\">\n\u003C\u002Fp>\n\n**Hybrid Search Infrastructure Components:**\n- **Text Chunker**: `src\u002Fservices\u002Findexing\u002Ftext_chunker.py` - Section-aware chunking with overlap strategies\n- **Embeddings Service**: `src\u002Fservices\u002Fembeddings\u002F` - Production embedding pipeline with Jina AI\n- **Hybrid Search API**: `src\u002Frouters\u002Fhybrid_search.py` - Unified search API supporting all modes\n- **Learning Materials**: `notebooks\u002Fweek4\u002F` - Complete hybrid search implementation guide\n\n### **📓 Setup Guide**\n\n```bash\n# Launch the Week 4 notebook\nuv run jupyter notebook notebooks\u002Fweek4\u002Fweek4_hybrid_search.ipynb\n```\n\n**Completion Guide:** Follow the [Week 4 notebook](notebooks\u002Fweek4\u002Fweek4_hybrid_search.ipynb) for hands-on implementation and verification steps.\n\n### **📖 Deep Dive**\n**Blog Post:** [The Chunking Strategy That Makes Hybrid Search Work](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fchunking-strategies-and-hybrid-rag) - Production chunking and RRF fusion implementation\n\n---\n\n## 📚 Week 5: Complete RAG Pipeline with LLM Integration\n\n**Building on Week 4 hybrid search:** Add the LLM layer that turns search into intelligent conversation.\n\n### **🎯 Learning Objectives**\n- Local LLM integration with Ollama for complete data privacy\n- Performance optimization with 80% prompt reduction (6x speed improvement)\n- Streaming implementation using Server-Sent Events for real-time responses\n- Dual API design with standard and streaming endpoints\n- Interactive Gradio interface with advanced parameter controls\n\n### **🏗️ Architecture Overview**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fweek5_complete_rag.png\" alt=\"Week 5 Complete RAG System Architecture\" width=\"900\">\n\u003C\u002Fp>\n\n**Complete RAG Infrastructure Components:**\n- **RAG Endpoints**: `src\u002Frouters\u002Fask.py` - Dual endpoints (`\u002Fapi\u002Fv1\u002Fask` + `\u002Fapi\u002Fv1\u002Fstream`)\n- **Ollama Service**: `src\u002Fservices\u002Follama\u002F` - LLM client with optimized prompts\n- **System Prompt**: `src\u002Fservices\u002Follama\u002Fprompts\u002Frag_system.txt` - Optimized for academic papers\n- **Gradio Interface**: `src\u002Fgradio_app.py` - Interactive web UI with streaming support\n- **Launcher Script**: `gradio_launcher.py` - Easy-launch script (runs on port 7861)\n\n### **📓 Setup Guide**\n\n```bash\n# Launch the Week 5 notebook\nuv run jupyter notebook notebooks\u002Fweek5\u002Fweek5_complete_rag_system.ipynb\n\n# Launch Gradio interface\nuv run python gradio_launcher.py\n# Open http:\u002F\u002Flocalhost:7861\n```\n\n**Completion Guide:** Follow the [Week 5 notebook](notebooks\u002Fweek5\u002Fweek5_complete_rag_system.ipynb) for hands-on LLM integration and RAG pipeline implementation.\n\n### **📖 Deep Dive**\n**Blog Post:** [The Complete RAG System](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fthe-complete-rag-system) - Complete RAG system with local LLM integration and optimization techniques\n\n---\n\n## 📚 Week 6: Production Monitoring and Caching\n\n**Building on Week 5 complete RAG system:** Add observability, performance optimization, and production-grade monitoring.\n\n### **🎯 Learning Objectives**\n- Langfuse integration for end-to-end RAG pipeline tracing\n- Redis caching strategy with intelligent cache keys and TTL management\n- Performance monitoring with real-time dashboards for latency and costs\n- Production patterns for observability and optimization\n- Cost analysis and LLM usage optimization (150-400x speedup with caching)\n\n### **🏗️ Architecture Overview**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fweek6_monitoring_and_caching.png\" alt=\"Week 6 Monitoring & Caching Architecture\" width=\"900\">\n\u003C\u002Fp>\n\n**Production Infrastructure Components:**\n- **Langfuse Service**: `src\u002Fservices\u002Flangfuse\u002F` - Complete tracing integration with RAG-specific metrics\n- **Cache Service**: `src\u002Fservices\u002Fcache\u002F` - Redis client with exact-match caching and graceful fallback\n- **Updated Endpoints**: `src\u002Frouters\u002Fask.py` - Integrated tracing and caching middleware\n- **Docker Config**: `docker-compose.yml` - Added Redis service and Langfuse local instance\n- **Learning Materials**: `notebooks\u002Fweek6\u002F` - Complete monitoring and caching implementation guide\n\n### **📓 Setup Guide**\n\n```bash\n# Launch the Week 6 notebook\nuv run jupyter notebook notebooks\u002Fweek6\u002Fweek6_cache_testing.ipynb\n```\n\n**Completion Guide:** Follow the [Week 6 notebook](notebooks\u002Fweek6\u002Fweek6_cache_testing.ipynb) for hands-on Langfuse tracing and Redis caching implementation.\n\n### **📖 Deep Dive**\n**Blog Post:** [Production-ready RAG: Monitoring & Caching](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fproduction-ready-rag-monitoring-and) - Production-ready RAG with monitoring and caching\n\n---\n\n## 📚 Week 7: Agentic RAG with LangGraph and Telegram Bot\n\n**Building on Week 6 production system:** Add intelligent reasoning, multi-step decision-making, and Telegram bot integration for mobile-first AI interactions.\n\n### **🎯 Learning Objectives**\n- LangGraph workflows for state-based agent orchestration with decision nodes\n- Guardrail implementation for query validation and domain boundary detection\n- Document grading with semantic relevance evaluation\n- Query rewriting for automatic query refinement and better retrieval\n- Adaptive retrieval with multi-attempt retrieval and intelligent fallback\n- Telegram bot integration with async operations and error handling\n- Reasoning transparency by exposing agent decision-making process\n\n### **🏗️ Architecture Overview**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fweek7_telegram_and_agentic_ai.png\" alt=\"Week 7 Agentic RAG & Telegram Architecture\" width=\"900\">\n\u003C\u002Fp>\n\n**Agentic RAG Infrastructure Components:**\n- **Agent Nodes**: `src\u002Fservices\u002Fagents\u002Fnodes\u002F` - Guardrail, retrieve, grade, rewrite, and generate nodes\n- **Workflow Orchestration**: `src\u002Fservices\u002Fagents\u002Fagentic_rag.py` - LangGraph workflow coordination\n- **Telegram Bot**: `src\u002Fservices\u002Ftelegram\u002F` - Command handlers and message processing\n- **Agentic Endpoint**: `src\u002Frouters\u002Fagentic_ask.py` - Agentic RAG API endpoint\n- **Learning Materials**: `notebooks\u002Fweek7\u002F` - Week 7 learning materials and examples\n\n### **📓 Setup Guide**\n\n```bash\n# Launch the Week 7 notebook\nuv run jupyter notebook notebooks\u002Fweek7\u002Fweek7_agentic_rag.ipynb\n```\n\n**Completion Guide:** Follow the [Week 7 notebook](notebooks\u002Fweek7\u002Fweek7_agentic_rag.ipynb) for hands-on LangGraph agentic RAG and Telegram bot implementation.\n\n### **📖 Deep Dive**\n**Blog Post:** [Agentic RAG with LangGraph and Telegram](https:\u002F\u002Fjamwithai.substack.com\u002Fp\u002Fagentic-rag-with-langgraph-and-telegram) - Building intelligent agents with decision-making, adaptive retrieval, and mobile access\n\n---\n\n## ⚙️ Configuration\n\n**Setup:**\n```bash\ncp .env.example .env\n# Edit .env for your environment\n```\n\n**Key Variables:**\n- `JINA_API_KEY` - Required for Week 4+ (hybrid search with embeddings)\n- `TELEGRAM__BOT_TOKEN` - Required for Week 7 (Telegram bot integration)\n- `LANGFUSE__PUBLIC_KEY` & `LANGFUSE__SECRET_KEY` - Optional for Week 6 (monitoring)\n\n**Complete Configuration:** See [.env.example](.env.example) for all available options and detailed documentation.\n\n---\n\n## 🔧 Reference & Development Guide\n\n### **🛠️ Technology Stack**\n\n| Service | Purpose | Status |\n|---------|---------|--------|\n| **FastAPI** | REST API with automatic docs | ✅ Ready |\n| **PostgreSQL 16** | Paper metadata and content storage | ✅ Ready |\n| **OpenSearch 2.19** | Hybrid search engine (BM25 + Vector) | ✅ Ready |\n| **Apache Airflow 3.0** | Workflow automation | ✅ Ready |\n| **Jina AI** | Embedding generation (Week 4) | ✅ Ready |\n| **Ollama** | Local LLM serving (Week 5) | ✅ Ready |\n| **Redis** | High-performance caching (Week 6) | ✅ Ready |\n| **Langfuse** | RAG pipeline observability (Week 6) | ✅ Ready |\n\n**Development Tools:** UV, Ruff, MyPy, Pytest, Docker Compose\n\n### **🏗️ Project Structure**\n\n```\narxiv-paper-curator\u002F\n├── src\u002F                    # Main application code\n│   ├── routers\u002F            # API endpoints (search, ask, papers)\n│   ├── services\u002F           # Business logic (opensearch, ollama, agents, cache)\n│   ├── models\u002F             # Database models (SQLAlchemy)\n│   ├── schemas\u002F            # Pydantic validation schemas\n│   └── config.py           # Environment configuration\n├── notebooks\u002F              # Weekly learning materials (week1-7)\n├── airflow\u002F                # Workflow orchestration (DAGs)\n├── tests\u002F                  # Test suite\n└── compose.yml             # Docker service orchestration\n```\n\n### **📡 API Endpoints Reference**\n\n| Endpoint | Method | Description | Week |\n|----------|--------|-------------|------|\n| `\u002Fhealth` | GET | Service health check | Week 1 |\n| `\u002Fapi\u002Fv1\u002Fpapers` | GET | List stored papers | Week 2 |\n| `\u002Fapi\u002Fv1\u002Fpapers\u002F{id}` | GET | Get specific paper | Week 2 |\n| `\u002Fapi\u002Fv1\u002Fsearch` | POST | BM25 keyword search | Week 3 |\n| `\u002Fapi\u002Fv1\u002Fhybrid-search\u002F` | POST | Hybrid search (BM25 + Vector) | **Week 4** |\n\n**API Documentation:** Visit http:\u002F\u002Flocalhost:8000\u002Fdocs for interactive API explorer\n\n### **🔧 Essential Commands**\n\n#### **Using the Makefile** (Recommended)\n```bash\n# View all available commands\nmake help\n\n# Quick workflow\nmake start         # Start all services\nmake health        # Check all services health\nmake test          # Run tests\nmake stop          # Stop services\n```\n\n#### **All Available Commands**\n| Command | Description |\n|---------|-------------|\n| `make start` | Start all services |\n| `make stop` | Stop all services |\n| `make restart` | Restart all services |\n| `make status` | Show service status |\n| `make logs` | Show service logs |\n| `make health` | Check all services health |\n| `make setup` | Install Python dependencies |\n| `make format` | Format code |\n| `make lint` | Lint and type check |\n| `make test` | Run tests |\n| `make test-cov` | Run tests with coverage |\n| `make clean` | Clean up everything |\n\n#### **Direct Commands** (Alternative)\n```bash\n# If you prefer using commands directly\ndocker compose up --build -d    # Start services\ndocker compose ps               # Check status\ndocker compose logs            # View logs\nuv run pytest                 # Run tests\n```\n\n### **🎓 Target Audience**\n| Who | Why |\n|-----|-----|\n| **AI\u002FML Engineers** | Learn production RAG architecture beyond tutorials |\n| **Software Engineers** | Build end-to-end AI applications with best practices |\n| **Data Scientists** | Implement production AI systems using modern tools |\n\n---\n\n## 🛠️ Troubleshooting\n\n**Common Issues:**\n- **Services not starting?** Wait 2-3 minutes, check `docker compose logs`\n- **Port conflicts?** Stop other services using ports 8000, 8080, 5432, 9200\n- **Memory issues?** Increase Docker Desktop memory allocation\n\n**Get Help:**\n- Check the comprehensive Week 1 notebook troubleshooting section\n- Review service logs: `docker compose logs [service-name]`\n- Complete reset: `docker compose down --volumes && docker compose up --build -d`\n\n---\n\n## 💰 Cost Structure\n\n**This course is completely free!** You'll only need minimal costs for optional services:\n- **Local Development:** $0 (everything runs locally)\n- **Optional Cloud APIs:** ~$2-5 for external LLM services (if chosen)\n\n---\n\n\u003Cdiv align=\"center\">\n  \u003Ch3>🎉 Ready to Start Your AI Engineering Journey?\u003C\u002Fh3>\n  \u003Cp>\u003Cstrong>Begin with the Week 1 setup notebook and build your first production RAG system!\u003C\u002Fstrong>\u003C\u002Fp>\n  \n  \u003Cp>\u003Cem>For learners who want to master modern AI engineering\u003C\u002Fem>\u003C\u002Fp>\n  \u003Cp>\u003Cstrong>Built with love by \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fshirin-khosravi-jam\u002F\">Shirin Khosravi Jam\u003C\u002Fa> & \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fshantanuladhwe\u002F\">Shantanu Ladhwe\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n---\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=jamwithai\u002Fproduction-agentic-rag-course&type=Date)](https:\u002F\u002Fstar-history.com\u002F#jamwithai\u002Fproduction-agentic-rag-course&Date)\n\n---\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n","该项目旨在通过实践教学，帮助学习者从零开始构建一个基于检索增强生成（RAG）技术的现代AI系统。其核心功能包括使用FastAPI、OpenSearch等工具搭建生产级RAG系统，并通过Docker Compose进行环境配置管理；同时，项目还涵盖了从数据获取、处理到最终实现智能问答的完整流程。特别地，它强调先掌握关键词搜索的基础再引入向量搜索以实现混合检索的方法论。适合希望深入了解并亲手实操RAG技术，以及想要为特定领域开发高效信息检索与生成解决方案的学习者和技术人员。",2,"2026-06-11 03:40:13","high_star"]