rag / README.md
dmytrotm's picture
Complete RAG HW requirements: add legal area filtering, refine citations, and update documentation
f3d2c7c
|
raw
history blame
3.7 kB
metadata
title: Rag
emoji: 🐠
colorFrom: purple
colorTo: red
sdk: gradio
sdk_version: 6.1.0
app_file: app.py
pinned: false

🇺🇦 Асистент із Законодавства України (RAG QA)

Ця система дозволяє користувачам отримувати відповіді на юридичні запитання, базуючись на актуальних кодексах та законах України за допомогою підходу Retrieval-Augmented Generation (RAG).

Основні функції

  • Гібридний пошук: Поєднання BM25 (ключові слова) та SBERT (семантика) для максимального охоплення.
  • Reranking: Використання Cross-Encoder моделі для високої точності.
  • Цитування: Автоматичне посилання на статті кодексів у тексті відповіді.
  • Фільтрація за метаданими: Можливість звузити пошук до конкретної галузі права (Кримінальне, Цивільне тощо).
  • Інтелектуальні відповіді: Використання Llama 3.3 70B для генерації відповідей українською мовою.

Технічна архітектура

  • Retriever:
    • BM25: Лематизація (pymorphy3) та спелчекінг (SymSpell).
    • Semantic Search: Модель sentence-transformers/paraphrase-multilingual-mpnet-base-v2.
  • Reranker: Модель cross-encoder/ms-marco-TinyBERT-L-2-v2.
  • LLM: llama-3.3-70b-versatile через API Groq (LiteLLM).
  • Metadata: Реалізовано пере-фільтрацію за полем legal_area.

Порівняння методів пошуку

Запит Кращий метод Чому саме він?
"Стаття 115 ККУ" BM25 Точний збіг за номером статті та назвою кодексу.
"права батьків після розлучення" Semantic Search Розуміє концепцію "сімейних прав", навіть якщо ці слова не зустрічаються буквально.

Інсталяція та запуск

  1. Встановлення залежностей:

    pip install -r requirements.txt
    
  2. Налаштування середовища: Створіть файл .env та додайте ваш ключ:

    GROQ_API_KEY=gsk_...
    
  3. Запуск:

    python app.py
    

    Інтерфейс буде доступний за адресою http://localhost:7860.

Структура проєкту

├── app.py                 # Точка входу Gradio UI
├── config.py              # Конфігурація та системні промпти
├── requirements.txt       # Залежності
├── data/                  # Дані (парсений JSON, ембедінги)
├── modules/
│   ├── rag_system.py      # Оркестратор пайплайну
│   ├── retriever.py       # Гібридний пошук з фільтрацією
│   ├── reranker.py        # Cross-Encoder ранжування
│   └── llm_handler.py     # Інтеграція з LLM (LiteLLM)
└── scripts/
    └── parser.py          # Парсер та передобробка документів

Виконав: Dmytro