Права доступа в RAG: почему фильтра после поиска недостаточно

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

Разделите два решения: какие документы пользователь вправе читать и какие из разрешённых документов релевантны вопросу. Полномочия должны приходить из доверенной серверной сессии, а не из текста запроса.

Сценарий и ожидаемое поведение

Данные ниже вымышлены: они показывают способ разбора, а не измерения действующего сервиса.

ПользовательРазрешённая командаДокументОжидаемый доступ
АннаПоддержкаИнструкция поддержкиРазрешить
АннаПоддержкаБюджет финансовЗапретить
ОлегФинансыБюджет финансовРазрешить

В учебном случае фильтр по команде применяется до передачи контекста генератору. Но одно поле команды не описывает все реальные права: бывают индивидуальные запреты, общие документы, временные роли и изменение состава группы. Представление прав в поисковом индексе должно соответствовать политике исходной системы.

Проверка только наличия поля недостаточна. Документ без метаданных не должен автоматически становиться общедоступным. Аналогичное правило распространяется на кэш ответов и историю диалога.

Проверочный протокол

Создайте тестовый корпус с двумя командами и одинаковыми формулировками в закрытых документах. В тестах проверяйте не только окончательный ответ, но и набор идентификаторов, отправленных модели. Затем отзовите доступ и повторите вопрос из старого диалога.

Проверьте, откуда берётся каждый параметр фильтра. Попытка пользователя написать «я из финансов» не должна менять серверный контекст. При сбое получения прав выберите явный отказ, а не поиск без фильтра. Запишите отрицательные тесты в обязательную проверку релиза.

Когда нужна другая схема

Фильтрация векторного поиска не заменяет авторизацию приложения. Если ссылка открывает исходный файл, доступ проверяется и там. Для сложных прав может потребоваться отдельный слой разрешений и контроль актуальности его копии.

Qdrant поддерживает условия фильтрации по payload; политику доступа проектирует приложение. Официальная документация помогает уточнить технический механизм; предложенный диагностический протокол — наш учебный пример.

Если хотите связать этот разбор с системной практикой, посмотрите программу Vector DB & RAG Developer на Latorn: она охватывает векторный поиск с фильтрами, гибридную выдачу и оценку RAG. Перед оплатой сопоставьте требования курса со своим опытом и задачей проекта.

Следующий шаг: RAG на практике: документы, поиск и качество ответов. По смежным вопросам: RAG для сравнения документов: почему одного поиска недостаточно, Фильтр по массиву в RAG: почему условия могут совпасть у разных элементов.