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. **Создание векторного индекса** для быстрого поиска
### Параметры конфигурации
```python
# Размеры фрагментов
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. **Клонирование репозитория**
```bash
git clone <repository-url>
cd rag-document-analyzer
```
2. **Установка зависимостей**
```bash
pip install -r requirements.txt
```
3. **Настройка API ключа**
Отредактируйте `config.py` и укажите ваш Google API ключ:
```python
GOOGLE_API_KEY = "your-api-key-here"
```
4. **Запуск приложения**
```bash
python app.py
```
5. **Открытие интерфейса**
Откройте браузер и перейдите по адресу `http://localhost:7860`
## 📖 Руководство пользователя
### Загрузка документов
1. Перейдите на вкладку "📤 Управление документами"
2. Нажмите "Выберите файлы для загрузки" и выберите нужные документы
3. Нажмите "📤 Загрузить файлы"
4. После загрузки нажмите "⚙️ Обработать документы"
### Поиск информации
1. Перейдите на вкладку "❓ Поиск ответов"
2. Введите ваш вопрос в поле "Ваш вопрос"
3. Нажмите "🔍 Найти ответ"
4. Изучите полученный ответ и источники
### Управление системой
1. Вкладка "📊 Статус системы" содержит информацию о:
- Количестве обработанных файлов
- Количестве фрагментов в базе знаний
- Времени последнего обновления
- Списке обработанных файлов
2. Для очистки всех данных используйте кнопку "🗑️ Очистить все данные"
## 🔧 API и интеграция
### Основные функции API
#### Обработка документов
```python
# Обработка одного документа
processed_chunks = process_single_document(file_path)
# Обработка множества документов
processed_chunks = process_multiple_documents(file_paths)
# Создание документов для RAG
documents = create_llama_documents(processed_chunks)
```
#### RAG система
```python
# Создание поискового движка
query_engine = build_rag_system(processed_chunks)
# Поиск ответов
response = query_documents(query_engine, question)
# Форматирование ответа с источниками
formatted_response = format_response_with_sources(response)
```
### Структура ответа
```python
{
'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 |
## 📄 Лицензия
Этот проект предназначен для внутреннего использования. Все права защищены.
---