0Pricing
AI Engineering Academy · Урок

Какую проблему решает RAG

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

«Какую проблему решает RAG» — бесплатный урок AI Engineering Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Engineering Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Engineering Academy содержит 4 уроков всего.

У LLM есть дата отсечения знаний

Каждая большая языковая модель обучается на снимке интернета по определённую дату, которая называется датой отсечения знаний. Для GPT-4o это начало 2024 года. Если спросить модель о событиях, произошедших после этой даты, она либо признается, что не знает ответа, либо, что ещё хуже, уверенно выдумает правдоподобную, но неверную информацию. Для приложений, которым нужны актуальные или закрытые знания, это фундаментальная проблема.

Проблема галлюцинаций

Галлюцинация возникает, когда LLM создаёт текст, звучащий авторитетно, но фактически являющийся неверным. Модели обучены создавать связный, беглый текст, но их специально не обучали отказываться от ответа, если они чего-то не знают. Поэтому они заполняют пробелы в знаниях правдоподобными догадками. Исследования показывают, что даже лучшие модели галлюцинируют в задачах, требующих глубоких знаний, в 10–40% случаев без внешнего обоснования.

Конкретный пример галлюцинации

Представьте, что вы спрашиваете LLM: Каковы условия договора нашей компании с поставщиком на третий квартал 2025 года? Модель никогда не видела вашего внутреннего документа. Вместо того чтобы сказать, что не знает ответа, она может создать правдоподобное резюме договора, используя общую юридическую лексику. Если сотрудник начнёт действовать на основе этой выдуманной информации, последствия могут быть серьёзными. Именно такую ошибку и призван предотвращать RAG.

# Without RAG — LLM guesses from parametric memory
response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {'role': 'user',
         'content': 'What are our Q3 2025 vendor contract terms?'}
    ]
)
# Model has no access to your documents — may hallucinate
print(response.choices[0].message.content)

Обоснование устраняет галлюцинации

Идея RAG проста: если предоставить модели релевантную информацию внутри запроса, ей не придётся полагаться на запомненные знания. Модель переходит от генерации по памяти к чтению контекста. Так же работают и люди: когда нужны точные сведения, мы ищем их, а не полагаемся на память. RAG реализует этот же рабочий процесс для LLM.

# With RAG — answer grounded in retrieved documents
context = retrieve_relevant_chunks(query='Q3 2025 vendor contract terms')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {'role': 'system', 'content': 'Answer using only the provided context.'},
        {'role': 'user', 'content': f'Context: {context}\n\nQuestion: What are our Q3 2025 vendor contract terms?'}
    ]
)

Статическая тонкая настройка здесь не помогает

Распространённое заблуждение состоит в том, что дообучение модели на Ваших документах устраняет галлюцинации. Дообучение обновляет веса модели, чтобы улучшить её стиль, формат и следование задачам, но не обеспечивает надёжное внедрение фактических знаний. Исследования показывают, что дообученные модели по-прежнему галлюцинируют даже на самих обучающих данных. Чтобы знания надёжно воспроизводились, их необходимо предоставлять во время вывода через контекстное окно.

RAG обеспечивает знания в реальном времени

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

RAG работает с закрытыми проприетарными данными

Большинство корпоративных данных нельзя отправлять в OpenAI для обучения из-за требований к конфиденциальности и соблюдению нормативных требований. RAG позволяет обойти это ограничение: Ваши конфиденциальные документы остаются в собственной векторной базе данных, а LLM получает только релевантные фрагменты для каждого запроса. Вы даже можете использовать локальную LLM, например Llama 3, чтобы все данные оставались внутри организации. RAG — основной подход к созданию ИИ на основе конфиденциального корпоративного контента.

RAG обеспечивает указание источников

Когда LLM генерирует ответ из памяти, у него нет источника, на который можно сослаться. Когда ответ создаётся на основе извлечённых документов, модель может указать точные источники. Вы можете поручить модели включать в ответ названия документов и номера страниц, чтобы пользователи могли перейти к оригиналу и проверить информацию. Указание источников значительно повышает доверие к ответам, созданным ИИ, что особенно важно в юридических, медицинских и финансовых приложениях.

system_prompt = '''You are a helpful assistant.
Answer questions using ONLY the provided context.
At the end of your answer, list the sources you used
in this format: [Source: document_name, page X]
If the context does not contain the answer, say:
"I don't have that information in the provided documents."'''

Подход «сначала извлечение, затем генерация»

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

def answer_with_rag(user_question, vector_store, llm_client):
    # Step 1: Retrieve
    query_embedding = embed(user_question)
    chunks = vector_store.search(query_embedding, top_k=5)
    context = '\n\n'.join([c['text'] for c in chunks])

    # Step 2: Generate
    response = llm_client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': f'Answer using only:\n{context}'},
            {'role': 'user', 'content': user_question}
        ]
    )
    return response.choices[0].message.content

Чего RAG не решает

RAG — мощный инструмент, но не универсальное решение. Он по-прежнему даёт сбои, когда: ответ требует обобщения информации из сотен документов (извлечение возвращает лишь несколько фрагментов), вопрос по своей сути является многошаговым и модели необходимо рассуждать через промежуточные этапы, либо извлечённые фрагменты вводят в заблуждение или противоречат друг другу. Понимание этих ограничений помогает проектировать гибридные системы, которые объединяют RAG с агентами рассуждения.

RAG и альтернативы

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

Быстрая проверка

Проверьте, насколько хорошо Вы усвоили концепции разработки ИИ из этого урока.

Итоги урока

В этом уроке Вы узнали: почему LLM галлюцинируют из-за ограничений по дате знаний и неспособности сказать «я не знаю», почему дообучение не устраняет галлюцинации при воспроизведении фактов и как RAG основывает ответы на извлечённых документах, обеспечивая указание источников, доступ к знаниям в реальном времени и безопасное использование закрытых данных. Далее мы рассмотрим полную архитектуру RAG, включая этапы индексации и извлечения.

Часто задаваемые вопросы

Урок «Какую проблему решает RAG» бесплатный?

Да — полный текст урока «Какую проблему решает RAG» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Engineering Academy, подпишись на CoddyKit PRO. Курс AI Engineering Academy содержит 4 уроков всего.

Чему я научусь в уроке «Какую проблему решает RAG»?

Изучите реальные случаи сбоев, когда LLM создают устаревшую или неверную информацию, и поймите, как привязка ответов к найденным документам устраняет эти проблемы. Ты практикуешь AI Engineering Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Engineering Academy?

Предыдущий опыт не требуется. AI Engineering Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Какую проблему решает RAG»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Engineering Academy?

Да. Каждый урок AI Engineering Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Какую проблему решает RAG
  2. Архитектура RAG: индексирование и поиск
  3. Составление дополненного запроса
  4. RAG или дообучение: что выбрать
← Назад к AI Engineering Academy