Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions homework/SUBMISSION.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,39 @@
# Submission
# SUBMISSION.md

Заполните файл перед отправкой PR.
## Ссылка на репозиторий

## Ссылка на репозиторий с заданием

- Repo URL: `<вставьте ссылку на ваш репозиторий>`
**Repo URL:** `https://github.com/dianamarzz/rag-stackoverflow`

## Автор

- ФИО / ник: `<укажите>`
**ФИО / ник:** Marzaganova Diana (dianamarzz)

## Комментарий

- Кратко: что реализовано, какие данные использованы, что улучшено.
**Данные:** датасет [stackoverflow/stacksample](https://www.kaggle.com/datasets/stackoverflow/stacksample) (Kaggle, CC BY-SA 3.0) — 1 000 Python-вопросов с принятыми ответами (фильтр: тег `python`, score ≥ 5). Вопрос и принятый ответ объединяются в одно текстовое поле и нарезаются на более 4 000 чанков.

**Pipeline:** `prepare_datasets.py → ingest.py → build_index.py (chunking + TF-IDF + BM25) → retrieval → generation → Streamlit UI`.

**Улучшения:**
- **BM25** (реализовано) — заменяет TF-IDF как основной метод retrieval; точнее ранжирует технические термины, учитывает длину документа. По умолчанию включён через `RETRIEVAL_MODE=bm25`.
- **Генерация через Claude API** (реализовано) — при наличии `ANTHROPIC_API_KEY` генератор формирует связный ответ строго по найденному контексту вместо сырой конкатенации чанков.

## Demo-вопросы

| № | Вопрос | Результат |
|---|---|---|
| 1 | How do I check if a list is empty in Python? | ✅ Ответ с источниками |
| 2 | How to sort a dictionary by value in Python? | ✅ Ответ с источниками |
| 3 | What is the difference between @classmethod and @staticmethod? | ✅ Ответ с источниками |
| N | What is the best recipe for a chocolate cake? | ❌ Отказ — нет релевантных данных |

## Запуск

```bash
git clone https://github.com/dianamarzz/rag-stackoverflow
cd rag-stackoverflow
uv sync
uv run python scripts/build_index.py
uv run streamlit run app/main.py
```