Почему не сырой текст и не PDF
- PDF теряет структуру при извлечении: колонки перемешиваются, таблицы разваливаются, заголовок становится обычной строкой.
- DOCX требует OOXML-парсера и тянет стили, колонтитулы и правки.
- Плоский .txt не содержит иерархии: чанкер режет по символам и рвёт смысл посреди таблицы.
- Markdown даёт явные
#, списки, таблицы и code-блоки — всё, что можно использовать как границы и как метаданные.
Структура, которая режется хорошо
# Регламент возврата товара
## 1. Сроки
Возврат принимается в течение 14 дней с момента получения заказа.
## 2. Исключения
- товар с повреждённой упаковкой;
- товар из категории «индивидуальный пошив».
## 3. Статусы заявки
| Статус | Что значит |
|---|---|
| new | заявка принята |
| approved | возврат одобрен |
Рабочее правило: один раздел ## — один смысловой чанк. Тогда нарезка по заголовкам даёт куски, которые не нужно доклеивать и которые несут один ответ.
Чек-лист подготовки корпуса
- Соберите источники в исходных форматах: PDF, DOCX, EPUB, HTML, XLSX.
- Приведите всё к
.md— один файл на документ. - Проверьте заголовки: у документа один
#(название) и осмысленные##. - Уберите мусор: колонтитулы, «стр. 12 из 40», повторяющиеся шапки, навигацию.
- Таблицы оставьте таблицами — они читаются моделью лучше, чем список.
- Добавьте метаданные в начало файла (front matter): источник, дата, владелец.
- Нарезайте по
##, а не по 1000 символов; перекрытие 10–15%. - Храните рядом исходный
.md— переиндексация пойдёт без повторной конвертации.
Front matter: метаданные, которые пригодятся
---
source: "prikaz-142.pdf"
title: "Приказ №142 о регламенте возврата"
owner: "Отдел клиентского сервиса"
updated: 2026-09-30
confidential: false
---
Эти поля уходят в payload вектора: по ним фильтруется выдача («только документы 2026 года», «без конфиденциальных»). Без метаданных фильтровать нечем — остаётся только семантический поиск.
Частые ошибки
- резать по символам, а не по структуре — чанк начинается посреди таблицы;
- склеивать все документы в один
.md— теряется источник и дата; - оставлять в корпусе оглавления и навигацию — они всплывают в выдаче вместо ответа;
- индексировать скан без OCR — в корпусе оказывается пустой текст.
Приватность корпуса
Внутренние документы не должны уходить в сторонние облачные конвертеры: сам корпус — уже чувствительные данные. Подробнее — PDF в Markdown без облака.