--- 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 ```