RAG для PDF: локальный ИИ для игровых правил и книг | Гайд 2025 | AiManual
AiManual Logo Ai / Manual.
29 Дек 2025 Гайд

Как заставить локальную LLM работать с длинными PDF: гайд по RAG для игровых правил и кулинарных книг

Полное руководство по настройке локальной RAG-системы для работы с длинными PDF. Узнайте, как заставить LLM читать правила игр и кулинарные книги без облачных A

Проблема: почему локальные LLM не умеют читать длинные PDF?

Вы скачали модель Mistral или Llama 3, загрузили 300-страничную книгу правил Dungeons & Dragons или сборник рецептов, задали вопрос о конкретном заклинании или ингредиенте — и получили выдуманный ответ или "я не знаю". Знакомая ситуация?

Дело не в том, что модели "глупые". Проблема в архитектуре: контекстное окно даже продвинутых локальных LLM редко превышает 128К токенов, а загрузить весь PDF в память модели — неэффективно и часто невозможно. Модель либо "забывает" середину документа, либо тратит все ресурсы на его обработку, не оставляя места для ответа.

Ключевое ограничение: Прямая загрузка длинного PDF в LLM сравнима с попыткой запомнить всю энциклопедию за один раз — мозг перегружается и теряет способность к анализу.

Решение: RAG — мост между вашим PDF и локальной LLM

Retrieval-Augmented Generation (RAG) — это архитектурный паттерн, который разделяет задачу на две части:

  1. Поиск (Retrieval): Система находит в вашем PDF наиболее релевантные фрагменты текста для вашего вопроса
  2. Генерация (Generation): Локальная LLM получает только эти фрагменты + ваш вопрос и формирует точный ответ

Представьте библиотекаря (RAG), который находит нужные страницы в тысячестраничном томе, а ученый (LLM) читает только эти страницы и дает вам ответ. Это в разы эффективнее.

💡
RAG не требует переобучения модели и работает с любыми PDF, включая сканированные документы (после OCR). В нашем гайде по созданию RAG за 15 минут мы разбирали базовый принцип работы.

Выбор инструментов: от Anything LLM до Ollama

Для локального RAG с PDF вам понадобятся три компонента:

КомпонентНазначениеРекомендуемые инструменты
Векторная базаХранит эмбеддинги фрагментов PDF для быстрого поискаChromaDB, Qdrant, LanceDB
Модель эмбеддинговПреобразует текст в числовые векторыall-MiniLM-L6-v2, BGE-small, OpenAI-совместимые
LLM для ответовГенерирует ответы на основе найденных фрагментовLlama 3.1 8B, Mistral 7B, Phi-3-mini

Anything LLM — готовое решение, которое объединяет все три компонента в одном интерфейсе. Это идеальный выбор для новичков и тех, кто не хочет писать код.

Для более гибких решений рассмотрите связку Ollama (для запуска LLM) + LangChain или LlamaIndex (для оркестрации RAG). В нашем обзоре фреймворков для локального запуска LLM мы подробно сравнивали их возможности.

1Подготовка PDF: извлечение текста и чанкинг

Первый шаг — превратить ваш PDF в текст, разбитый на осмысленные фрагменты (чанки). Неправильный чанкинг — главная причина неточных ответов.

Для игровых правил (D&D, Warhammer): разбивайте по разделам ("Глава 3: Заклинания", "Раздел 5.2: Боевая система"). Сохраняйте заголовки в метаданных.

Для кулинарных книг: каждый рецепт — отдельный чанк. Сохраняйте название блюда, ингредиенты и шаги приготовления вместе.

# Пример чанкинга для PDF с помощью PyPDF2 и LangChain
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import PyPDFLoader

# Загружаем PDF
loader = PyPDFLoader("path/to/your/cookbook.pdf")
documents = loader.load()

# Настраиваем сплиттер для рецептов
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,  # Размер чанка в символах
    chunk_overlap=200,  # Перекрытие для контекста
    separators=["\n\nРецепт:", "\n\nИнгредиенты:", "\n\nПриготовление:"]
)

chunks = text_splitter.split_documents(documents)
print(f"Создано {len(chunks)} чанков из PDF")

Совет: Для сканированных PDF сначала используйте OCR (Tesseract, EasyOCR). Anything LLM имеет встроенную поддержку OCR для изображений в PDF.

2Настройка Anything LLM для работы с PDF

Anything LLM — наиболее удобное решение для локального RAG. Вот пошаговая настройка:

  1. Установка (Docker):
    docker run -d \
      -p 3001:3001 \
      -v anythingllm_data:/app/server/storage \
      -e STORAGE_DIR="/app/server/storage" \
      mintplexlabs/anythingllm
  2. Добавление моделей: В настройках подключите локальную LLM через Ollama или LM Studio. Для Ollama:
    # Сначала запустите модель в Ollama
    ollama pull llama3.1:8b
    ollama pull nomic-embed-text
  3. Создание workspace: Создайте новое рабочее пространство для вашего PDF (например, "Правила D&D")
  4. Загрузка PDF: Перетащите файл в интерфейс или используйте "Upload Documents"
  5. Настройка обработки: Выберите модель эмбеддингов (рекомендуем nomic-embed-text) и метод чанкинга

