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

Найденные фрагменты получают отдельно или используют в чате.
Обзор основан на документации и коде, проверенных 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. Для самого поиска генерация ответа не обязательна.
- ФайлыДиректория прочитана
- ТекстФрагменты выделены
- ВекторыИндекс обновлён
- ПоискФрагменты найдены
Короткая карта выбора
На узком экране таблицу можно прокрутить в сторону.
| Решение | Какие файлы подключать | Индекс и доступ к поиску |
|---|---|---|
| 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.
- Найдите срок ответа запросом «как долго ждать помощи по Маяку» и убедитесь, что файл с меткой тоже находится. Для проверки векторов выберите векторный режим, если он доступен.
- Измените срок на 5 дней и добавьте файл во вложенную директорию. Дождитесь, пока поиск увидит оба изменения.
- Удалите файл с меткой и вложенную директорию, а
support.mdпереименуйте. Удалённые документы должны исчезнуть; переименованный — находиться по новому пути. Если доступен список индексированных файлов, проверьте и его. - Остановите синхронизацию, измените файл и запустите её снова. Проверьте подхват правки; для 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 года. Ссылки на код закреплены на рассмотренных ревизиях; поведение установленного релиза может отличаться.
- QMD: README, индекс — поиск, обновление и деактивация документов.
- agent-cli: устройство RAG, индексатор — форматы, модели, наблюдение и удаление.
- Basic Memory: семантический поиск, watcher, удаление — поиск и синхронизация заметок.
- mgrep: README, watch — облачный поиск и наблюдение.
- GPT4All LocalDocs, индексатор — поиск в чате, обновление и удаление векторов.
- Smart Connections: README — локальные эмбеддинги и поиск в Obsidian.
- Open WebUI: oikb, watcher, команда watch, обход дерева — события запускают построение полного манифеста.
- Recoll: наблюдение, поиск, Python API — постоянное обновление полнотекстового индекса и доступ к нему.
- OpenViking: импорт, Watch API — Resource Watch по расписанию и ограничение для локальной загрузки.
- Khoj Desktop: код, AnythingLLM: Live Document Sync — периодическое обновление и удаления.
- Onyx, RAGFlow, Dify — командные источники, обработка документов и собственные приложения.
- watchfiles, notify: механизм ОС, переход на опрос, Node.js:
fs.watch, watchdog, Qt:QFileSystemWatcher— наблюдение и опрос.
Налаживаете работу с ИИ-агентами?
Помогаю командам выбрать рабочий процесс, подготовить знания и проверить результат внедрения. Практические заметки публикую в Telegram-канале.