# agent-rag-mvp

Szkielet pipeline'u RAG (retrieval-augmented generation) dla asystenta AI
odpowiadającego na pytania o OWU — pierwszy techniczny krok projektu opisanego
w `plan-techniczny-mvp.md`.

## Co tu jest, a czego jeszcze nie ma

Jest: wczytywanie dokumentów (PDF/TXT) → dzielenie na fragmenty z
zachowaniem numeracji paragrafów → wyszukiwanie najlepiej pasujących
fragmentów (TF-IDF) → generowanie odpowiedzi przez Claude z obowiązkowym
cytowaniem źródła.

Nie ma jeszcze: interfejsu webowego (na razie to skrypty CLI do sprawdzenia,
czy sam rdzeń działa), bazy danych/CRM, importu z zewnętrznych systemów,
uwierzytelniania. To zgodnie z planem — najpierw sprawdzamy jakość samego
"mózgu", zanim zbudujemy wokół niego aplikację.

## Szybki start

```bash
cd agent-rag-mvp
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt
```

1. **Dodaj prawdziwe dokumenty OWU.** W `data/owu/` jest teraz tylko
   `przyklad_tu_oc_ac.txt` — to SYNTETYCZNY, fikcyjny dokument testowy do
   sprawdzenia, czy pipeline działa. Zamień go / dodaj obok niego prawdziwe,
   publicznie dostępne pliki OWU (PDF) pobrane bezpośrednio ze stron
   towarzystw ubezpieczeniowych.

2. **Zbuduj indeks:**
   ```bash
   python src/ingest.py
   ```

3. **Zadaj pytanie:**
   ```bash
   python src/query.py "Czy AC obejmuje szkodę na parkingu?"
   ```
   Bez klucza API zobaczysz tylko odnalezione fragmenty — to już pozwala
   ocenić, czy wyszukiwanie działa sensownie.

4. **Włącz generowanie odpowiedzi przez Claude** (opcjonalnie na tym etapie):
   ```bash
   cp .env.example .env
   # wklej swój klucz do ANTHROPIC_API_KEY w pliku .env
   ```
   Klucz API do Anthropic dostaniesz na console.anthropic.com — to
   Twój własny koszt za zapytania, rozliczany osobno od tej rozmowy.

## Dlaczego TF-IDF, a nie embeddingi z modelu językowego

Świadomy kompromis na etap MVP: TF-IDF działa od razu, lokalnie, bez GPU i
bez dodatkowych kluczy API/kosztów, a dla języka OWU (dużo powtarzalnych,
konkretnych terminów prawnych) daje sensowne wyniki jako punkt startowy.
Kiedy zbierzemy pierwsze realne pytania od testowych agentów (patrz
`plan-techniczny-mvp.md`), naturalny kolejny krok to podmiana
`TfidfVectorizer` w `src/ingest.py` / `src/query.py` na embeddingi
semantyczne — reszta architektury (chunking, format cytowań, prompt) się
nie zmienia.

## Struktura

```
agent-rag-mvp/
├── data/owu/          # dokumenty źródłowe OWU (PDF/TXT) — nie commituj tu prawdziwych, dużych plików bez zgody
├── src/
│   ├── chunking.py    # dzielenie dokumentu na fragmenty wg numeracji paragrafów
│   ├── ingest.py       # budowanie indeksu wyszukiwania
│   └── query.py        # wyszukiwanie + generowanie odpowiedzi
├── .index/             # wygenerowany indeks (nie w repo, w .gitignore)
├── requirements.txt
└── .env.example
```

## Następne kroki (patrz plan-techniczny-mvp.md)

1. Zebrać 15-20 prawdziwych dokumentów OWU dla 2 linii produktowych.
2. Zbudować minimalny interfejs webowy (Next.js) wokół tego pipeline'u.
3. Test z 3-5 realnymi agentami na prawdziwych pytaniach.
4. Zdecydować o migracji z TF-IDF na embeddingi semantyczne na podstawie
   realnych przypadków, w których wyszukiwanie zawiedzie.