В сравнении LM Studio и llama.cpp мы подробно разбирали, как интегрировать эти инструменты с RAG-системами.

3Выбор оптимальной LLM для ответов

Не все модели одинаково хороши для RAG. Критерии выбора:

  • Следование инструкциям: Модель должна точно отвечать на основе предоставленного контекста
  • Размер контекста: Минимум 8К токенов, лучше 32К+
  • Скорость работы: Особенно важно для интерактивного использования
МодельРазмерКонтекстИспользование
Llama 3.1 8B8B параметров128КЛучший баланс для игровых правил
Mistral 7B v0.37B параметров32КБыстрая, хорошо для кулинарных книг
Phi-3-mini-128k3.8B параметров128КДля слабого железа (8ГБ ОЗУ)

Если у вас слабое железо, прочитайте наш гайд про RAG на 8 ГБ ОЗУ и как избежать ошибок при локальном запуске.

Оптимизация RAG для специфичных документов

Для игровых правил (D&D, Pathfinder, Warhammer 40k)

  • Иерархический чанкинг: Сохраняйте структуру «Книга → Глава → Раздел» в метаданных
  • Извлечение таблиц: Таблицы характеристик оружия или существ обрабатывайте отдельно, сохраняя структуру
  • Prompt-инжиниринг: Указывайте модели на необходимость точного цитирования правил:
    Ты — мастер игры, отвечающий на вопросы по правилам. Ответ должен быть точным и основанным ТОЛЬКО на предоставленном контексте. Если ответа нет в контексте, скажи "В предоставленных правилах этого не указано".

Для кулинарных книг и рецептов

  • Извлечение метаданных: Автоматически определяйте время приготовления, сложность, категорию блюда
  • Нормализация ингредиентов: Приводите «2 ст.л.» к «30 мл» для поиска по заменам
  • Мультимодальность: Если в PDF есть изображения блюд, используйте модели типа LLaVA для их описания

Типичные ошибки и их решение

ОшибкаПричинаРешение
Модель "выдумывает" ответыНеправильный поиск или слишком короткий контекстУвеличьте chunk_overlap, добавьте в промпт требование отвечать только по контексту
Система не находит нужный фрагментПлохие эмбеддинги или неправильный чанкингИспользуйте модель эмбеддингов с большим контекстом (например, text-embedding-3-large)
Медленная работаСлишком большие чанки или тяжелая LLMОптимизируйте размер чанков (500-1000 токенов), используйте квантованную модель (Q4_K_M)

Важно: Всегда тестируйте систему на вопросах, ответы на которые вы знаете. Сравнивайте ответы RAG с прямым поиском по PDF (Ctrl+F).

FAQ: частые вопросы о локальном RAG для PDF

Сколько оперативной памяти нужно для работы с 500-страничным PDF?

Для самой системы RAG: 4-8 ГБ. Для LLM: дополнительно 8-16 ГБ в зависимости от модели. Llama 3.1 8B в 4-битном квантовании занимает ~4.5 ГБ. Суммарно: 12-20 ГБ для комфортной работы.

Можно ли использовать несколько PDF одновременно?

Да, Anything LLM и другие системы позволяют создавать отдельные workspace или смешивать документы. Для игровых сессий полезно загрузить и основную книгу правил, и дополнения.

Как обновлять PDF при выходе новых версий?

В Anything LLM: перезагрузите PDF, система предложит обновить или заменить документ. В самописных решениях потребуется переиндексировать измененные страницы.

Какие модели лучше для неанглийских PDF (русские кулинарные книги)?

Используйте multilingual модели: BGE-m3 для эмбеддингов, Llama 3.1 8B Instruct (поддерживает русский) или русскоязычные модели типа Saiga 3.

Заключение: от пассивного чтения к активному диалогу с документами

Локальный RAG превращает статичные PDF в интерактивные базы знаний. Вместо "где же было это правило про магию?" вы получаете точный ответ: "На странице 145, раздел 'Магические ограничения', указано, что..."

Начните с Anything LLM для быстрых результатов, затем экспериментируйте с Ollama и LangChain для тонкой настройки. Помните: успех зависит не от самой мощной модели, а от качественной подготовки данных и продуманного чанкинга.

Для дальнейшего углубления в тему рекомендую наш обзор LLM с поддержкой Tool Calling и статью о тренировке моделей на собственных EPUB, где многие принципы пересекаются с работой с PDF.