|
|
--- |
|
|
title: RAG QA (CookingRecipes) |
|
|
emoji: 🍲 |
|
|
colorFrom: indigo |
|
|
colorTo: gray |
|
|
sdk: gradio |
|
|
sdk_version: "4.0.0" |
|
|
app_file: app.py |
|
|
pinned: false |
|
|
--- |
|
|
|
|
|
# RAG QA (CookingRecipes) |
|
|
|
|
|
Це мінімальний RAG Question Answering застосунок на датасеті HuggingFace CodeKapital/CookingRecipes. |
|
|
|
|
|
## Як працює |
|
|
|
|
|
1. Беремо перші N рецептів з датасету (щоб не завантажувати весь). |
|
|
2. Розбиваємо текст на chunks (з overlap). |
|
|
3. Робимо пошук релевантних chunks: |
|
|
- BM25 (keyword) |
|
|
- Dense (embeddings) |
|
|
4. (Опційно) Reranker (cross-encoder) покращує порядок результатів. |
|
|
5. Відправляємо фінальні chunks у LLM через LiteLLM і отримуємо відповідь. |
|
|
|
|
|
## Налаштування в UI |
|
|
|
|
|
- N recipes to index — скільки перших рецептів індексувати. |
|
|
- Use streaming — читати перші N без завантаження всього датасету. |
|
|
- Use BM25 / Use Dense / Use Reranker — перемикачі retrieval. |
|
|
- Top-K — скільки кандидатів брати з кожного retriever. |
|
|
- Chunks to LLM (final) — скільки chunks реально піде в LLM. |
|
|
|
|
|
## Важливо про LLM |
|
|
|
|
|
На HuggingFace Spaces локальний Ollama не доступний, тому для відповідей: |
|
|
|
|
|
- в полі LLM model використай, наприклад: openai/gpt-4o-mini |
|
|
- в полі API key введи свій ключ провайдера (ключ не зберігається в коді). |
|
|
|
|
|
## Demo queries (BM25 vs Dense) |
|
|
|
|
|
BM25-only (вимкни Dense): |
|
|
|
|
|
1. Which recipes include worcestershire sauce? |
|
|
2. Find a recipe that uses xanthan gum |
|
|
|
|
|
Dense-only (вимкни BM25): |
|
|
|
|
|
1. Give me a quick dairy-free dessert idea |
|
|
2. Suggest a high-protein breakfast |
|
|
|
|
|
## Run locally |
|
|
|
|
|
```bash |
|
|
pip install -r requirements.txt |
|
|
python app.py |
|
|
``` |
|
|
|