MrSimple07 commited on
Commit
324e084
·
1 Parent(s): 5e55e06

added dockerfile

Browse files
Files changed (2) hide show
  1. dockerfile +29 -6
  2. readme.md +12 -257
dockerfile CHANGED
@@ -1,11 +1,34 @@
 
 
 
 
 
1
  RUN apt-get update && apt-get install -y \
2
  git \
3
  git-lfs \
4
- ffmpeg \
5
- libsm6 \
6
- libxext6 \
7
  cmake \
8
- rsync \
9
- libgl1-mesa-dev \
10
  && rm -rf /var/lib/apt/lists/* \
11
- && git lfs install
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10-slim
2
+
3
+ WORKDIR /app
4
+
5
+ # Install system dependencies
6
  RUN apt-get update && apt-get install -y \
7
  git \
8
  git-lfs \
 
 
 
9
  cmake \
10
+ build-essential \
 
11
  && rm -rf /var/lib/apt/lists/* \
12
+ && git lfs install
13
+
14
+ # Copy requirements first for better caching
15
+ COPY requirements.txt .
16
+
17
+ # Install Python dependencies
18
+ RUN pip install --no-cache-dir -r requirements.txt
19
+
20
+ # Copy application code
21
+ COPY . .
22
+
23
+ # Create necessary directories
24
+ RUN mkdir -p processed_data UPLOADED_DOCUMENTS rag_files
25
+
26
+ # Expose port
27
+ EXPOSE 7860
28
+
29
+ # Set environment variables
30
+ ENV GRADIO_SERVER_NAME=0.0.0.0
31
+ ENV GRADIO_SERVER_PORT=7860
32
+
33
+ # Run the application
34
+ CMD ["python", "app.py"]
readme.md CHANGED
@@ -1,257 +1,12 @@
1
- # 🤖 RAG Система для Анализа Нормативных Документов
2
-
3
- ## 📋 Описание
4
-
5
- Интеллектуальная система для анализа и поиска информации в нормативных документах, построенная на основе технологии RAG (Retrieval-Augmented Generation). Система позволяет загружать документы различных форматов, автоматически обрабатывать их содержимое и предоставляет точные ответы на вопросы пользователей с указанием источников.
6
-
7
- ## 🎯 Основные возможности
8
-
9
- - **Поддержка множества форматов**: PDF, DOCX, TXT, CSV, XLSX, JSON
10
- - **Интеллектуальная обработка текста**: Семантическое разделение на фрагменты с учетом контекста
11
- - **Динамическое управление базой знаний**: Возможность добавления, обработки и удаления документов
12
- - **Точные ответы с источниками**: Каждый ответ содержит ссылки на конкретные разделы документов
13
- - **Русскоязычная специализация**: Оптимизировано для работы с российскими нормативными документами
14
-
15
- ## 🏗️ Архитектура системы
16
-
17
- ### Основные компоненты
18
-
19
- ```
20
- app.py # Gradio интерфейс пользователя
21
- ├── config.py # Конфигурация и настройки системы
22
- ├── document_processor.py # Обработка документов различных форматов
23
- ├── rag_engine.py # RAG система и поисковый движок
24
- └── requirements.txt # Зависимости проекта
25
- ```
26
-
27
- ### Структура данных
28
-
29
- ```
30
- uploaded_documents/ # Папка с загруженными файлами
31
- processed_chunks.csv # Обработанные фрагменты документов
32
- index_state.json # Состояние индекса системы
33
- ```
34
-
35
- ## ⚙️ Технические характеристики
36
-
37
- ### Используемые технологии
38
-
39
- - **LLM**: Google Gemini 2.5 Flash
40
- - **Embeddings**: sentence-transformers/all-MiniLM-L6-v2
41
- - **Vector Store**: LlamaIndex VectorStoreIndex
42
- - **UI Framework**: Gradio
43
- - **Text Processing**: scikit-learn, pandas, numpy
44
-
45
- ### Алгоритм обработки документов
46
-
47
- 1. **Извлечение текста** из файлов различных форматов
48
- 2. **Предобработка текста**: Очистка, нормализация, удаление лишних символов
49
- 3. **Создание первичных фрагментов** с размером 1000 символов и перекрытием 150 символов
50
- 4. **Семантическое слияние**: Объединение похожих фрагментов на основе cosine similarity > 0.7
51
- 5. **Извлечение метаданных**: Определение разделов и подразделов документов
52
- 6. **Создание векторного индекса** для быстрого поиска
53
-
54
- ### Параметры конфигурации
55
-
56
- ```python
57
- # Размеры фрагментов
58
- CHUNK_SIZE = 1000 # Базовый размер фрагмента
59
- CHUNK_OVERLAP = 150 # Перекрытие между фрагментами
60
- MAX_CHUNK_SIZE = 2500 # Максимальный размер после слияния
61
- MIN_CHUNK_SIZE = 1000 # Минимальный размер для сохранения
62
-
63
- # Параметры поиска
64
- SIMILARITY_THRESHOLD = 0.7 # Порог для слияния фрагментов
65
- RETRIEVER_TOP_K = 10 # Количество возвращаемых фрагментов
66
- RETRIEVER_SIMILARITY_CUTOFF = 0.7 # Порог релевантности при поиске
67
- ```
68
-
69
- ## 🚀 Установка и запуск
70
-
71
- ### Требования
72
-
73
- - Python 3.8+
74
- - API ключ Google AI Studio
75
-
76
- ### Пошаговая установка
77
-
78
- 1. **Клонирование репозитория**
79
- ```bash
80
- git clone <repository-url>
81
- cd rag-document-analyzer
82
- ```
83
-
84
- 2. **Установка зависимостей**
85
- ```bash
86
- pip install -r requirements.txt
87
- ```
88
-
89
- 3. **Настройка API ключа**
90
- Отредактируйте `config.py` и укажите ваш Google API ключ:
91
- ```python
92
- GOOGLE_API_KEY = "your-api-key-here"
93
- ```
94
-
95
- 4. **Запуск пр��ложения**
96
- ```bash
97
- python app.py
98
- ```
99
-
100
- 5. **Открытие интерфейса**
101
- Откройте браузер и перейдите по адресу `http://localhost:7860`
102
-
103
- ## 📖 Руководство пользователя
104
-
105
- ### Загрузка документов
106
-
107
- 1. Перейдите на вкладку "📤 Управление документами"
108
- 2. Нажмите "Выберите файлы для загрузки" и выберите нужные документы
109
- 3. Нажмите "📤 Загрузить файлы"
110
- 4. После загрузки нажмите "⚙️ Обработать документы"
111
-
112
- ### Поиск информации
113
-
114
- 1. Перейдите на вкладку "❓ Поиск ответов"
115
- 2. Введите ваш вопрос в поле "Ваш вопрос"
116
- 3. Нажмите "🔍 Найти ответ"
117
- 4. Изучите полученный ответ и источники
118
-
119
- ### Управление системой
120
-
121
- 1. Вкладка "📊 Статус системы" содержит информацию о:
122
- - Количестве обработанных файлов
123
- - Количестве фрагментов в базе знаний
124
- - Времени последнего обновления
125
- - Списке обработанных файлов
126
-
127
- 2. Для очистки всех данных используйте кнопку "🗑️ Очистить все данные"
128
-
129
- ## 🔧 API и интеграция
130
-
131
- ### Основные функции API
132
-
133
- #### Обработка документов
134
- ```python
135
- # Обработка одного документа
136
- processed_chunks = process_single_document(file_path)
137
-
138
- # Обработка множества документов
139
- processed_chunks = process_multiple_documents(file_paths)
140
-
141
- # Создание документов для RAG
142
- documents = create_llama_documents(processed_chunks)
143
- ```
144
-
145
- #### RAG система
146
- ```python
147
- # Создание поискового движка
148
- query_engine = build_rag_system(processed_chunks)
149
-
150
- # Поиск ответов
151
- response = query_documents(query_engine, question)
152
-
153
- # Форматирование ответа с источниками
154
- formatted_response = format_response_with_sources(response)
155
- ```
156
-
157
- ### Структура ответа
158
-
159
- ```python
160
- {
161
- 'answer': 'Текст ответа на вопрос',
162
- 'sources': [
163
- {
164
- 'chunk_number': 1,
165
- 'section': 'Раздел документа',
166
- 'subsection': 'Подраздел документа',
167
- 'chunk_id': 'Идентификатор фрагмента',
168
- 'document_id': 'Имя документа',
169
- 'text_preview': 'Превью текста фрагмента...'
170
- }
171
- ]
172
- }
173
- ```
174
-
175
- ## 🔒 Требования безопасности
176
-
177
- ### Конфиденциальность данных
178
-
179
- - Все документы обрабатываются локально
180
- - Векторные представления хранятся в локальной файловой системе
181
- - API ключи должны храниться в безопасном месте
182
-
183
- ### Рекомендации по безопасности
184
-
185
- 1. Не передавайте конфиденциальные API ключи в коде
186
- 2. Регулярно обновляйте зависимости
187
- 3. Ограничьте доступ к загружаемым файлам
188
- 4. Используйте HTTPS при развертывании в продакшене
189
-
190
- ## 📊 Мониторинг и логирование
191
-
192
- ### Отслеживаемые метрики
193
-
194
- - Количество загруженных документов
195
- - Количество обработанных фрагментов
196
- - Время обработки документов
197
- - Количество поисковых запросов
198
- - Качество ответов системы
199
-
200
- ### Логи системы
201
-
202
- Система автоматически создает логи для:
203
- - Процесса обработки документов
204
- - Ошибок при загрузке файлов
205
- - Результатов поисковых запросов
206
-
207
- ## 🔄 Обновление базы знаний
208
-
209
- ### Добавление новых документов
210
-
211
- 1. Загрузите новые файлы через интерфейс
212
- 2. Нажмите "⚙️ Обработать документы"
213
- 3. Система автоматически интегрирует новые данные
214
-
215
- ### Обновление существующих документов
216
-
217
- 1. Загрузите обновленную версию файла (с тем же именем)
218
- 2. Очистите данные через "🗑️ Очистить все дан��ые"
219
- 3. Загрузите все файлы заново и обработайте
220
-
221
- ## ❓ Часто задаваемые вопросы
222
-
223
- **В: Какие форматы файлов поддерживаются?**
224
- О: PDF, DOCX, TXT, CSV, XLSX, JSON
225
-
226
- **В: Можно ли работать с документами на других языках?**
227
- О: Система оптимизирована для русского языка, но может работать и с другими языками
228
-
229
- **В: Как система определяет релевантность ответов?**
230
- О: Используется векторный поиск на основе semantic similarity с порогом 0.7
231
-
232
- **В: Можно ли изменить настройки обработки текста?**
233
- О: Да, все параметры настраиваются в файле `config.py`
234
-
235
- ## 🤝 Техническая поддержка
236
-
237
- ### Самостоятельная поддержка
238
-
239
- 1. **Изучите документацию** в README.md
240
- 2. **Проверьте конфигурацию** в config.py
241
- 3. **Просмотрите логи** для выявления ошибок
242
- 4. **Обновите зависимости** до последних версий
243
-
244
- ### Устранение неполадок
245
-
246
- | Проблема | Возможное решение |
247
- |----------|-------------------|
248
- | Ошибка API ключа | Проверьте правильность ключа в config.py |
249
- | Медленная обработка | Уменьшите размер документов или увеличите CHUNK_SIZE |
250
- | Нерелевантные ответы | Снизьте RETRIEVER_SIMILARITY_CUTOFF |
251
- | Ошибки памяти | Уменьшите RETRIEVER_TOP_K или MAX_CHUNK_SIZE |
252
-
253
- ## 📄 Лицензия
254
-
255
- Этот проект предназначен для внутреннего использования. Все права защищены.
256
-
257
- ---
 
1
+ ---
2
+ title: AIEXP RAG 1
3
+ emoji: 📉
4
+ colorFrom: yellow
5
+ colorTo: green
6
+ sdk: gradio
7
+ sdk_version: 5.42.0
8
+ app_file: app.py
9
+ pinned: false
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference