Перейти к основному содержимому

Генерация с дополнением извлечением (RAG)

Средний
What you'll learn
  • Что такое RAG и цикл извлечь-дополнить-сгенерировать
  • Как индексировать, извлекать, дополнять и генерировать с цитатами
  • Почему RAG превосходит дообучение для задач «ответь по моим документам»
  • Пять режимов сбоев, которые убивают качество RAG
  • Готовый к копированию промпт заземления, закрывающий два самых больших пробела

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

Цикл

Guided walkthrough1 of 4
  1. Разбейте на чанки, эмбеддьте их (см. /docs/foundations/embeddings) и сохраните в векторный (и/или ключевой) индекс.

Про шаг эмбеддинга при индексировании см. Эмбеддинги и векторный поиск.

Почему RAG вместо дообучения?

Pro tip
  • Свежо: обновляете данные, а не модель
  • Проверяемо: предоставляет цитаты
  • Дёшево: гораздо дешевле переобучения

Для большинства потребностей «отвечать по моим документам» RAG — правильный первый инструмент, см. Дообучение против промптинга против RAG.

Режимы сбоев (где умирает качество RAG)

Watch out
  • Плохое извлечение = плохой ответ. Если нужный чанк не извлечён, модель не может его использовать. Большинство проблем «RAG ошибается» — это проблемы извлечения.
  • Слишком грубый/мелкий чанкинг рушит релевантность (см. эмбеддинги).
  • Нет инструкции по заземлению: модель смешивает извлечённые факты со своими собственными догадками. Скажите ей отвечать только по контексту и признавать пробелы.
  • Впихивание слишком многого: нерелевантные чанки разбавляют сигнал и стоят токенов. Извлекайте мало качественных чанков.
  • Нет цитат: вы не можете проверить, поэтому не можете доверять.

Сбой чанкинга связан с эмбеддингами, а перегрузка контекста стоит токенов.

Pro tip
  • Оценивайте извлечение отдельно: измеряйте «извлекли ли мы нужный чанк?» отдельно от «хорошо ли ответила модель?». Это быстро локализует проблему. См. Evals (/docs/foundations/evals).

Готово к копированию: промпт заземления

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

Промпт заземления

You are answering strictly from the context below.

Rules:
- Use ONLY the context to answer. Do not use outside knowledge.
- Cite the source after each claim, like [chunk 2].
- If the answer is not in the context, reply exactly:
"I don't have that in the provided sources."
- Quote numbers and names verbatim — never paraphrase a figure.

Context:
[chunk 1] ...
[chunk 2] ...
[chunk 3] ...

Question: <the user's question>

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

Освойте термины

Нажмите Enter или пробел, чтобы перевернуть карточку. Используйте стрелки влево и вправо для перехода между карточками.Показан термин.
1 / 6

Проверь себя

0/5
  1. Что означают три буквы в RAG, по порядку?
  2. Когда «RAG ошибается», в чём чаще всего настоящая проблема?
  3. Почему RAG обычно предпочтительнее дообучения для «ответить по моим документам»?
  4. Какое единственное исправление с наибольшим рычагом останавливает смешивание моделью фактов с догадками?
  5. Почему оценивать извлечение отдельно от генерации?
Key takeaways
  • RAG = извлечь релевантные чанки, дополнить ими промпт, сгенерировать заземлённый ответ с цитатами.
  • Проиндексируйте (чанк + эмбеддинг + хранение), извлеките топ чанков, дополните инструкцией заземления, сгенерируйте с цитатами.
  • Предпочитайте RAG дообучению для Q&A по документам: свежо, с цитатами, дешевле.
  • Большинство сбоев — это сбои извлечения: извлекайте мало качественных чанков, а не всё подряд.
  • Всегда добавляйте инструкцию заземления и цитируйте; оценивайте извлечение и генерацию отдельно.

Дальше