Добавил возможность индексации директории, указываемой из интерфейса

This commit is contained in:
ki.sagidullin
2026-04-01 09:04:19 +05:00
parent b31e1377b3
commit 4816950382
2 changed files with 67 additions and 11 deletions

View File

@@ -65,6 +65,23 @@ class AgenticRAGInterface:
self.conversation_history = []
return "История очищена", ""
def index_documents(self, folder_path: str):
"""Индексация документов из указанной папки"""
if not folder_path:
return "❌ Укажите путь к папке", ""
if not os.path.exists(folder_path):
return f"❌ Папка не существует: {folder_path}", ""
if not os.path.isdir(folder_path):
return f"❌ Указанный путь не является папкой: {folder_path}", ""
try:
chunks = self.kb.load_documents(folder_path)
return f"✅ Успешно! Индексировано чанков: {len(chunks)}", folder_path
except Exception as e:
return f"❌ Ошибка при индексации: {str(e)}", ""
# Инициализируем базу
kb = LocalKnowledgeBase()
# Загружаем документы (если есть)
@@ -124,6 +141,26 @@ def create_gradio_interface():
label="Примеры запросов"
)
# Секция индексации документов
gr.Markdown("---")
gr.Markdown("### 📂 Индексация документов")
with gr.Row():
with gr.Column(scale=3):
folder_input = gr.Textbox(
label="Путь к папке с файлами",
placeholder="./documents или /home/user/my_project",
lines=1
)
with gr.Column(scale=1):
index_btn = gr.Button("📥 Индексировать", variant="secondary")
status_output = gr.Textbox(
label="Статус индексации",
lines=2,
interactive=False
)
# Обработчики событий
submit_btn.click(
fn=interface.process_query,
@@ -143,4 +180,11 @@ def create_gradio_interface():
outputs=[answer_output, history_output]
)
# Обработчик индексации
index_btn.click(
fn=interface.index_documents,
inputs=[folder_input],
outputs=[status_output, folder_input]
)
return demo