File size: 12,062 Bytes
9859bf3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
# 🤖 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 |



## 📄 Лицензия



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



---