📖 Туториал24 мин2 марта 2026 г.

Fine-tuning и RAG: как кастомизировать нейросеть

Практическое руководство по fine-tuning и RAG: когда что использовать, примеры с кодом, сравнение стоимости и инструменты.

Вы хотите, чтобы нейросеть знала о вашем продукте, отвечала в стиле вашей компании или работала с внутренней документацией? Для этого существует три подхода: prompt engineering, RAG и fine-tuning. В этом руководстве — практическое объяснение каждого метода, сравнение стоимости и реальные примеры.

Три уровня кастомизации

МетодСложностьСтоимостьКогда использовать
Prompt EngineeringНизкаяМинимальнаяПростые задачи, быстрый старт
RAGСредняяСредняяРабота с собственными данными
Fine-tuningВысокаяВысокаяИзменение стиля, специализация

Уровень 1: Prompt Engineering

Самый простой подход — правильно составить промпт (инструкцию) для модели. Никакого обучения, никакой инфраструктуры — только текст.

Когда достаточно промпт-инженерии

  • Модель уже умеет делать то, что вам нужно, просто надо объяснить формат
  • Задача стандартная: суммирование, перевод, генерация текста
  • Нет больших объёмов специфических данных
  • Нужен быстрый результат без разработки

Техники

  • System prompt — задайте роль и правила поведения модели
  • Few-shot — дайте несколько примеров правильного ответа
  • Chain-of-Thought — попросите рассуждать пошагово
  • Структурированный вывод — попросите отвечать в JSON/XML

Пример system prompt для службы поддержки

Ты — ассистент техподдержки компании «ТехноМир».
Правила:
1. Отвечай вежливо, на «вы»
2. Если не знаешь ответ — предложи связаться с оператором
3. Не обсуждай конкурентов
4. Ответ — не более 3 предложений
5. В конце спроси, помог ли ответ

Ограничения промпт-инженерии

  • Модель не знает вашу внутреннюю документацию
  • Длинный system prompt занимает контекстное окно
  • Нельзя кардинально изменить стиль модели
  • Невозможно добавить новые знания после обучения

Уровень 2: RAG (Retrieval-Augmented Generation)

RAG — это архитектурный паттерн, при котором модель сначала ищет релевантную информацию в вашей базе данных, а затем генерирует ответ на основе найденного.

Как работает RAG

  1. Индексация — ваши документы разбиваются на фрагменты (chunks) и преобразуются в векторы (embeddings)
  2. Запрос — вопрос пользователя тоже преобразуется в вектор
  3. Поиск — находятся фрагменты документов, наиболее похожие на вопрос по смыслу
  4. Генерация — найденные фрагменты подставляются в промпт, и LLM генерирует ответ

Когда использовать RAG

  • Нужно работать с собственной документацией, FAQ, базой знаний
  • Данные часто обновляются (новые продукты, изменения политик)
  • Важна точность — модель должна ссылаться на конкретные документы
  • Нет ресурсов или данных для fine-tuning

Пример архитектуры RAG на Python

from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA

# 1. Загрузка документов
loader = DirectoryLoader("./docs", glob="**/*.md")
documents = loader.load()

# 2. Разбивка на чанки
splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
chunks = splitter.split_documents(documents)

# 3. Создание векторного хранилища
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings)

# 4. Создание цепочки RAG
llm = ChatOpenAI(model="gpt-4o")
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(
        search_kwargs={"k": 5}
    )
)

# 5. Запрос
answer = qa_chain.run("Как оформить возврат товара?")
print(answer)

Стоимость RAG

КомпонентСтоимость
Embeddings (OpenAI)$0.02 / 1M токенов
Векторная БД (Pinecone)от $70/мес
Векторная БД (self-hosted Chroma)Бесплатно + сервер
LLM API (GPT-4o)$2.50–10 / 1M токенов

Инструменты для RAG

  • LangChain — фреймворк для построения RAG-цепочек (Python, JS)
  • LlamaIndex — специализированный фреймворк для RAG
  • Chroma / Qdrant / Pinecone — векторные базы данных
  • Meilisearch — гибридный поиск (текстовый + семантический)

