---
name: rag-pipeline
description: Details on the Retrieval Augmented Generation pipeline, Ingestion, and Vector Search.
---

# RAG Pipeline Logic

## Ingestion
- **Script**: `backend/ingest.py`
- **Process**:
    1. Scans `docs/`.
    2. Cleans MDX (removes frontmatter/imports).
    3. Chunks text (1000 chars, 100 overlap).
    4. Embeds using `models/text-embedding-004`.
    5. Upserts to Qdrant collection `physical_ai_book`.
- **Run**: `python backend/ingest.py`

## Vector Search (Qdrant)
- **Client**: `qdrant-client`
- **Collection**: `physical_ai_book`
- **Vector Size**: 768 (Gecko-004)
- **Similarity**: Cosine

## Prompt Engineering
- **File**: `backend/utils/helpers.py`.
- **RAG Prompt**: Constructs a prompt containing retrieved context chunks.
- **Personalization**: `backend/personalization.py` creates system instructions based on `software_background` and `hardware_background` of the user.

## Agentic Flow
We use a custom `Agent` class (`backend/agents.py`) that wraps the LLM calls, allowing for future expansion into multi-agent workflows.
