← К публикациям

База знаний для ИИ: файлы, векторный поиск и синхронизация

Обзор инструментов для поиска по своим файлам: где хранится индекс, как получать результаты и что происходит после изменения или удаления документа.

Обновлённый коралловый документ переносится из стопки исходников в поисковую картотеку

Найденные фрагменты получают отдельно или используют в чате.

Обзор основан на документации и коде, проверенных 3–4 октября 2026 года. Сравнительных испытаний продуктов не проводилось.

Кто следит за событиями ОС/ФС

Для векторного поиска с обработкой изменённых файлов по событиям я бы начал с Basic Memory, agent-cli RAG или mgrep; у mgrep индекс облачный. Recoll тоже имеет событийный режим, но его поиск — полнотекстовый. У oikb и GPT4All события запускают повторный обход.

Что такое события ОС

События операционной системы (ОС) — уведомления об изменениях файловой системы (ФС). Наблюдатель, или watcher, получает их вместо проверок по таймеру. watchfiles — библиотека Python, fs.watch — интерфейс Node.js. В событийном режиме на Linux оба используют inotify: программа → библиотека → механизм ОС.

Без изменений события обычно экономнее опроса. Чтение файлов нагружает диск, хэширование — процессор; расчёт векторов добавляет вычисления. Поэтому источник сигнала и объём пересканирования — разные критерии: обрабатывается файл или всё дерево.

На узком экране таблицу можно прокрутить в сторону.

Решение Что запускает обновление Что пересканируется Удалённый файл в индексе
agent-cli RAG События ОС: inotify (Linux) Файл из события; при старте — сверка директории Фрагменты удаляются
Basic Memory События ОС: inotify (Linux) Пути из пакета событий Запись заметки удаляется
mgrep События ОС: inotify (Linux) Файл из события; при старте — сверка дерева Отправляется удаление из облачного Store
Recoll События ОС: inotify (Linux) При старте — всё дерево, затем обработка изменений; полный проход запускается отдельно В этой проверке не подтверждено
GPT4All LocalDocs События ОС: inotify (Linux) Директория из события с поддиректориями, плюс сверка удалений Документ, фрагменты и векторы удаляются
Open WebUI + oikb События ОС: inotify (Linux) Всё дерево и хэши файлов после серии событий; загружается только разница Убирается из базы; хранение копии зависит от настроек
Khoj Desktop Таймер, раз в 10 минут Дерево файлов На сервер передаются маркеры удаления
AnythingLLM Desktop Таймер, раз в 10 минут Выбранные файлы Прежнее содержимое сохраняется
QMD Команда qmd update; встроенного watcher нет Коллекция; затем нужен qmd embed Деактивируется; очистка — qmd cleanup
OpenViking: Resource Watch Таймер watch_interval Повторный импорт Git, URL или другого перечитываемого источника При обновлении дерева отсутствующие файлы могут удаляться
OpenViking: локальная загрузка через HTTP SDK Не обновляется автоматически Повторная загрузка после изменений Удаление оригинала не удаляет загруженную копию
Smart Connections Механизм не подтверждён Автоиндексация Obsidian; объём обхода не проверен В этой проверке не подтверждено

Начальный обход нужен событийным инструментам; обход не равен пересчёту всех векторов. watchfiles может переключаться на опрос, например в WSL. «Не подтверждено» означает пробел проверки.

Из файлов в векторный поиск

Оригиналы могут оставаться в Git-репозитории — директории проекта с историей изменений. Программа извлекает текст, делит его на фрагменты и строит эмбеддинги — числовые представления текста. Модель также кодирует запрос; поиск находит близкие к нему фрагменты, даже если слова различаются.

Поисковый индекс — подготовленные данные для быстрого поиска. Векторный индекс хранит числовые представления; гибридный поиск сочетает поиск по векторам и по словам. Для работы с директорией дополнительно нужны чтение файлов и синхронизация изменений.

Найденные фрагменты можно передать модели в контекст — информацию для текущей задачи. Подготовку ответа с такой опорой называют RAG — retrieval-augmented generation. Для самого поиска генерация ответа не обязательна.

  1. ФайлыДиректория прочитана
  2. ТекстФрагменты выделены
  3. ВекторыИндекс обновлён
  4. ПоискФрагменты найдены
