РУКОВОДСТВО · ОБНОВЛЕНО 2026-11-02
HTML для RAG: как извлечь статью без меню и не потерять важную таблицу
Проверка источника до разбиения на чанки и создания эмбеддингов.
Простое удаление HTML-тегов часто смешивает меню, рекламу, подписи и основной текст. Для RAG сначала определите полезные области страницы и сохраните связь результата с источником. Алгоритм извлечения статьи может помочь, но не гарантирует правильный результат для каталога, документации или сложной таблицы. Сравнивайте очищенный текст с исходной страницей. Обработка недоверенного HTML не должна запускать его скрипты или автоматически загружать внешние ресурсы. Подготовка текста, безопасное отображение и защита от инструкций внутри документа остаются отдельными задачами.
1. Определите тип и доступность страницы
Отделите статью, документацию, список товаров и страницу приложения. У них разные полезные блоки и разные правила извлечения. Если сервер отдаёт только оболочку, статический HTML-парсер не получит данные, видимые после загрузки интерфейса. Выбирайте разрешённый способ получения содержимого и соблюдайте доступы источника. Не обходите вход или ограничения ради полноты индекса. Сохраните исходную версию и технические сведения, необходимые для повторной обработки и проверки результата человеком.
2. Выберите извлечение и сохраните структуру
Для статей можно сравнить специализированный алгоритм, например Mozilla Readability, с правилами конкретного сайта. Сохраняйте заголовки, списки, ссылки и необходимые подписи, а не только сплошную строку. Для таблицы проверьте связь значений с названиями колонок и единицами. Автоматический выбор основного блока может удалить важное предупреждение или приложение. Не называйте результат полным только из-за большого количества символов: важна сохранность сведений, на которые должны отвечать вопросы пользователей.
3. Проверьте границы безопасности
Парсите недоверенный HTML в среде без ненужного выполнения кода и внешних загрузок. README Readability отдельно обсуждает безопасность: результат извлечения не следует считать готовым безопасным HTML для показа без очистки. Если приложению нужен только текст, не переносите активную разметку в интерфейс. Инструкции, написанные внутри документа, остаются данными источника, а не полномочиями агента. Не смешивайте успешное извлечение текста с разрешением выполнить найденную команду или перейти по произвольной ссылке.
4. Сравните исходник и результат на задачах
Соберите контрольные страницы с длинным меню, таблицей, кодом, сноской и коротким основным блоком. Для каждой задайте вопросы, требующие сохранённых деталей. Сравните извлечённый текст до chunking и выдачу поиска после индексации. Если ответ пропал, определите этап потери вместо смены генератора вслепую. При обновлении правил парсинга проверяйте прежние примеры и сохраняйте версию конвейера. Для цитат оставляйте ссылку и понятный фрагмент источника, который пользователь может открыть и сверить самостоятельно.
Частые вопросы
Можно ли удалить все теги регулярным выражением?
Это не надёжное выделение основного текста и не полноценный разбор HTML. Структура, таблицы и границы блоков могут потеряться.
Подходит ли Readability для любого сайта?
Нет гарантии. Это инструмент выделения читабельного содержимого; страницы каталога и приложения требуют собственных контрольных примеров и правил.
Очищенный текст автоматически защищён от prompt injection?
Нет. Текст может содержать инструкции злоумышленника. Разделение данных и полномочий агента необходимо независимо от способа извлечения.
Нужно ли хранить исходный HTML?
Сохраняйте разрешённую версию или воспроизводимую ссылку по политике данных. Это помогает проверить потерю таблицы и повторить обработку новым парсером.