# Markdown как формат для LLM

> Почему Markdown стал основным форматом обмена текстом с языковыми моделями — экономия токенов, сохранение структуры, удобство чанкинга — и как готовить в нём документы.

Источник: https://llmdocs.ru/wiki/markdown-for-llm/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Роль**: формат входа (документы, промпты) и выхода (ответы) LLM
- **Преимущества**: мало служебной разметки, явная структура, родной для моделей
- **Конвертеры**: MarkItDown, Docling, Pandoc, Jina Reader, Trafilatura
- **Связанные соглашения**: llms.txt, .md-версии страниц, AGENTS.md
- **Альтернативы**: XML-теги, JSON, YAML, обычный текст
**Markdown как формат для LLM** — практика подготовки текстов для [языковых моделей](https://llmdocs.ru/wiki/llm.md) в разметке [Markdown](https://llmdocs.ru/wiki/markdown.md): документация, базы знаний и веб-страницы конвертируются из HTML, PDF и DOCX в `.md`, прежде чем попасть в промпт, индекс [RAG](https://llmdocs.ru/wiki/rag.md) или инструменты [агентов](https://llmdocs.ru/wiki/ai-agent.md). Модели и сами по умолчанию отвечают в Markdown. Формат стал фактическим стандартом обмена текстом между людьми, программами и LLM; на нём построены соглашение [llms.txt](https://llmdocs.ru/wiki/llms-txt.md) и файлы инструкций для агентов.[1]

## Почему Markdown

- **Экономия токенов.** HTML-страница документации содержит навигацию, скрипты, атрибуты и вложенные `div`; полезный текст нередко занимает меньше трети. Та же страница в Markdown в несколько раз короче — меньше стоимость, меньше шума, больше места в [контекстном окне](https://llmdocs.ru/wiki/context-window.md) (см. [Токен и токенизация](https://llmdocs.ru/wiki/tokenization.md)).
- **Сохранение структуры.** Заголовки, списки, таблицы, блоки кода и ссылки остаются явными — в отличие от «плоского» текста, извлечённого из PDF.
- **Знакомость модели.** В обучающих данных огромное количество Markdown — README, документация, форумы, — и модели хорошо понимают его соглашения.
- **Удобство разбиения.** Заголовки задают естественные границы для [чанкинга](https://llmdocs.ru/wiki/chunking.md), а путь заголовков даёт чанку контекст.
- **Читаемость человеком.** Один и тот же файл годится и для модели, и для ревьюера, и для рендеринга в HTML.

## Конвертация

| Источник | Инструменты | Трудности |
|---|---|---|
| HTML | Trafilatura, Readability, Jina Reader, html2text | вырезать навигацию и рекламу, не потерять таблицы и код |
| PDF | Docling, Marker, MinerU | колонки, колонтитулы, формулы, таблицы, сканы |
| DOCX, PPTX, XLSX | MarkItDown, Pandoc | стили вместо заголовков, вложенные таблицы |

MarkItDown от Microsoft и Docling от IBM — популярные открытые конвертеры, разработанные именно для подготовки документов к LLM.[2][3]

```bash
pip install 'markitdown[all]'
markitdown report.pdf > report.md

pandoc manual.docx -t gfm -o manual.md      # GitHub-flavored Markdown
```

## Как писать Markdown для моделей

- **Один `#`-заголовок** на документ и последовательная иерархия `##`, `###` — без пропуска уровней.
- **Информативные заголовки**: «Настройка TLS в nginx» лучше, чем «Настройка» — заголовок часто попадает в чанк без окружения.
- **Самодостаточные разделы**: избегать «как сказано выше»; раздел может быть найден поиском отдельно.
- **Блоки кода с указанием языка** (` ```python `) — модель точнее понимает и воспроизводит код.
- **Таблицы — для коротких фактов**; длинные таблицы с десятками колонок модели читают хуже, чем списки «ключ: значение».[6]
- **Ссылки с осмысленным текстом**, абсолютные URL — относительные теряют смысл вне сайта.
- **Метаданные во frontmatter** (YAML в начале файла): заголовок, дата обновления, версия продукта.
- **Без HTML-вставок** там, где можно обойтись разметкой.

## Markdown в промптах

В самих промптах Markdown удобен для структуры инструкций — заголовки разделов, нумерованные шаги, примеры в блоках кода (см. [Промпт-инжиниринг](https://llmdocs.ru/wiki/prompt-engineering.md)). Для разделения *данных* и *инструкций* многие предпочитают XML-подобные теги (`<document>`, `<example>`): их границы однозначны, и они не конфликтуют с Markdown внутри документа.[4] Часто используют комбинацию: документ в Markdown, обёрнутый в тег.

## На сайтах документации

Распространённая практика — отдавать каждую страницу также в виде `.md` по тому же адресу с расширением (`/docs/tls` → `/docs/tls.md`), публиковать индекс `llms.txt` и полный дамп `llms-full.txt`. Генераторы [статических сайтов](https://llmdocs.ru/wiki/static-site-generators.md) создают это при сборке, поскольку исходники и так написаны в Markdown. Подробнее — в статье [Документация для ИИ: как подготовить](https://llmdocs.ru/wiki/docs-for-ai.md).

## Ограничения

Markdown не стандартизирован до конца: CommonMark и GitHub-flavored Markdown различаются в таблицах, сносках и расширениях.[5] Сложные документы — формулы, диаграммы, многоуровневые таблицы — теряют часть информации; для них используют LaTeX внутри Markdown, описания картинок или [мультимодальные модели](https://llmdocs.ru/wiki/multimodal-models.md), читающие исходные страницы как изображения.

## См. также

- [Markdown](https://llmdocs.ru/wiki/markdown.md)
- [llms.txt](https://llmdocs.ru/wiki/llms-txt.md)
- [Документация для ИИ: как подготовить](https://llmdocs.ru/wiki/docs-for-ai.md)
- [Чанкинг документов](https://llmdocs.ru/wiki/chunking.md)
- [Промпт-инжиниринг](https://llmdocs.ru/wiki/prompt-engineering.md)

## Источники

1. [llms.txt — proposal](https://llmstxt.org/)
2. [Microsoft — MarkItDown](https://github.com/microsoft/markitdown)
3. [Docling — документация](https://docling-project.github.io/docling/)
4. [Anthropic — Use XML tags to structure your prompts](https://docs.claude.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags)
5. [CommonMark Spec](https://spec.commonmark.org/)
6. [Sui et al. — Table Meets LLM: Can Large Language Models Understand Structured Table Data? (2024)](https://arxiv.org/abs/2305.13062)