Проверяйте весь путь: изменение файла должно дойти до поиска, удаление — убрать старые фрагменты.

Короткая карта выбора

На узком экране таблицу можно прокрутить в сторону.

Решение Какие файлы подключать Индекс и доступ к поиску
QMD Директории Markdown и других поддерживаемых текстов Локальный гибридный поиск; терминал и подключение к агенту
agent-cli RAG Директория документов: тексты, код, PDF, офисные файлы Локальный ChromaDB; поиск используется в запросах к чату
Basic Memory Markdown-заметки и документация Локальный векторный и гибридный поиск; команды и инструменты агента
mgrep Файлы репозитория Облачный Mixedbread Store; смысловой поиск из терминала и агента
GPT4All LocalDocs Директория поддерживаемых документов Локальные эмбеддинги; найденные фрагменты используются в чате
Smart Connections Заметки в хранилище Obsidian Локальные эмбеддинги; смысловой поиск и похожие заметки внутри Obsidian
Open WebUI + oikb Директория документов для базы знаний чата Индекс на сервере Open WebUI; oikb доставляет изменения

Локальный индекс не гарантирует локальную обработку: облачная модель эмбеддингов или ответа может получать документы либо найденные фрагменты.

Инструменты для файлов и векторного индекса

QMD: поиск без обязательного чата

QMD объединяет директории текстов в коллекции и ищет по словам, векторам или обоими способами. Модели поиска работают локально.

Доступ есть через интерфейс командной строки (CLI) и через MCP — протокол подключения инструментов к приложениям с ИИ. После правок нужны qmd update и qmd embed. Встроенного наблюдателя в проверенном CLI нет: автоматический запуск этих команд придётся настроить отдельно.

agent-cli RAG: наблюдаемая директория для чата

agent-cli RAG индексирует директорию в локальной векторной базе ChromaDB. Поддерживает тексты, код, PDF и офисные документы; следит за изменениями и сверяет файлы при старте.

Основной интерфейс — RAG-прокси: сервис, добавляющий найденные документы к запросу чата. Отдельный поисковый интерфейс здесь не проверялся. Эмбеддинги можно получать через локальный Ollama или внешнего провайдера.

Basic Memory: Markdown как база знаний агента

Basic Memory превращает Markdown-заметки в базу знаний агента с поиском по словам, векторам и в гибридном режиме. В стандартной локальной установке эмбеддинги создаёт локальная модель; доступ есть через команды и инструменты агента.

Подходит прежде всего для Markdown с автоматическим обновлением. Для русского корпуса стоит выбрать и проверить подходящую модель эмбеддингов: стандартная ориентирована на английский.

mgrep: поиск по репозиторию с облачным индексом

mgrep ищет по смыслу из терминала и агентных инструментов. Файлы загружаются в облачный Mixedbread Store. mgrep watch выполняет начальную сверку, затем обрабатывает изменения и удаления. Подходит, если допустимо хранить индекс репозитория в сервисе.

GPT4All LocalDocs: локальные документы в настольном чате

LocalDocs связывает директорию с коллекцией и создаёт локальные эмбеддинги. Пользователь выбирает коллекцию в настольном чате и получает ответ со ссылками на источники.

В коде подтверждены наблюдение за директорией, стартовая сверка и удаление исчезнувших документов вместе с векторами. Рассмотренный сценарий — поиск внутри чата; самостоятельный поисковый сервис не проверялся.

Smart Connections: векторный поиск внутри Obsidian

Smart Connections автоматически индексирует заметки Obsidian локальной моделью. В Lookup можно искать по смыслу, в Connections — находить заметки, близкие к открытой. Генерация ответа для такого поиска не требуется.

Работает внутри Obsidian. Обновление и удаление файлов требуют отдельной проверки; чат относится к отдельному плагину Smart Chat.

Open WebUI + oikb: файлы в серверной базе знаний

oikb доставляет файлы в базу знаний Open WebUI версии 0.9.6 или новее. Эмбеддинги и поиск настраиваются на сервере Open WebUI.

