Вопрос с собеседования · AI и LLM

Как поддерживать индекс RAG в актуальном состоянии при изменении документов?

MiddleRAG
Ещё спрашивают так:
  • Как обновлять векторный индекс?
  • Что делать с удалёнными документами в RAG?
Коротко

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

  • Удаление важно не меньше добавления: устаревший ответ хуже отсутствующего
  • Изменения прав доступа синхронизируются так же, как содержимое
  • Хеш по фрагментам позволяет не пересчитывать эмбеддинги неизменных частей

А ещё Метрика свежести: время от изменения в источнике до появления в поиске

Подробно

Схема хранения:

documents: source_id, url, content_hash, acl, updated_at
chunks:    chunk_id, source_id, chunk_hash, text, embedding, acl

Синхронизация:

  1. Получить список документов источника с датами или хешами.
  2. Сравнить с сохранённым: новые, изменённые, удалённые.
  3. Для изменённых — разбить заново, переиспользовать эмбеддинги фрагментов с тем же хешем.
  4. Атомарно заменить фрагменты документа.

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

Что хотят услышать

  • Идентификаторы и хеши документов и фрагментов.
  • Обработка новых, изменённых, удалённых.
  • Синхронизация прав.
  • Полная переиндексация в новый индекс.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Хранить хеш документа и заменять его фрагменты при изменении; удалённые убирать
  • ✗Раз в год переиндексировать всё, в остальное время индекс не трогать
  • ✗Добавлять новые версии фрагментов, старые не удалять — пусть поиск выберет
  • ✗При смене модели эмбеддингов достаточно пересчитать только новые документы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования