AIEXP_RAG_1 / readme.md
MrSimple01's picture
Upload 67 files
9859bf3
|
raw
history blame
12.1 kB

🤖 RAG Система для Анализа Нормативных Документов

📋 Описание

Интеллектуальная система для анализа и поиска информации в нормативных документах, построенная на основе технологии RAG (Retrieval-Augmented Generation). Система позволяет загружать документы различных форматов, автоматически обрабатывать их содержимое и предоставляет точные ответы на вопросы пользователей с указанием источников.

🎯 Основные возможности

  • Поддержка множества форматов: PDF, DOCX, TXT, CSV, XLSX, JSON
  • Интеллектуальная обработка текста: Семантическое разделение на фрагменты с учетом контекста
  • Динамическое управление базой знаний: Возможность добавления, обработки и удаления документов
  • Точные ответы с источниками: Каждый ответ содержит ссылки на конкретные разделы документов
  • Русскоязычная специализация: Оптимизировано для работы с российскими нормативными документами

🏗️ Архитектура системы

Основные компоненты

app.py              # Gradio интерфейс пользователя
├── config.py       # Конфигурация и настройки системы
├── document_processor.py  # Обработка документов различных форматов
├── rag_engine.py   # RAG система и поисковый движок
└── requirements.txt # Зависимости проекта

Структура данных

uploaded_documents/     # Папка с загруженными файлами
processed_chunks.csv   # Обработанные фрагменты документов
index_state.json      # Состояние индекса системы

⚙️ Технические характеристики

Используемые технологии

  • LLM: Google Gemini 2.5 Flash
  • Embeddings: sentence-transformers/all-MiniLM-L6-v2
  • Vector Store: LlamaIndex VectorStoreIndex
  • UI Framework: Gradio
  • Text Processing: scikit-learn, pandas, numpy

Алгоритм обработки документов

  1. Извлечение текста из файлов различных форматов
  2. Предобработка текста: Очистка, нормализация, удаление лишних символов
  3. Создание первичных фрагментов с размером 1000 символов и перекрытием 150 символов
  4. Семантическое слияние: Объединение похожих фрагментов на основе cosine similarity > 0.7
  5. Извлечение метаданных: Определение разделов и подразделов документов
  6. Создание векторного индекса для быстрого поиска

Параметры конфигурации

# Размеры фрагментов
CHUNK_SIZE = 1000              # Базовый размер фрагмента
CHUNK_OVERLAP = 150            # Перекрытие между фрагментами
MAX_CHUNK_SIZE = 2500          # Максимальный размер после слияния
MIN_CHUNK_SIZE = 1000          # Минимальный размер для сохранения

# Параметры поиска
SIMILARITY_THRESHOLD = 0.7     # Порог для слияния фрагментов
RETRIEVER_TOP_K = 10          # Количество возвращаемых фрагментов
RETRIEVER_SIMILARITY_CUTOFF = 0.7  # Порог релевантности при поиске

🚀 Установка и запуск

Требования

  • Python 3.8+
  • API ключ Google AI Studio

Пошаговая установка

  1. Клонирование репозитория
git clone <repository-url>
cd rag-document-analyzer
  1. Установка зависимостей
pip install -r requirements.txt
  1. Настройка API ключа Отредактируйте config.py и укажите ваш Google API ключ:
GOOGLE_API_KEY = "your-api-key-here"
  1. Запуск приложения
python app.py
  1. Открытие интерфейса Откройте браузер и перейдите по адресу http://localhost:7860

📖 Руководство пользователя

Загрузка документов

  1. Перейдите на вкладку "📤 Управление документами"
  2. Нажмите "Выберите файлы для загрузки" и выберите нужные документы
  3. Нажмите "📤 Загрузить файлы"
  4. После загрузки нажмите "⚙️ Обработать документы"

Поиск информации

  1. Перейдите на вкладку "❓ Поиск ответов"
  2. Введите ваш вопрос в поле "Ваш вопрос"
  3. Нажмите "🔍 Найти ответ"
  4. Изучите полученный ответ и источники

Управление системой

  1. Вкладка "📊 Статус системы" содержит информацию о:

    • Количестве обработанных файлов
    • Количестве фрагментов в базе знаний
    • Времени последнего обновления
    • Списке обработанных файлов
  2. Для очистки всех данных используйте кнопку "🗑️ Очистить все данные"

🔧 API и интеграция

Основные функции API

Обработка документов

# Обработка одного документа
processed_chunks = process_single_document(file_path)

# Обработка множества документов
processed_chunks = process_multiple_documents(file_paths)

# Создание документов для RAG
documents = create_llama_documents(processed_chunks)

RAG система

# Создание поискового движка
query_engine = build_rag_system(processed_chunks)

# Поиск ответов
response = query_documents(query_engine, question)

# Форматирование ответа с источниками
formatted_response = format_response_with_sources(response)

Структура ответа

{
    'answer': 'Текст ответа на вопрос',
    'sources': [
        {
            'chunk_number': 1,
            'section': 'Раздел документа',
            'subsection': 'Подраздел документа',
            'chunk_id': 'Идентификатор фрагмента',
            'document_id': 'Имя документа',
            'text_preview': 'Превью текста фрагмента...'
        }
    ]
}

🔒 Требования безопасности

Конфиденциальность данных

  • Все документы обрабатываются локально
  • Векторные представления хранятся в локальной файловой системе
  • API ключи должны храниться в безопасном месте

Рекомендации по безопасности

  1. Не передавайте конфиденциальные API ключи в коде
  2. Регулярно обновляйте зависимости
  3. Ограничьте доступ к загружаемым файлам
  4. Используйте HTTPS при развертывании в продакшене

📊 Мониторинг и логирование

Отслеживаемые метрики

  • Количество загруженных документов
  • Количество обработанных фрагментов
  • Время обработки документов
  • Количество поисковых запросов
  • Качество ответов системы

Логи системы

Система автоматически создает логи для:

  • Процесса обработки документов
  • Ошибок при загрузке файлов
  • Результатов поисковых запросов

🔄 Обновление базы знаний

Добавление новых документов

  1. Загрузите новые файлы через интерфейс
  2. Нажмите "⚙️ Обработать документы"
  3. Система автоматически интегрирует новые данные

Обновление существующих документов

  1. Загрузите обновленную версию файла (с тем же именем)
  2. Очистите данные через "🗑️ Очистить все данные"
  3. Загрузите все файлы заново и обработайте

❓ Часто задаваемые вопросы

В: Какие форматы файлов поддерживаются? О: PDF, DOCX, TXT, CSV, XLSX, JSON

В: Можно ли работать с документами на других языках? О: Система оптимизирована для русского языка, но может работать и с другими языками

В: Как система определяет релевантность ответов? О: Используется векторный поиск на основе semantic similarity с порогом 0.7

В: Можно ли изменить настройки обработки текста? О: Да, все параметры настраиваются в файле config.py

🤝 Техническая поддержка

Самостоятельная поддержка

  1. Изучите документацию в README.md
  2. Проверьте конфигурацию в config.py
  3. Просмотрите логи для выявления ошибок
  4. Обновите зависимости до последних версий

Устранение неполадок

Проблема Возможное решение
Ошибка API ключа Проверьте правильность ключа в config.py
Медленная обработка Уменьшите размер документов или увеличите CHUNK_SIZE
Нерелевантные ответы Снизьте RETRIEVER_SIMILARITY_CUTOFF
Ошибки памяти Уменьшите RETRIEVER_TOP_K или MAX_CHUNK_SIZE

📄 Лицензия

Этот проект предназначен для внутреннего использования. Все права защищены.