Права доступа в RAG: почему фильтра после поиска недостаточно
Внутренняя база знаний содержит общие инструкции и документы отдельных команд. Пользователь задаёт невинный вопрос о бюджете, а поиск находит секретный финансовый файл. Если сервис сначала отправляет все результаты модели и только затем прячет ссылки, доступ уже нарушен: закрытое содержание участвовало в генерации.
Разделите два решения: какие документы пользователь вправе читать и какие из разрешённых документов релевантны вопросу. Полномочия должны приходить из доверенной серверной сессии, а не из текста запроса.
Сценарий и ожидаемое поведение
Данные ниже вымышлены: они показывают способ разбора, а не измерения действующего сервиса.
| Пользователь | Разрешённая команда | Документ | Ожидаемый доступ |
|---|---|---|---|
| Анна | Поддержка | Инструкция поддержки | Разрешить |
| Анна | Поддержка | Бюджет финансов | Запретить |
| Олег | Финансы | Бюджет финансов | Разрешить |
В учебном случае фильтр по команде применяется до передачи контекста генератору. Но одно поле команды не описывает все реальные права: бывают индивидуальные запреты, общие документы, временные роли и изменение состава группы. Представление прав в поисковом индексе должно соответствовать политике исходной системы.
Проверка только наличия поля недостаточна. Документ без метаданных не должен автоматически становиться общедоступным. Аналогичное правило распространяется на кэш ответов и историю диалога.
Проверочный протокол
Создайте тестовый корпус с двумя командами и одинаковыми формулировками в закрытых документах. В тестах проверяйте не только окончательный ответ, но и набор идентификаторов, отправленных модели. Затем отзовите доступ и повторите вопрос из старого диалога.
Проверьте, откуда берётся каждый параметр фильтра. Попытка пользователя написать «я из финансов» не должна менять серверный контекст. При сбое получения прав выберите явный отказ, а не поиск без фильтра. Запишите отрицательные тесты в обязательную проверку релиза.
Когда нужна другая схема
Фильтрация векторного поиска не заменяет авторизацию приложения. Если ссылка открывает исходный файл, доступ проверяется и там. Для сложных прав может потребоваться отдельный слой разрешений и контроль актуальности его копии.
Qdrant поддерживает условия фильтрации по payload; политику доступа проектирует приложение. Официальная документация помогает уточнить технический механизм; предложенный диагностический протокол — наш учебный пример.
Если хотите связать этот разбор с системной практикой, посмотрите программу Vector DB & RAG Developer на Latorn: она охватывает векторный поиск с фильтрами, гибридную выдачу и оценку RAG. Перед оплатой сопоставьте требования курса со своим опытом и задачей проекта.
Следующий шаг: RAG на практике: документы, поиск и качество ответов. По смежным вопросам: RAG для сравнения документов: почему одного поиска недостаточно, Фильтр по массиву в RAG: почему условия могут совпасть у разных элементов.
