RAG нейросети для PDF с таблицами и графиками: гайд по NVIDIA NeMo Retriever
Российские разработчики, работающие с документами на русском языке, часто сталкиваются с задачей: нужно извлечь данные не только из текста PDF, но и из таблиц, графиков и инфографики, а затем дать нейросети возможность отвечать на вопросы по этим данным с точными ссылками на источник.

Именно эту задачу решает мультимодальный RAG (Retrieval-Augmented Generation, генерация ответов с опорой на найденные фрагменты документа) на базе NVIDIA NeMo Retriever. На выходе вы получите рабочий конвейер: загрузили PDF, извлекли всё содержимое, задали вопрос и получили ответ с цитатой из конкретной страницы.
Обычный текстовый RAG нейросети теряет таблицы и графики, а это часто самая ценная часть отчёта или презентации. NeMo Retriever обрабатывает все элементы страницы и позволяет начать локально, без видеокарты и без ключа API, а затем масштабировать конвейер через облачные эндпоинты NVIDIA.
Туториал опубликован в официальном репозитории NVIDIA NeMo Retriever. Конвейер разделён на два этапа: первый работает офлайн на процессоре и извлекает текст, второй подключает облачные модели NVIDIA NIM для распознавания таблиц, графиков, генерации векторных представлений (эмбеддингов) и ответов с цитатами. Такая архитектура удобна для экспериментов: можно проверить базовую часть бесплатно, а платные возможности добавить позже.
Что понадобится?
- Python 3.12 (именно эта версия, NeMo Retriever проверяет при старте)
- Google Colab или локальная среда (GPU на первом этапе не нужен)
- Пакет
nemo-retriever, устанавливается через pip - NVIDIA API Key (формат
nvapi-...), нужен только для второго этапа с облачными моделями. Получить можно бесплатно на сайте NVIDIA - Тестовый PDF: скрипт скачивает файл
multimodal_test.pdfиз репозитория NVIDIA автоматически - Время: первый этап занимает пару минут, полный конвейер с облачными эндпоинтами укладывается в 10 минут
Пошаговая инструкция
1. Проверьте версию Python и установите пакет
Скрипт сам проверяет, что используется Python 3.12, и останавливается с понятной ошибкой, если версия другая. Установка одной командой:
pip install -q --ignore-installed PyJWT nemo-retriever openai
После установки импортируйте основные модули: create_ingestor для построения конвейера, to_markdown и to_markdown_by_page для рендера результатов, Retriever для поиска по извлечённому содержимому.
2. Скачайте тестовый документ
Скрипт автоматически загружает PDF из репозитория NVIDIA, если файла ещё нет в рабочей папке:
DOC = "multimodal_test.pdf"
if not os.path.exists(DOC):
sh(f"curl -sL -o {DOC} "
"https://raw.githubusercontent.com/NVIDIA/NeMo-Retriever/main/data/multimodal_test.pdf")
3. Извлеките текст офлайн, без GPU и без API-ключа
Это первый этап, и он полностью локальный. Используется метод PDFium для извлечения текста:
offline = (
create_ingestor(run_mode="inprocess", allow_no_gpu=True)
.files(DOCS)
.extract(
extract_text=True,
extract_tables=False, extract_charts=False,
extract_images=False, extract_infographics=False,
method="pdfium",
)
)
df_offline = offline.ingest()
На выходе вы получите DataFrame с текстом каждой страницы. Можно сразу проверить результат, выведя первые 400 символов первой страницы.
4. Подключите NVIDIA API Key для мультимодальной обработки
Ключ можно передать через переменную окружения NVIDIA_API_KEY или ввести интерактивно. Скрипт проверяет, что ключ начинается с nvapi-.
5. Запустите полный мультимодальный конвейер
На этом этапе подключаются облачные модели NVIDIA NIM. Конвейер выполняет сразу несколько операций:
- Распознаёт элементы страницы (модель
nemotron-page-elements-v3) - Извлекает таблицы, графики и инфографику
- Разбивает текст на фрагменты по 512 токенов (токен, минимальная единица текста для модели) с перекрытием в 64 токена
- Удаляет дубликаты по хешу содержимого и пересечению областей на странице
- Генерирует эмбеддинги моделью
llama-nemotron-embed-1b-v2 - Загружает результат в векторную базу LanceDB
ing = (
create_ingestor(run_mode="inprocess", allow_no_gpu=True, error_policy="collect")
.files(DOCS)
.extract(
extract_text=True, extract_tables=True,
extract_charts=True, extract_infographics=True,
method="pdfium", dpi=200,
table_output_format="markdown",
api_key=API_KEY, request_timeout_s=120.0,
split_config={"text": {"max_tokens": 512, "overlap_tokens": 64}},
)
.dedup(content_hash=True, bbox_iou=True, iou_threshold=0.45)
.embed(embedding_endpoint=EMBED_URL, model_name=EMBED_MODEL, api_key=API_KEY)
.vdb_upload(vdb_op="lancedb", vdb_kwargs={"uri": "./lancedb", "table_name": "colab_demo", "overwrite": True})
)
df = ing.ingest(show_progress=True)
6. Проверьте извлечённые элементы
После обработки скрипт выводит количество найденных таблиц, графиков, инфографик и изображений. Страницы рендерятся в Markdown для визуальной проверки.
7. Настройте поиск и генерацию ответов
Конвейер поддерживает плотный поиск по эмбеддингам, ранжирование результатов визуально-языковой моделью (llama-nemotron-rerank-vl-1b-v2), фильтрацию по метаданным и генерацию ответов с цитатами через llama-3.3-nemotron-super-49b-v1.5. Для оценки качества поиска предусмотрена метрика recall-at-k (доля релевантных документов среди первых k найденных).
На вход подаётся PDF с таблицами и графиками. После офлайн-извлечения (этап 1) вы видите в DataFrame текст каждой страницы. После полной обработки (этап 2) в тех же данных появляются отдельные строки для таблиц в формате Markdown, описания графиков и инфографики. Задаёте вопрос по содержимому таблицы, и модель возвращает ответ с указанием конкретной страницы и элемента, откуда взята информация.
- Неверная версия Python. Пакет
nemo-retrieverтребует ровно 3.12. На 3.11 или 3.13 скрипт остановится с ошибкой при импорте. В Colab по умолчанию стоит 3.12, но если вы меняли рантайм, верните обратно. - Забытый API-ключ на втором этапе. Без ключа
nvapi-...облачные эндпоинты не отвечают. Первый этап отработает, но таблицы и графики останутся неизвлечёнными. - Таймаут при обработке больших файлов. Параметр
request_timeout_sпо умолчанию 120 секунд. Для документов на десятки страниц увеличьте его или разбейте файл. - Перепутаны модули импорта. Пути к
to_markdownиRetrieverменялись между версиями пакета. Скрипт из туториала пробует оба варианта через try/except, не упрощайте эту часть.
Что делать с этим прямо сейчас?
Разработчику в России. Первый этап конвейера работает полностью локально, без GPU и без обращения к внешним API. Это значит, что вы можете обрабатывать конфиденциальные PDF на своём сервере. Для масштабирования через NVIDIA NIM проверьте доступность эндпоинтов из вашей сети и учтите, что данные уходят на серверы NVIDIA.
Автору на Дзене. Если вы пишете обзоры, аналитику или образовательный контент и работаете с источниками в PDF, такой RAG нейросети позволяет задавать вопросы прямо к документу и получать ответ с точной ссылкой на страницу. Это быстрее, чем листать отчёт вручную.
Предпринимателю. Технология подходит для внутренних баз знаний, где важны таблицы и графики: финансовые отчёты, техническая документация, маркетинговые исследования. Из доступных в РФ аналогов для базового текстового RAG нейросети можно посмотреть на YandexGPT API и GigaChat API, но мультимодальное извлечение таблиц и графиков на уровне NeMo Retriever они пока не предлагают.
Главная ценность этого конвейера в том, что он разделён на бесплатную локальную часть и облачную. Вы не платите, пока тестируете на простых PDF с текстом. Платные модели подключаются ровно в тот момент, когда нужны таблицы и графики. По моим наблюдениям, большинство туториалов по RAG нейросети требуют GPU или платный ключ с первой строчки, здесь порог входа ниже.
Честная оговорка: туториал показан на одном тестовом PDF из репозитория NVIDIA. На реальных документах с нестандартной вёрсткой, сканами или рукописными пометками качество извлечения может быть заметно хуже. Перед внедрением в продакшн протестируйте на своих файлах.
Попробуйте AI-инструменты для авторов
Если вы хотите использовать нейросети для работы с контентом на Дзене, начните с проверенных инструментов и шаблонов промптов от dzen.guru.
Перейти к инструментамКонвейер собирается за десять минут, первый этап бесплатный и не требует видеокарты. Попробуйте на своём PDF и проверьте, находит ли модель ответ в таблице, которую вы раньше искали глазами.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Большие языковые модели пропускают джейлбрейки: какие риски это создаёт и как защититься
Большие языковые модели (LLM, нейросети, которые генерируют текст и код по запросу) обучены отказывать на опасные вопросы, но злоумышленники научились обходить…

Self hosted LLM vs облако: год в Selectel показал, когда своя модель выгоднее API
Контекст — это не про IQ модели, а про безопасность данных: если код нельзя отправить наружу, выбор делается не между «лучшей» и «худшей» моделью, а между…
OpenAI впервые остановила новую модель: та научилась взламывать системы без человека
OpenAI второго июня приостановила внутреннюю разработку новой модели Astra, которая по результатам собственных проверок компании может обладать критическими…
Комментарии