oikb watch после события сверяет дерево и передаёт отличия. Перед каждым запуском наблюдения нужен oikb sync: проверенная команда watch сама начальную сверку не выполняет.

Recoll: наблюдение за файлами и полнотекстовый поиск

Recoll имеет два режима: обычный recollindex выполняет один обход; recollindex -m после начального обхода остаётся работать, получает уведомления ОС и обновляет индекс. На Linux используется inotify.

Мониторинг большого дерева и частые обновления тоже расходуют ресурсы. Поиск — полнотекстовый, на Xapian, без встроенных векторных эмбеддингов; доступны приложение, командная строка и программный интерфейс.

Для более широких задач

OpenViking обновляет Git, URL и другие доступные источники по таймеру watch_interval (Resource Watch). Локальные файлы через HTTP SDK нужно загружать заново после изменения или удаления оригиналов.

Khoj — поиск и чат по заметкам. В таблице синхронизации рассмотрен настольный клиент; плагины Obsidian и Emacs могут синхронизироваться иначе.

AnythingLLM Desktop — помощник с выбранными документами. Периодическое обновление отдельных файлов не делает базу зеркалом всей директории.

Onyx стоит рассмотреть для поиска команды по рабочим системам, RAGFlow — для сложных документов, Dify — для собственного приложения. Подключение локальной директории и её синхронизация в этих платформах в основной сравнительный сценарий не включены.

Практика: проверить на одной директории

Подключите небольшую тестовую директорию. Локальная копия репозитория включает незавершённые правки; импорт удалённой ветки видит только отправленную туда версию.

В тестовом support.md запишите вымышленный факт: «Срок ответа проекта „Маяк“ — 2 рабочих дня». Во второй файл поместите уникальную метку КЕДР-714.

  1. Найдите срок ответа запросом «как долго ждать помощи по Маяку» и убедитесь, что файл с меткой тоже находится. Для проверки векторов выберите векторный режим, если он доступен.
  2. Измените срок на 5 дней и добавьте файл во вложенную директорию. Дождитесь, пока поиск увидит оба изменения.
  3. Удалите файл с меткой и вложенную директорию, а support.md переименуйте. Удалённые документы должны исчезнуть; переименованный — находиться по новому пути. Если доступен список индексированных файлов, проверьте и его.
  4. Остановите синхронизацию, измените файл и запустите её снова. Проверьте подхват правки; для oikb сначала выполните sync, затем watch.

Сначала проверяйте найденные фрагменты, затем новый диалог: старые ответы остаются в истории чата. Для оценки качества проверьте десять вопросов на языке документов, включая вопрос без ответа.

С чего я бы начал

Для локального поиска по Markdown с событийным обновлением — Basic Memory; для репозитория с облачным индексом — mgrep. QMD подходит, если устраивает отдельно настроенный запуск обновления.

Для чата с директорией — agent-cli RAG, настольного чата — GPT4All LocalDocs, существующего Obsidian — Smart Connections. Выбор стоит подтвердить четырьмя проверками выше.

Термины

  • Git-репозиторий — директория проекта с историей изменений.
  • Эмбеддинг — числовое представление текста для поиска по смыслу.
  • Поисковый индекс — подготовленные данные для быстрого поиска.
  • Векторный поиск — поиск близких числовых представлений запроса и документов.
  • Гибридный поиск — сочетание поиска по словам и по векторам.
  • Контекст — информация, доступная агенту при выполнении задачи.
  • RAG — подготовка ответа модели с опорой на найденные документы.
  • CLI — управление программой через текстовые команды.
  • MCP — протокол подключения инструментов и данных к приложениям с ИИ.
  • RAG-прокси — сервис, добавляющий найденные документы к запросу модели.
  • События ОС/ФС — уведомления операционной системы об изменениях файловой системы.
  • Watcher — наблюдатель, запускающий обработку изменений.

Источники

Проверка — 3–4 октября 2026 года. Ссылки на код закреплены на рассмотренных ревизиях; поведение установленного релиза может отличаться.

Налаживаете работу с ИИ-агентами?

Помогаю командам выбрать рабочий процесс, подготовить знания и проверить результат внедрения. Практические заметки публикую в Telegram-канале.

Работать со мнойили канал «Жизнь стартапа в стране ИИ»