Проверьте одно изменение от документа до открытой ссылки
Новая редакция загружена, но помощник продолжает ссылаться на старый пункт. Или ссылка открывает свежую страницу, хотя ответ был построен по прежнему фрагменту. Эти ситуации требуют проверки цепочки целиком: исходная редакция → извлечённый текст → индекс → найденный фрагмент → утверждение → ссылка, открытая пользователем.
Здесь разбирается замена или исключение одного источника в уже работающей базе знаний. Подготовка первого корпуса и роли и общий цикл обновления описаны отдельно. Результат этой инструкции — протокол конкретной операции, который показывает, где новая редакция подтверждена, где обнаружена старая и что ещё не проверено.
1. Разделите идентичность документа и его редакцию
Стабильный ID отвечает на вопрос «какой это документ», revision — «какая его редакция». Не используйте один номер для обеих задач. При замене зафиксируйте прежнюю и новую редакции, место происхождения, область действия, статус и подтверждение владельца. Имя файла и время загрузки недостаточны: файл могли переименовать или скопировать без изменения содержания.
| Поле | Что сохранить |
|---|---|
| document_id | Стабильный ID, связывающий редакции с одной темой |
| source_revision и status | Прежняя/новая редакция, действует/архив/отменено, область применения |
| Источник и подтверждение | Разрешённый locator, дата проверки и функция владельца темы |
| Обработка | Версии извлечения/нарезки, список затронутых nodes, сборка индекса |
| Проверка | Изменённые факты, вопросы, допустимые роли, ожидаемые ссылки и фактические наблюдения |
Контрольная сумма помогает установить равенство сохранённых байтов. Она не подтверждает, что документ действует или что новая редакция утверждена. Эту часть подтверждает владелец темы. Для постоянно меняющейся страницы определите, по какому snapshot и фрагменту проверяется ответ, а не выдавайте сегодняшнее содержимое URL за вчерашний источник.
2. Выберите операцию и уточните возможности адаптера
Различайте добавление нового документа, замену прежней редакции, перевод в архив и полное исключение из активного поиска. Сначала выясните, где ваша система хранит текст и метаданные: docstore, vector store, другие поисковые индексы и кеши. Отметьте, какой компонент обновляет каждый из них.
В документации LlamaIndex по управлению документами показаны update_ref_doc для существующего ID, delete_ref_doc и refresh_ref_docs. Параметр удаления из docstore по умолчанию выключен; доступность операций зависит от структуры индекса и интеграции. Это пример механизма конкретной библиотеки, а не описание установленного у вас решения.
Возвращённый результат refresh относится к переданным документам. Сам по себе он не подтверждает, что отсутствующий во входном списке документ удалён, что все связанные индексы обновились или что устаревший ответ больше не попадёт пользователю. Такие выводы требуют отдельного наблюдения по конфигурации вашего адаптера.
До выполнения опишите ожидаемый итог каждой операции. Например: «редакция DEMO-R1 остаётся в разрешённой истории, но исключается из активного поиска; DEMO-R2 доступна указанной роли». Если нужна история, не удаляйте её ради удобного зелёного теста. Если источник отозван, архивный режим не должен продолжать выдавать его как действующий.
3. Проследите замену через извлечение и поиск
В отдельном согласованном окружении проверьте, что новый текст извлечён полностью и изменённый пункт не потерян в таблице, сноске или переносе. Сохраните связь revision → node IDs → раздел. После перестройки сравните активный набор nodes: старые фрагменты не должны остаться действующими только потому, что новая редакция получила новые ID.
Задайте вопрос об изменённом факте и отдельно посмотрите результат поиска до генерации ответа. Зафиксируйте найденные document_id, revision, разделы и при необходимости наблюдаемый rank. Затем сравните ответ с этими фрагментами. Если поиск находит старую редакцию, начинать с переписывания промпта преждевременно.
Проверьте также неизменённый соседний факт: операция замены не должна удалить полезный раздел по той же теме. Для исключённого документа задайте вопрос, на который раньше был ответ. Ожидаемое поведение зависит от оставшихся источников: найти другое действующее подтверждение либо сообщить, что актуальных сведений недостаточно.
4. Откройте цитату с правами того же пользователя
Разделите наблюдение на три вопроса: ссылка открывается; открытая редакция соответствует использованной; конкретный фрагмент подтверждает утверждение. Для каждого существенного условия, числа и исключения найдите опору в источнике. Совпадение темы документа с темой ответа недостаточно.
Если ссылка подвижная и уже ведёт на другую редакцию, сохраните различие. Решение может состоять в разрешённой ссылке на конкретную редакцию, понятной отметке версии или ином способе воспроизвести источник. Не сообщайте пользователю, что ответ проверен по нынешней странице, если генерация использовала прежний snapshot.
Повторите вопрос и открытие ссылки от разрешённой роли и роли без доступа. Не ограничивайтесь проверкой страницы назначения: ответ, названия документов, цитаты и кешированные подсказки тоже могут раскрыть содержание. Искусственные пользователи и документы позволяют проверить механизм без реальных персональных данных.
5. Проверьте кеш и продолжение диалога отдельно
Проведите вопрос в новом диалоге и в согласованном тестовом диалоге, где раньше была старая редакция. Даже актуальный поиск не стирает автоматически текст прежнего ответа из истории. Отдельно проверьте кеш результатов поиска и готовых ответов, если они используются. Для каждого слоя сохраните версию, операцию invalidation и фактический повтор.
При обновлении редакции или отзыве доступа предусмотрите, как система обрабатывает сохранённый контекст: начинает новую сессию, повторно проверяет источник или ограничивает ответ до подтверждения. Конкретный способ выбирают по архитектуре. Не обещайте удаление всех копий по одному вызову библиотеки.
| Искусственный сценарий | Что проверить | Наблюдение записать отдельно |
|---|---|---|
| DEMO-R1: окно3; DEMO-R2: окно5 | Вопрос о текущем номере окна | Найденная revision, ответ «5», подтверждающий раздел и открытая ссылка |
| Соседнее условие не менялось | Вопрос о неизменённом условии | Новый индекс сохранил нужное подтверждение |
| Источник исключён из активного поиска | Старый прямой вопрос и его переформулировка | Старая редакция не выдана как действующая; оставшаяся опора или недостаток сведений |
| Тестовая роль потеряла доступ | Новый диалог и продолжение прежнего | Текст, цитата, ссылка и доступная история проверены в указанном объёме |
Все значения DEMO вымышлены. Они показывают форму наблюдения и не являются результатом испытаний New-SST или клиента. До своего прогона согласуйте ожидаемое поведение, иначе один участник будет считать историю разрешённой, а другой — дефектом.
6. Закройте именно проверенную операцию
Сохраните прежнюю и новую редакции в предусмотренном режиме, паспорт операции, изменённые nodes, вопросы, роли, наблюдения кеша, проверенные ссылки и перечень оставшихся слоёв. Решение «принято» относится к перечисленным сценариям и сборке. Не проверенный второй индекс или экран истории остаётся открытым пунктом.
После включения подтвердите пользовательский маршрут на фактически работающей сборке. Если обнаружено расхождение, ограничьте затронутую тему или передайте её владельцу, пока причина не установлена. План возврата должен сохранять корректные права и статус редакций: вернуть старую базу целиком после отзыва доступа может быть неподходящим действием.
Эта инструкция не заменяет проверку всей RAG-системы. Общий набор вопросов и границы доступа ведутся по регламенту оценки помощника. Для обсуждения технической операции достаточно схемы хранилищ, версий адаптера и обезличенного примера; используйте контакты НЬЮ-ССТ.