Разработка платформы “Второй мозг”: база знаний, векторный поиск и автоиндексация файлов
В рамках проекта была выполнена разработка MVP-платформы для создания персональной и корпоративной базы знаний — системы, которую условно можно назвать “вторым цифровым мозгом”. Основная задача проекта заключалась не просто в хранении файлов или заметок, а в создании универсального ядра знаний, куда можно подключать разные источники данных: аудиозаписи, документы, почту, облачные хранилища и внешние сервисы.
Задача проекта
Заказчику требовалась система, которая сможет собирать информацию из разных источников, автоматически обрабатывать её, извлекать смысловые данные и делать их доступными через поиск и AI-интерфейс.
В качестве первых источников рассматривались:
- аудиозаписи и транскрипции из PLAUD;
- ручная загрузка документов;
- файлы из Яндекс.Диска, Google Cloud и Dropbox;
- почтовые ящики;
- текстовые заметки;
- PDF, DOCX, TXT, MD и аудиофайлы.
Главная архитектурная идея заключалась в том, чтобы не строить систему вокруг одного сервиса, например PLAUD, а создать универсальное Knowledge Core — ядро знаний, к которому в дальнейшем можно подключать любые источники.
Выбор архитектуры и сервера
На первом этапе был выбран стек для быстрого запуска MVP и дальнейшего масштабирования:
- Laravel в качестве backend-ядра;
- MySQL для хранения структурированных данных;
- Qdrant для векторной базы;
- Redis и очереди Laravel для фоновой обработки;
- Vite для сборки frontend-части админки;
- Docker/Sail для локальной разработки;
- OpenAI API для транскрибации, анализа текста и embeddings;
- Custom GPT Actions для подключения базы знаний к чату.
Также была проведена оценка серверной части. Важно было учесть, что проект работает не только с текстом, но и с файлами, аудио, индексами и фоновыми задачами. Поэтому архитектура была подготовлена так, чтобы проект можно было сначала развернуть локально, затем перенести на VPS и дальше масштабировать отдельные компоненты: базу, Qdrant, очереди и файловое хранилище.
Локальное развёртывание и перенос
Проект был развёрнут локально на Mac с использованием Docker-окружения. Были настроены контейнеры для Laravel, MySQL, Redis, Qdrant и вспомогательных сервисов.
После локальной настройки была подготовлена структура для переноса на сервер:
- конфигурация окружения через
.env; - Docker-структура;
- миграции базы данных;
- очереди обработки;
- отдельные сервисы для индексации и обработки файлов;
- API-endpoints для внешних интеграций;
- админка для управления источниками данных.
Такой подход позволяет вести разработку локально, а затем переносить проект на production-сервер без переписывания логики.
Универсальное ядро знаний
В проекте была создана структура базы данных для хранения не просто файлов, а смысловых элементов:
knowledge_items— основные записи базы знаний;knowledge_chunks— фрагменты текста для индексации;knowledge_tags— теги;knowledge_entities— сущности: люди, проекты, компании, темы;knowledge_relations— связи между сущностями;extracted_tasks— извлечённые задачи;extracted_facts— факты;extracted_decisions— решения;source_files— исходные загруженные файлы;audio_transcriptions— результаты транскрибации аудио;mail_accountsиmail_messages— структура для подключения почтовых ящиков.
Это позволило сделать систему не просто файловым архивом, а основой для интеллектуального поиска и анализа.
Автоматическая индексация файлов
Была реализована ручная и автоматическая загрузка файлов разных типов:
- TXT;
- MD;
- PDF;
- DOCX;
- Audio: MP3, M4A, WAV, WEBM, OGG, FLAC.
Для каждого файла система определяет тип, извлекает текст и отправляет его в общий pipeline обработки.
Для текстовых файлов и документов работает схема:
Файл → извлечение текста → AI-анализ → chunks → embeddings → Qdrant
Для аудиофайлов схема расширена:
Audio → очередь → OpenAI transcription → transcript → AI-анализ → Qdrant
Аудио обрабатывается через очереди, чтобы пользователь не ждал завершения транскрибации в интерфейсе. После загрузки файла задача ставится в очередь, а система в фоне получает транскрипцию и создаёт запись в базе знаний.
Интеграция с PLAUD
В процессе работы выяснилось важное ограничение: PLAUD через Zapier не отдаёт исходный аудиофайл, а передаёт только готовую транскрипцию и summary, если они уже сформированы внутри PLAUD.
Поэтому были реализованы два сценария:
Первый сценарий — через Zapier:
PLAUD → transcript/summary → Zapier → Laravel webhook → Knowledge Core
Второй сценарий — через ручную загрузку аудио:
PLAUD → ручное скачивание аудио → загрузка в админку → OpenAI transcription → Knowledge Core
Это позволило не зависеть полностью от ограничений PLAUD API и сохранить гибкость системы.
Работа с облачными хранилищами
Архитектура была подготовлена под подключение облачных источников:
- Яндекс.Диск;
- Google Cloud / Google Drive;
- Dropbox.
Основная идея — приводить файлы из любых хранилищ к единому формату обработки:
Cloud file → SourceFile → TextExtractor → KnowledgeItem → Qdrant
Такой подход позволяет подключать новые источники без изменения ядра системы. Источник может быть любым: папка в Dropbox, директория на Google Drive, выгрузка с Яндекс.Диска или файл, загруженный вручную через админку.
Векторная база данных Qdrant
Для семантического поиска была подключена векторная база Qdrant.
Каждая запись разбивается на chunks — небольшие смысловые фрагменты. Затем для каждого фрагмента создаётся embedding, который сохраняется в Qdrant вместе с payload-метаданными:
- ID записи;
- источник;
- тип файла;
- категория;
- проект;
- дата;
- текст фрагмента.
Это позволяет искать не только по точному совпадению слов, но и по смыслу.
Также был добавлен гибридный поиск: семантический поиск через Qdrant + keyword fallback через MySQL. Это важно для коротких запросов, кодов, номеров и точных фраз.
Подключение базы к Custom GPT
Для работы с базой знаний через чат был реализован отдельный API для Custom GPT Actions.
Схема работы:
Custom GPT → Laravel API → Qdrant/MySQL → ответ пользователю
Была подготовлена OpenAPI-схема, авторизация через API key и endpoints:
- поиск по базе знаний;
- получение полной записи;
- возврат summary, tasks, facts, decisions и content.
Таким образом, чат может работать не “из головы”, а на основе данных из частной базы знаний.
Админка проекта
Для управления системой была разработана админка в минималистичном стиле, вдохновлённом PLAUD.
В админке реализованы:
- авторизация;
- добавление текстовых записей;
- загрузка файлов;
- просмотр исходных файлов;
- просмотр результатов обработки;
- отображение summary, задач, фактов и решений;
- управление почтовыми ящиками;
- запуск синхронизации;
- просмотр статусов обработки;
- интеграция с очередями;
- подключение Vite и отдельного CSS.
Интерфейс был переработан: стили вынесены из Blade-шаблонов в отдельные CSS-файлы, настроена сборка через Vite и npm run build.
Подключение почтовых ящиков
Дополнительно была подготовлена структура для подключения не только Mail.ru, но и разных почтовых провайдеров через IMAP:
- Mail.ru;
- Gmail;
- Yandex;
- Custom IMAP.
Через админку можно добавлять ящики, указывать IMAP-настройки, проверять подключение и запускать синхронизацию. После синхронизации письма также могут попадать в общее Knowledge Core и индексироваться в Qdrant.
Результат работы
В результате был создан фундамент платформы для персональной или корпоративной базы знаний.
Система уже умеет:
- принимать текстовые записи;
- загружать документы;
- извлекать текст из TXT, MD, PDF и DOCX;
- загружать аудиофайлы;
- отправлять аудио на транскрибацию;
- обрабатывать данные через очереди;
- выделять summary, задачи, факты и решения;
- сохранять структурированные данные в MySQL;
- наполнять векторную базу Qdrant;
- искать по смыслу и по ключевым словам;
- принимать данные из PLAUD через Zapier;
- подключаться к Custom GPT;
- готовиться к интеграции с почтой и облачными хранилищами.
Технологии
В проекте использовались:
Laravel
PHP
MySQL
Redis
Qdrant
Docker
Laravel Sail
Vite
OpenAI API
Zapier Webhooks
IMAP
Google Cloud / Drive architecture
Dropbox architecture
Yandex Disk architecture
Custom GPT Actions
Вывод
Проект получился не просто интеграцией с PLAUD или загрузчиком файлов, а полноценным фундаментом для AI-платформы управления знаниями.
Ключевое решение — построить систему вокруг универсального ядра знаний, а не вокруг одного источника данных. Благодаря этому в дальнейшем можно подключать новые каналы: почту, мессенджеры, облачные диски, CRM, документы, аудио и внешние API.
Такая архитектура позволяет развивать продукт поэтапно: от MVP с ручной загрузкой и PLAUD-интеграцией до полноценного “второго мозга” с автоматическим сбором, анализом, поиском и AI-ассистентом.
