Prompt Enrichment
Обогащение промпта добавляет к запросу пользовательские данные, найденные документы, результаты работы инструментов или примеры до его передачи ИИ-модели, чтобы ответы лучше соответствовали запросу пользователя.
Обогащение промпта — это автоматическое добавление информации к запросу пользователя до его передачи модели ИИ. Между пользователем и моделью работает код приложения, который дополняет запрос тем, что пользователь не ввёл: данными аккаунта, документами с ответом на вопрос, актуальными данными из инструментов, примерами с решениями или более подробной версией самого запроса. Клиент спрашивает: «Почему моя камера больше не определяется?». Он вводит семь слов, а большая языковая модель (LLM) получает эти семь слов, а также данные об устройстве клиента, версии программного обеспечения и статью справки о конкретной проблеме. Этот термин объединяет несколько методов, наиболее известный из которых — генерация с дополнением извлечёнными данными (RAG).
Что добавляет обогащение#
- Данные пользователя и сеанса: Поля профиля, тарифный план, язык, местоположение, текущая дата или открытая пользователем страница, полученные из собственных записей приложения.
- Извлечённые знания: Фрагменты, найденные при поиске по коллекции документов или графу знаний по тексту, связанному с запросом.
- Результаты инструментов: Значения, полученные для этого запроса, например статус заказа из API, строка базы данных или результат работы другой модели.
- Выбранные примеры: Примеры с несколькими вариантами ответа, выбираемые для каждого запроса по сходству с входными данными вместо единого фиксированного набора для всех запросов.
- Переформулированные запросы: Модель расширяет краткий запрос перед использованием. В методе HyDE Luyu Gao и коллеги поручают LLM написать гипотетический ответ, а затем используют эмбеддинг этого документа для поиска реальных документов. Такой подход показал лучшие результаты, чем тот же алгоритм извлечения без учителя, которому передавали только вопрос.
В следующем примере запрос в службу поддержки дополняется данными аккаунта и наиболее подходящей статьёй справки, найденной по сходству TF-IDF с помощью scikit-learn:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# Context the user never typed: their account record and the help center's articles
account = {"plan": "Pro", "device": "USB webcam", "app_version": "2.3"}
articles = [
"Version 2.4 fixes USB webcams that are not detected after a system update.",
"Pro plans include ten concurrent video streams per workspace.",
"Invoices are available on the billing page as soon as a payment succeeds.",
]
question = "Why is my camera not detected anymore?"
# Retrieve the article most similar to the question
vectorizer = TfidfVectorizer().fit([*articles, question])
scores = cosine_similarity(vectorizer.transform([question]), vectorizer.transform(articles))[0]
best = articles[scores.argmax()]
# Assemble the enriched prompt the model actually receives
profile = ", ".join(f"{key}: {value}" for key, value in account.items())
prompt = f"Customer profile: {profile}\nRelevant article: {best}\nQuestion: {question}"
print(prompt)Вывод:
Customer profile: plan: Pro, device: USB webcam, app_version: 2.3
Relevant article: Version 2.4 fixes USB webcams that are not detected after a system update.
Question: Why is my camera not detected anymore?В вопросе пользователя нет упоминаний веб-камеры, версии или обновления, но обогащённый промпт содержит всё необходимое, чтобы ответить: «обновление с версии 2.3 до 2.4». В производственных системах поиск обычно выполняется с помощью плотных эмбеддингов в векторной базе данных или посредством гибридного поиска, но этап объединения данных остаётся тем же.
Обогащение на практике#
В 2023 году GitHub описала, как функция поиска в соседних вкладках в Copilot ищет в открытых у разработчика файлах фрагменты, похожие на код рядом с курсором, и добавляет их в промпт. Это увеличило относительную частоту принятия предложений Copilot пользователями на 5%. Чат-боты службы поддержки дополняют каждый ход диалога данными об аккаунте и заказах, а ИИ-агенты — каждый шаг результатами предыдущих вызовов инструментов.
В конвейерах компьютерного зрения промпты дополняются результатами работы детектора. В Ultralytics Platform Agents блок LLM передаёт выбранной визуально-языковой модели каждое изображение вместе с результатами предыдущих блоков, например результатами обнаружения YOLO26, поэтому промпт, написанный один раз, дополняется свежими результатами обнаружения объектов для каждого изображения, обрабатываемого рабочим процессом.
Обогащение обходится недёшево. Каждый добавленный фрагмент расходует токены, повышая стоимость и задержку инференса, а нерелевантный или избыточный контекст снижает точность — этот эффект называют деградацией контекста. Найденные веб-страницы и документы также могут содержать атаки типа промпт-инъекции, а любые добавленные в промпт персональные данные вызывают опасения за конфиденциальность данных, поскольку они отправляются тому, кто запускает модель.
Обогащение промпта и связанные понятия#
- Генерация с дополнением извлечёнными данными (RAG): Вид обогащения, при котором выполняется поиск во внешней коллекции документов. Обогащение охватывает и данные, для которых поиск не нужен, например тарифный план пользователя или текущую дату.
- Промпт-инжиниринг: Человек разрабатывает шаблон промпта. Во время выполнения обогащение заполняет этот шаблон данными, специфичными для запроса.
- Проектирование контекста: Управляет всем содержимым контекста модели в приложении, включая то, что добавлять, сжимать или удалять на каждом шаге. Обогащение отвечает за добавление.
- Обоснование ответа: Привязка вывода модели к проверяемым источникам. Обогащение предоставляет эти источники в промпте.
- Сжатие промпта: Сокращает промпт за счёт удаления малоинформативных токенов; его часто применяют после обогащения, если добавленный контекст длинный.










