Разработка платформы “Второй мозг”: база знаний, векторный поиск и автоиндексация файлов

 

В рамках проекта была выполнена разработка 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.

Таким образом, чат может работать не “из головы”, а на основе данных из частной базы знаний.

Админка проекта

 

Caption

 

Для управления системой была разработана админка в минималистичном стиле, вдохновлённом 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-ассистентом.

 

 

 



 

 


Сделать заказ

| необходим для связи с вами
В кротчайшие сроки я свяжусь с вами.

Также вы можетете связать со мной:
telegram: @ifwcom