Уровень 3: Fine-tuning

Fine-tuning — это дополнительное обучение модели на ваших данных. Модель корректирует свои веса (или надстройку — LoRA), чтобы лучше решать вашу конкретную задачу.

Когда нужен fine-tuning

  • Нужно кардинально изменить стиль ответов (медицинский, юридический, технический)
  • Задача очень специфическая и стандартные модели не справляются
  • Нужно уменьшить размер модели без потери качества на конкретной задаче
  • Хотите заменить дорогую большую модель дешёвой дообученной маленькой

Данные для fine-tuning

Вам нужен датасет в формате «вход → выход»:

[
  {
    "messages": [
      {"role": "system", "content": "Ты медицинский ассистент"},
      {"role": "user", "content": "Что принимать при головной боли?"},
      {"role": "assistant", "content": "При головной боли..."}
    ]
  },
  ...
]

Минимально рекомендуемый объём: 50–100 примеров для простых задач, 500–1000 для сложных.

Fine-tuning через OpenAI API

# Загрузка датасета
openai api files.create -f training_data.jsonl -p fine-tune

# Запуск fine-tuning
openai api fine_tuning.jobs.create \
  -m gpt-4o-mini \
  -f file-abc123 \
  --suffix "medical-assistant"

# Использование дообученной модели
response = openai.ChatCompletion.create(
    model="ft:gpt-4o-mini:org:medical-assistant:abc123",
    messages=[{"role": "user", "content": "Симптомы гриппа"}]
)

LoRA — эффективный fine-tuning

Для open source моделей (Llama, Mistral) доступен метод LoRA, который обучает только небольшую надстройку (~1–5% параметров). Это в 10–100 раз дешевле полного fine-tuning.

# Пример с Hugging Face + PEFT
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B")

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
)

model = get_peft_model(model, lora_config)
# Обучаемых параметров: ~0.1% от общего числа

Стоимость fine-tuning

МетодСтоимостьВремя
OpenAI fine-tuning (GPT-4o-mini)$3 / 1M токенов обученияЧасы
LoRA (Llama 8B, 1x A100)$2–5/час GPU2–8 часов
Full fine-tuning (Llama 70B)$50–200/час (8x A100)Дни

Сравнение подходов

КритерийPrompt EngineeringRAGFine-tuning
Сложность внедренияМинутыДниНедели
Стоимость старта$0$100–500$500–5000
Работа с новыми даннымиНетДа (обновление индекса)Нет (нужно переобучение)
Изменение стиляОграниченноОграниченноПолностью
Точность на специфических задачахСредняяВысокаяМаксимальная
Обновление знанийНетБыстро (минуты)Долго (часы/дни)
Требует ML-экспертизыНетБазовойДа

Когда что выбрать: дерево решений

  1. Нужно просто изменить формат/стиль ответа? → Prompt Engineering
  2. Нужно отвечать на вопросы по своим данным? → RAG
  3. Данные часто обновляются? → RAG
  4. Нужен специфический стиль/тон/экспертиза? → Fine-tuning (или RAG + prompt)
  5. Хотите заменить дорогую модель дешёвой? → Fine-tuning маленькой модели
  6. Не знаете, что выбрать? → Начните с RAG, это самый универсальный подход

Комбинированный подход

В реальных проектах часто комбинируют все три метода:

  • Fine-tuning — задаёт стиль и формат ответов
  • RAG — подключает актуальные данные
  • Prompt Engineering — тонкая настройка поведения

Пример: дообученная модель для медицины (fine-tuning) + поиск по актуальным протоколам лечения (RAG) + system prompt с правилами общения (prompt engineering).

Итог

Начинайте с самого простого подхода и усложняйте по необходимости. В 80% случаев достаточно RAG + хороший промпт. Fine-tuning — для тех 20%, где действительно нужна глубокая специализация модели.

Понравилась статья?

Поделитесь с коллегами и друзьями

Читайте также

Хотите больше таких статей?

Подпишитесь на еженедельный дайджест — новые инструменты, промпты и гиды каждую неделю

Подписаться бесплатно
ещё 3
Сравнить (0)