Как сделать RAG по документам компании с учётом прав доступа?
- Как не показать сотруднику в RAG документы, к которым у него нет доступа?
Права проверяются при поиске, а не моделью: каждый фрагмент хранит метаданные доступа (документ, группы, уровень конфиденциальности), поисковый запрос всегда содержит фильтр по правам текущего пользователя, и в контекст модели попадает только разрешённое. Права синхронизируются с источниками (SharePoint, Confluence, файловые хранилища) — изменение доступа должно быстро доходить до индекса.
- Фильтр до поиска (pre-filter) точнее, чем отсев после — иначе выдача пустеет
- Модель нельзя просить «не показывать секретное» — инъекция и ошибки обойдут
- Кэш ответов и семантический кэш — только в пределах одинаковых прав
А ещё Аудит: какие документы были показаны какому пользователю
Подробно
Модель данных: фрагмент → документ → список групп и пользователей с доступом. В векторной базе — поле с группами для фильтрации; при большом числе групп — идентификаторы групп и фильтр «пересечение с группами пользователя».
Синхронизация прав: события от источника или периодическая сверка; при отзыве доступа — немедленное обновление метаданных, не дожидаясь переиндексации текста.
Подводные камни:
- производные данные: резюме, ответы в кэше, память ассистента — тоже несут информацию из закрытых документов;
- логи и трассы содержат найденные фрагменты — доступ к ним ограничен;
- фильтр, сильно сужающий выборку, ухудшает работу приближённого индекса — нужны индексы с поддержкой фильтров или разделение по арендаторам.
Проверка: тестовые пользователи с разными правами и набор запросов, где правильный ответ — «нет доступа к информации».
Что хотят услышать
- Фильтрация на уровне поиска по метаданным прав.
- Синхронизация прав и производные данные.
- Тестирование и аудит.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Попросить модель в промпте не показывать документы без доступа
- ✓Фильтр по правам пользователя в самом поиске, права синхронизировать
- ✗Найти документы без фильтра и отсеять запрещённые после — так поиск полнее
- ✗Права достаточно проверить один раз при индексации документов в базу
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.