Technical Briefing – agentic‑rag‑for‑dummies Clone: git clone https://github.com/moses-y/agentic-rag-for-dummies


1. Project Snapshot

  • Entry point: project/app.py – starts a Flask server exposing /chat and /docs.
  • Core modules
  • project/core/rag_system.py: orchestrates retrieval, grounding, and answer generation.
  • project/rag_agent/graph.py: LangGraph definition (nodes, edges, state).
  • project/core/document_manager.py: loads PDFs via project/document_chunker.py and stores chunks in Qdrant.
  • UI: project/ui/gradio_app.py provides a web demo that calls the Flask API.
  • Data layer: project/db/vector_db_manager.py and parent_store_manager.py wrap Qdrant client.
  • Observability: project/core/observability.py logs LLM calls and tool usage to Langfuse.

Dependencies are listed in requirements.txt (no lockfile). Docker support via project/Dockerfile.


2. How the Flow Works

  1. User Query → Flask route (/chat) in app.py.
  2. app.py passes the query to RagSystem.run(query, user_id).
  3. RagSystem builds a GraphState and invokes Graph().flow(state).
  4. LangGraph executes: - Clarify node (rag_agent/nodes.py) rewrites ambiguous queries. - Retrieve node calls vector_db_manager.search() for top‑k chunks. - Compress node keeps working memory small. - Answer node calls the configured LLM via LangChain.
  5. The generated answer, along with metadata, is returned to Flask and forwarded to the UI or API consumer.

The most impactful functions are rag_system.run, graph.Graph.flow, and vector_db_manager.search, each with a single responsibility and clear side‑effects (network calls to Qdrant or LLM provider).


3. Setup & Configuration

  • Environment ``bash cp project/.env.example .env # Edit .env: set OPENAI_API_KEY, QDRANT_URL, LANGFUSE_PUBLIC_KEY, etc. ``
  • Local run ``bash pip install -r requirements.txt python project/app.py ``
  • Docker ``bash docker build -t agentic-rag . docker run -p 8000:8000 --env-file .env agentic-rag ``

The README provides Colab and Gradio launch instructions; no CLI script exists.


4. Real‑World Use Case

A knowledge‑base chatbot for an internal HR portal. The PDF employee handbook is chunked, indexed in Qdrant, and the chat UI (via gradio_app.py) lets staff ask policy questions. The workflow automatically re‑queries if an answer is incomplete, thanks to the self‑correction loop in rag_agent/graph.py.


5. Code Health & Issues

  • Missing Tests – no tests/ directory; most functions are exercised only in notebooks.
  • No CI/CD – no .github/ workflow, GitHub Actions, or GitLab CI config.
  • Reproducibility – requirements.txt lacks a lockfile; environment may drift.
  • Documentation – README is comprehensive; each module has minimal inline comments but no docstrings.

All findings come from static analysis of the file list and content; no additional issues were detected.


6. Bottom Line

The repo offers a clean, modular Agentic RAG stack with a clear separation between retrieval, reasoning, and UI. Its use of LangGraph and Qdrant enables rapid experimentation, and the Dockerfile simplifies deployment. However, the absence of automated tests and CI limits confidence for production use. The architecture is suitable for teams that can add their own testing and CI pipelines, especially those familiar with LangChain and vector databases.