Локальный семантический поиск для AI-диалогов с использованием fastembed и LanceDB

Разработчик реализовал локальную систему семантического поиска по истории диалогов с ИИ, обработав 368 тысяч сообщений без зависимостей от облачных сервисов или API-ключей. Проект использует fastembed с моделью BAAI/bge-small-en-v1.5 для эмбеддингов на CPU и LanceDB в качестве векторного хранилища, работающего как одиночная директория без серверного процесса.
Технический стек
- Эмбеддинги: fastembed с моделью BAAI/bge-small-en-v1.5 (384 измерения)
- Векторное хранилище: LanceDB — одиночная директория, без серверного процесса, с поддержкой добавления
- Импорт данных: Загрузка из JSONL-транскриптов сессий (Claude Code, любой экспорт чатов)
- Производительность эмбеддинга: ~500 документов/сек на процессоре M4
Ключевые детали реализации
За 4 месяца итераций разработчик извлёк несколько практических уроков:
- Избирательный эмбеддинг: Ранние версии обрабатывали каждое сообщение, что снижало соотношение сигнал/шум. Текущая реализация эмбеддит только сообщения пользователей и содержательные ответы ассистента (пропуская ответы вроде «конечно, вот код»), сокращая количество векторов на 60% и улучшая качество поиска.
- Стратегия чанкинга: Переход от чанков фиксированного размера к чанкам по репликам в диалоге значительно повысил релевантность поиска. Выбор модели (пробовались nomic-embed-text, bge-large, all-MiniLM) показал меньшую разницу по сравнению с подходом к чанкингу.
- Преимущества LanceDB: Разработчик назвал LanceDB «невероятно недооценённым для персонального масштаба» — без сервера, Docker, просто директория с мгновенным добавлением новых векторов, заменившая переусложнённую настройку pgvector.
- Рабочий процесс переэмбеддинга: Модель bge-small-en-v1.5 с 384 измерениями достаточно быстра для переэмбеддинга каждый час через cron-задачу. Полная переиндексация 117 тысяч векторов занимает примерно 4 минуты на железе M2.
Метрики производительности
- Всего обработано сообщений: 407 тысяч
- Проиндексировано векторов: 87 тысяч
- Задержка поиска (p50): 12 мс на 117 тысячах векторов
- Время полной переиндексации: ~4 минуты (M2)
- Хранилище: ~180 МБ на диске
- Требуется API-ключей: 0
Проект имеет открытый исходный код под лицензией MIT и доступен по адресу github.com/mordechaipotash/brain-mcp. Установка выполняется через pipx install brain-mcp && brain-mcp setup.
📖 Read the full source: r/LocalLLaMA
👀 Смотрите также

Storybloq: трекер проектов для Claude Code с Mac-приложением, CLI и MCP
Storybloq — это бесплатный трекер проектов с открытым исходным кодом, который живёт в .story/ внутри вашего репозитория. Он включает приложение для Mac (App Store), CLI и MCP-сервер, предоставляющий задачи, тикеты и передачу сессий Claude Code.

certctl: Платформа для управления жизненным циклом сертификатов с самостоятельным хостингом, предоставляющая 78 API-эндпоинтов для автоматизации с помощью AI-агентов.
certctl — это самодостаточная платформа для управления жизненным циклом сертификатов, написанная на Go и TypeScript, которая предоставляет 78 REST API-эндпоинтов для управления сертификатами. Платформа не зависит от эмитента и целевой системы, а также планируется внедрение MCP-сервера для предоставления всего функционала в виде нативных инструментов MCP.

Deblank: Инструмент для Удаления Форматирования Кода с Целью Сокращения Токенов для LLM
Deblank — это инструмент с открытым исходным кодом, который удаляет форматирование кода (отступы, пробелы, переносы строк) перед отправкой в LLM, сокращая количество токенов примерно на 30% для Java/C++ и на 9% для Python с задержкой около 76 мс. Поддерживает Python, Java, C/C++, C#, JS/TS и Go.

Statespace: Создавайте интерактивные веб-приложения для агентов OpenClaw с помощью Markdown
Statespace — это бесплатный, открытый фреймворк для создания и обмена веб-приложениями, совместимыми с ИИ, которыми агенты OpenClaw могут управлять и взаимодействовать с ними, используя чистый Markdown. Он позволяет определять инструменты, компоненты и инструкции в Markdown-файлах, к которым агенты получают доступ через HTTP.