Симптом: RAG индексирует тысячи PDF, но отвечает со ссылками на копирайт в колонтитулах, битые таблицы или устаревшие приложения — при этом embedding-задачи «зелёные».
Причина: плохие PDF ломаются на этапе PDF Parsing; грязные чанки всё равно попадают в Vector Database, а уверенность retrieval часто растёт.
В июле 2026 мы аудировали 2 400 корпоративных PDF для внутренней Knowledge Base. Точность цитирования по золотым вопросам упала с 78% до 51%. 63% top-3 содержали повторяющиеся колонтитулы или шум OCR. Это практический анти-загрязняющий пайплайн — не рейтинг парсеров, а шлюзы и оценка до embedding. Данные на 2026-08-07.
Quick Answer: сначала блокируем грязь, потом recall
| Ситуация | Сделать в первую очередь | Не спешить |
|---|---|---|
| Первая партия PDF | 50 файлов, сравнить парсеры + порог извлечения | Менять embedding-модель |
| Ответы цитируют колонтитулы | Убрать header/footer + dedup строк | Добавлять документы |
| Галлюцинации в таблицах | Отдельный парсинг таблиц | Слепо уменьшать chunk |
| В основном сканы | OCR-скор + ручная очередь | PyPDF для всего |
| Большой индекс, падение качества | Удаление по source_id + gold-регрессия | Полный re-embed без анализа |
5 паттернов, загрязняющих Vector Database
| Паттерн | Признак | Вред | Сигнал |
|---|---|---|---|
| Повтор колонтитулов | Один текст на каждой странице | Хиты на copyright | Короткая строка ≥3× |
| Шум OCR | Путаница символов | Семантика ломается | Несловарные символы >8% |
| Битые таблицы | Сломанные колонки | Выдуманные числа | Длинные цифры без разделителей |
| Две колонки/сноски | Смешение колонок | Несвязные цитаты | Скачок ширины строки |
| Устаревшие приложения | Старые политики | Верно, но устарело | mtime ≠ версия |
Шлюзы до embedding
- Файл: пароль, 0 символов, извлечение <15% → отказ/OCR.
- Страница: пустая, только картинка, почти-дубликат → пропуск.
- Чанк: <30 токенов, >40% повторов → отброс.
- Бизнес: без
source_id→ запись запрещена.
Длинный контекст не заменяет чистый ingest — Kimi K3 1M и границы RAG.
PDF Parsing: по отвечаемым вопросам, не по числу символов
Замер (июль 2026, 50 PDF): hit@3 layout-aware 74% vs pdfplumber 61%.
Кейс: откат 2 400 PDF
| Метрика | До | После шлюзов |
|---|---|---|
| 40 gold hit@3 | 51% | 79% |
| Цитаты с header/copyright | 63% | 4% |
| Всего чанков | 1,28M | 0,71M |
Чеклист из 7 шагов
- 50 PDF в выборке.
- Два парсера на 20 gold-вопросах.
- Правила колонтитулов в staging.
- Метаданные и удаление по
source_id. - 20–50 gold-вопросов еженедельно.
- Всплеск отказов под мониторингом.
- Ежеквартально — просроченные документы.
Локально: AI-окружение за 30 минут.
Парсинг на воркерах; Vector Database — только чистые чанки
Облачный Mac Macstripe для batch на macOS, синхронизация с Linux-сервисом векторов.
FAQ
Почему PDF хуже Markdown?
Скрытая вёрстка, OCR, повторы, таблицы — embeddятся как контент.
Минимальный шлюз?
Извлечение, повторы, длина, язык; source_id обязателен.
Какой парсер?
Цифровые: PyMuPDF. Сложная вёрстка: Unstructured. Сканы: OCR. Gold-вопросы.
Итог
Порядок: PDF Parsing → шлюзы → чанки + метаданные → gold-оценка → embedding.