Локальный семантический поиск для 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
👀 Смотрите также

TRELLIS.2 Image-to-3D адаптирован для нативной работы на Apple Silicon.
Разработчик портировал 4-миллиардную параметрическую модель TRELLIS.2 от Microsoft для преобразования изображений в 3D, чтобы она работала нативно на Apple Silicon через PyTorch MPS, заменив операции, специфичные для CUDA, на чисто PyTorch-альтернативы. Порт генерирует меши с ~400K вершин из одиночных фотографий примерно за 3,5 минуты на M4 Pro с 24 ГБ памяти.

ClawVibe: Бесплатный голосовой ассистент для iOS для AI-агентов с STT/TTS на устройстве
ClawVibe — это нативное iOS-приложение, обеспечивающее голосовое взаимодействие с AI-агентами без помощи рук во время поездок. Оно использует локальное распознавание речи и TTS, поддерживает CarPlay и применяет голосовую биометрию для фильтрации фонового шума. По сети передаётся только текст.

Иллюзия завершённой работы в Claude Code: Почему анализ пути агента важнее, чем diff
Claude Code способен выдать чистый diff, пройти тесты и написать хорошее резюме, но при этом упустить реальное поведение, проблемы безопасности или архитектурные ограничения. Автор утверждает, что теперь необходимо проверять цепочку действий (планы, прочитанные файлы, выполненные команды, вывод тестов), а не только итоговый diff.

HN SOTA: Отслеживание популярности моделей кодирования через комментарии на Hacker News
HN SOTA — это ежедневно обновляемый конвейер, который собирает комментарии Hacker News, использует Gemini для идентификации моделей кодирования из списка OpenRouter и записывает тональность упоминаний в публичную Google Таблицу. Отображаются топ-10 моделей по количеству упоминаний за скользящие 10 дней.