/
Вопросы и ответы
/
RAG
/

Что такое RAG и зачем он нужен?

Что такое RAG и зачем он нужен?

11 часов назад

Никита Вихров

Ответы

0

Что такое RAG и зачем он нужен

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

RAG (Retrieval-Augmented Generation) решает это просто: перед тем как ответить, модель сначала ищет нужную информацию в твоей базе знаний — и отвечает уже с этим контекстом.


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

from anthropic import Anthropic

client = Anthropic()

response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": "Как настроить аутентификацию в нашем внутреннем API?"
    }]
)

print(response.content[0].text)
# → "Я не знаю о вашем внутреннем API. Пожалуйста, предоставьте документацию."

Модель не знает — и честно говорит об этом. Или, что хуже, выдумывает.


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

1. Пользователь задаёт вопрос 2. Система ищет релевантные куски документации 3. Найденный контекст добавляется в промпт 4. Модель отвечает, опираясь на реальную документацию
def answer_with_rag(question: str, knowledge_base: list) -> str:
    # Шаг 1: найти релевантные документы (упрощённо)
    relevant_docs = search_knowledge_base(question, knowledge_base)

    # Шаг 2: собрать контекст
    context = "\n\n---\n\n".join([doc["content"] for doc in relevant_docs])

    # Шаг 3: спросить модель с контекстом
    response = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=1024,
        system=f"""Ты — ассистент разработчика. Отвечай только на основе предоставленной документации.
Если ответа нет в документации — скажи об этом прямо.

Документация:
{context}""",
        messages=[{"role": "user", "content": question}]
    )

    return response.content[0].text

Полная схема RAG-системы

Документы → Разбивка на чанки → Создание embeddings → Векторная БД ↓ Вопрос → Embedding вопроса → Поиск похожих чанков → Контекст + Вопрос → LLM → Ответ

Каждый этап важен. Плохая разбивка на чанки — плохой поиск. Плохой поиск — нерелевантный контекст. Нерелевантный контекст — неправильный ответ, даже если модель хорошая.


Когда RAG нужен

  • Корпоративная документация, которую модель не видела
  • Приватный код и внутренние API
  • Актуальные данные: цены, статусы, новости
  • Большой объём документации, который не влезает в контекстное окно

Когда RAG не нужен

Если документации мало и она влезает в контекст — просто вставь её в системный промпт. RAG добавляет сложность, и усложнять стоит только когда это реально нужно.

11 часов назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845