Помощник юриста: поиск по базе из 3000 дел прямо в переписке
- 3000+ документов в базе (с автоматическим пополнением)
- 30 000+ чанков в векторной таблице для семантического поиска
- Поиск по делу: из ручного перебора → в ответы за секунды
- Гибридный поиск: точные ответы по номеру дела + поиск по смыслу
- Автозагрузка PDF: клиент добавляет файлы, система обрабатывает сама
- Логирование запросов/ответов для аналитики и контроля качества
Юридическая компания обратилась с задачей: в базе почти 3000 судебных документов, она постоянно пополняется, а поиск нужного дела вручную отнимает много времени. Нужно было сделать инструмент, который позволит юристу быстро находить конкретное дело по номеру и одновременно искать по смыслу по всей базе.
Я реализовал решение в формате RAG ЮРИСТ — бот для юристов в Telegram, который работает по гибридному сценарию:
- Точный поиск (SQL) — когда в запросе есть номер дела или конкретный реквизит.
- Семантический поиск (pgvector) — когда запрос “по смыслу”: события, обстоятельства, формулировки, похожие кейсы.
- AI-роутинг — бот определяет тип вопроса и отправляет его в нужную ветку, чтобы не терять точность.
Архитектура и стек: — n8n (2 workflow: загрузчик и бот) — Supabase (PostgreSQL) + pgvector — OpenAI Embeddings для векторизации — ChatGPT как агент для формирования структурированного ответа — Яндекс.Диск как источник PDF (пакетная загрузка) — Telegram как интерфейс (команды, кнопки, удобный UX)
Как устроена загрузка документов: Клиент загружает PDF пачкой в папку на Яндекс.Диске. Загрузчик в n8n автоматически забирает документы по одному, извлекает текст, достаёт реквизиты через AI-агента в формате JSON, сохраняет дело в таблицу Cases, режет текст на чанки, создаёт эмбеддинги и записывает их в таблицу case_chunks для семантического поиска. После обработки файл переносится в папку “обработано”.
Как устроен бот: Пользователь пишет в Telegram. Бот определяет команду или вопрос, дальше AI-роутинг решает: SQL-ветка (точно по делу) или векторная ветка (по смыслу). Ответ формируется структурированно. Если ответ длинный — бот упаковывает результат в .txt и добавляет краткое summary, чтобы не упираться в лимиты Telegram. Все запросы и ответы логируются в Supabase для аналитики и улучшения качества.
В конце кейса я записал видео с подробной демонстрацией: показываю оба workflow в n8n, структуру таблиц Supabase, роутинг запросов, гибридный поиск, чанкинг и пример работы бота на реальном запросе.