Как поддерживать индекс RAG в актуальном состоянии при изменении документов?
- Как обновлять векторный индекс?
- Что делать с удалёнными документами в RAG?
Хранить для каждого документа идентификатор источника, версию или хеш содержимого и список его фрагментов. При синхронизации: новые документы проиндексировать, изменённые (хеш другой) — удалить старые фрагменты и записать новые, удалённые — убрать все их фрагменты. Изменения получают событиями от источника или периодическим сравнением списков. Полная переиндексация нужна при смене модели эмбеддингов или правил разбиения — её делают в новый индекс с переключением.
- Удаление важно не меньше добавления: устаревший ответ хуже отсутствующего
- Изменения прав доступа синхронизируются так же, как содержимое
- Хеш по фрагментам позволяет не пересчитывать эмбеддинги неизменных частей
А ещё Метрика свежести: время от изменения в источнике до появления в поиске
Подробно
Схема хранения:
documents: source_id, url, content_hash, acl, updated_at
chunks: chunk_id, source_id, chunk_hash, text, embedding, acl
Синхронизация:
- Получить список документов источника с датами или хешами.
- Сравнить с сохранённым: новые, изменённые, удалённые.
- Для изменённых — разбить заново, переиспользовать эмбеддинги фрагментов с тем же хешем.
- Атомарно заменить фрагменты документа.
Полная переиндексация. Строится новый индекс параллельно со старым, проверяется набором оценки поиска и переключается псевдонимом — без простоя.
Что хотят услышать
- Идентификаторы и хеши документов и фрагментов.
- Обработка новых, изменённых, удалённых.
- Синхронизация прав.
- Полная переиндексация в новый индекс.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Хранить хеш документа и заменять его фрагменты при изменении; удалённые убирать
- ✗Раз в год переиндексировать всё, в остальное время индекс не трогать
- ✗Добавлять новые версии фрагментов, старые не удалять — пусть поиск выберет
- ✗При смене модели эмбеддингов достаточно пересчитать только новые документы
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.