Автоматизация семантического слоя

Разработчик проекта obsidian-ai-hub расширил функционал плагина, превратив ручную индексацию заметок в автоматизированный процесс. Теперь система подписывается на события Obsidian (Vault) и самостоятельно обновляет локальный векторный индекс при изменении, переименовании или удалении файлов. Чтобы избежать лишней нагрузки, внедрен механизм debounce: плагин ждет 1500 мс после последнего изменения текста, прежде чем отправить запрос на пересчет эмбеддингов.

Для обеспечения стабильности данных реализована процедура Startup reconciliation. Она предотвращает случайное восстановление индекса, если приложение было принудительно завершено в момент очистки базы данных, гарантируя, что состояние маркеров синхронизации и физического индекса всегда совпадает.

Поиск похожих заметок и дублей

Новые функции — Similar Notes и поиск потенциальных дублей — работают на базе уже существующих векторов. Вместо повторных запросов к провайдерам эмбеддингов, система вычисляет сходство документов, усредняя векторы их фрагментов (chunks). Чтобы избежать ложноположительных результатов из-за математического шума в коротких или противоречивых текстах, внедрен параметр coherence (когерентность), отсекающий документы с низкой согласованностью векторов.

Для поиска дублей используется алгоритм сравнения пар с порогом косинусного сходства 0.95. Чтобы оптимизировать потребление памяти на мобильных устройствах и десктопах, вместо создания огромного списка всех возможных пар документов используется структура bounded top-K heap. Также введена защита от ложных срабатываний на слишком коротких заметках: документы короче 32 значимых символов игнорируются при поиске дубликатов.

Перспективы развития

На текущий момент локальный семантический слой включает в себя чанкинг, инкрементальную индексацию, автоматическую синхронизацию и поиск похожих пар. Следующим этапом развития проекта планируется внедрение технологии RAG (Retrieval-Augmented Generation), которая позволит использовать найденный контекст для генерации ответов на вопросы пользователя.