Улучшение способности ChatGPT понимать неоднозначные запросы
Эта статья изначально была опубликована в The New Stack и перепечатывается здесь с разрешения.
Техника prompt engineering помогает большим языковым моделям (LLM) обрабатывать местоимения и другие сложные кореференции в системах retrieval augmented generation (RAG).
В постоянно расширяющейся области ИИ большие языковые модели (LLM), такие как ChatGPT, стимулируют инновационные исследования и приложения с беспрецедентной скоростью. Одним из значительных достижений стало появление retrieval augmented generation (RAG). Эта техника сочетает мощь LLM с векторной базой данных, выступающей в роли долговременной памяти, чтобы повысить точность генерируемых ответов. Показательным примером подхода RAG является проект с открытым исходным кодом Akcio, предлагающий надежную систему вопросов и ответов.
Архитектура Akcio
В архитектуре Akcio предметно-специфические знания бесшовно интегрируются в векторное хранилище, такое как Milvus или Zilliz (полностью управляемый Milvus), с помощью загрузчика данных. Векторное хранилище извлекает Top-K наиболее релевантных результатов для запроса пользователя и передает их LLM, предоставляя LLM контекст о вопросе пользователя. Затем LLM уточняет свои ответы на основе внешних знаний.
Например, если пользователь задает вопрос: «Каковы варианты использования больших языковых моделей в 2023 году?» о статье под названием «Отчет с аналитикой о прогрессе больших языковых моделей в 2023 году», которая была импортирована в Akcio, система умело извлекает три наиболее релевантных фрагмента из отчета:
1. В 2023 году варианты использования LLM можно разделить на две категории: генеративный ИИ и принятие решений. Ожидается, что сценарии принятия решений будут иметь более высокую бизнес-ценность.
2. Сценарий генеративного ИИ в основном включает диалоговое взаимодействие, разработку кода, интеллектуальных агентов и т. д.
3. Приложения NLP включают классификацию текста, машинный перевод, анализ тональности, автоматическое суммирование и т. д.
Akcio объединяет эти фрагменты с исходным запросом и пересылает их LLM, генерируя нюансированный и точный ответ:
Сценарии применения индустрии больших моделей можно разделить на сценарии генерации и принятия решений.
Проблема разрешения кореференции в RAG
Однако, несмотря на достигнутый прогресс, внедрение систем RAG создает проблемы, особенно в многоходовых диалогах, включающих разрешение кореференции. Рассмотрим такую последовательность вопросов:
Q1: Каковы варианты использования большой языковой модели в 2023 году?
A1: Варианты использования больших языковых моделей можно разделить на генеративный ИИ и принятие решений.
Q2: В чем их различия, и можете ли вы привести примеры?
Местоимение «их» в Q2 относится к «генеративному ИИ и принятию решений». Тем не менее LLM может сгенерировать нерелевантные результаты на этот вопрос, которые подрывают связность диалога:
1. BERT и GPT — важные модели в области NLP, но они существенно различаются по своей архитектуре и сценариям применения.
2. Разница между большими и малыми моделями заключается в их масштабе и сложности. Большие модели обычно имеют больше параметров и более сложные структуры, требуя больше вычислительных ресурсов и времени для обучения и инференса. Малые модели, напротив, относительно просты, имеют меньше параметров и более высокую скорость обучения и инференса.
3. Однако нет дополнительной информации, позволяющей различить эти два продукта, поскольку они выглядят очень похожими.
Использование ChatGPT для разрешения кореференции
Традиционные методы, такие как токенизация, лемматизация и замена ключевых слов с использованием рекуррентных нейронных сетей, часто оказываются недостаточными для разрешения сложных ссылок. Поэтому исследователи обратились к LLM, таким как ChatGPT, для задач разрешения кореференции. Этот подход предполагает инструктирование ChatGPT заменять местоимения или сохранять исходный вопрос на основе предоставленного контекста. Хотя этот метод перспективен, он иногда выдает прямые ответы вместо следования инструкциям промпта, что указывает на необходимость более совершенной стратегии.
Протестированные примеры
Мы экспериментировали с простыми командами, побуждающими ChatGPT заменять местоимения, используя следующий формат промпта:
prompt = f'''Пожалуйста, сгенерируйте новый вопрос, придерживаясь следующих рекомендаций:
1. Восстановите все отсутствующие местоимения или условия в вопросе на основе контекста.
2. Сохраните исходный вопрос, если он уже полный.
{history}
Вопрос: {question}'''
Пример 1
Запрос:
history = ''' Что такое NLP?
NLP расшифровывается как Natural Language Processing. Это область компьютерных наук и искусственного интеллекта, которая сосредоточена на взаимодействии между компьютерами и людьми с использованием естественного языка. '''
question = 'Какую проблему это решает?'
Ответ ChatGPT:
Какую проблему решает Natural Language Processing (NLP)?
В этом случае ChatGPT отлично справился, заменив “это” на “Natural Language Processing (NLP).”
Пример 2
Запрос:
history = '''Когда был выпущен GPT4?
GPT4 был выпущен в 2023 году'''
question = 'Какой прогресс был достигнут в компьютерном зрении в этом году?'
Ответ ChatGPT:
Какой прогресс был достигнут в компьютерном зрении в этом году?
В этом случае ChatGPT столкнулся с трудностями при замене “в этом году,” что привело к неполному разрешению.
Пример 3
Запрос:
history = '''Что такое GPT3?
GPT-3 (Generative Pre-trained Transformer 3) — это современная модель обработки языка, разработанная OpenAI.
Когда был выпущен GPT4?
GPT4 был выпущен в 2023 году'''
question = 'В чем разница между ними? Каковы преимущества последнего?'
Ответ ChatGPT:
Извините, предоставленная информация о дате выпуска GPT-4 неточна, поскольку она не была официально объявлена OpenAI. Поэтому невозможно ответить на вопрос о различии между GPT-3 и GPT-4 или о преимуществах последнего.
К сожалению, ChatGPT отклоняется от инструкций, возможно, из-за своего сложного процесса принятия решений. Несмотря на наши попытки усилить промпт, ChatGPT иногда склоняется к прямым ответам, усложняя задачу разрешения кореференции.
Few-shot-промпт с Chain of Thought: усовершенствованный подход
Промпт-инжиниринг играет ключевую роль в эффективном использовании LLM . Мы решили протестировать объединение few-shot-промптов с методом Chain of Thought (CoT) как перспективную стратегию. Few-shot-промпты предоставляют LLM несколько эталонных примеров, направляя их к воспроизведению этих примеров в своих ответах. CoT повышает производительность LLM в сложных задачах рассуждения, побуждая их к пошаговому рассуждению в ответах.
Интегрируя эти техники, мы разработали формат промпта, чтобы направлять ChatGPT при разрешении кореференции. Обновленный формат промпта включает пустую историю разговора, базовые примеры, неудачные замены местоимений и случаи с несколькими местоимениями, чтобы предоставить ChatGPT более явные инструкции и справочные примеры. Случаи, когда ChatGPT возвращает NEED COREFERENCE RESOLUTION: Yes , имеют решающее значение, поскольку они указывают, что ChatGPT необходимо заменить местоимения или неоднозначные ссылки для получения связного ответа.
Вот усовершенствованный формат промпта:
REWRITE_TEMP = f'''
HISTORY:
[]
NOW QUESTION: Привет, как дела?
NEED COREFERENCE RESOLUTION: No => THOUGHT: Следовательно, выходной вопрос отражает текущий запрос. => OUTPUT QUESTION: Привет, как дела?
-------------------
HISTORY:
[Q: Milvus — это векторная база данных?
A: Да, Milvus — это векторная база данных.]
NOW QUESTION: Как его использовать?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: Я должен заменить 'его' на 'Milvus' в текущем вопросе. => OUTPUT QUESTION: Как использовать Milvus?
-------------------
HISTORY:
[]
NOW QUESTION: Каковы его возможности?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: Хотя 'его' требует замены, в истории нет подходящей ссылки. Поэтому выходной вопрос остается без изменений. => OUTPUT QUESTION: Каковы его возможности?
-------------------
HISTORY:
[Q: Что такое PyTorch?
A: PyTorch — это библиотека машинного обучения с открытым исходным кодом для Python. Она предоставляет гибкую и эффективную среду для создания и обучения глубоких нейронных сетей.
Q: Что такое Tensorflow?
A: TensorFlow — это фреймворк машинного обучения с открытым исходным кодом. Он предоставляет комплексный набор инструментов, библиотек и ресурсов для создания и развертывания моделей машинного обучения.]
NOW QUESTION: В чем разница между ними?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: 'Ними' следует заменить на 'PyTorch and Tensorflow' в текущем вопросе. => OUTPUT QUESTION: В чем разница между PyTorch and Tensorflow?
-------------------
HISTORY:
[{history}]
NOW QUESTION: {question}
NEED COREFERENCE RESOLUTION: '''
Протестированные примеры и уточненные ответы
Вот некоторые результаты наших экспериментов с усовершенствованными промптами:
Пример 1
Запрос:
history = '''Когда был выпущен GPT-4?
GPT-4 был выпущен в 2023 году'''
question = 'Какой прогресс был достигнут в компьютерном зрении в этом году?'
Уточненный ответ ChatGPT:
Yes => THOUGHT: Мне нужно заменить "в этом году" на "2023" в текущем вопросе. => OUTPUT QUESTION: Какой прогресс был достигнут в компьютерном зрении в 2023 году?
Пример 2:
Запрос:
history = '''Что такое GPT-3?
GPT-3 (Generative Pre-trained Transformer 3) — это современная модель обработки языка, разработанная OpenAI.
Когда был выпущен GPT-4?
GPT-4 был выпущен в 2023 году'''
question = 'В чем разница между ними двумя? Каковы преимущества последнего?'
Уточненный ответ ChatGPT:
Yes => THOUGHT: Мне нужно заменить 'ними двумя' на 'GPT-3 and GPT-4' и 'последнего' на 'GPT-4' в текущем вопросе. => OUTPUT QUESTION: В чем разница между GPT-3 and GPT-4? Каковы преимущества GPT-4?
Усовершенствованный формат промпта значительно повышает способность ChatGPT справляться со сложными задачами разрешения кореференции. Вопросы, включающие несколько сущностей, которые ранее вызывали трудности, теперь решаются эффективно. ChatGPT умело заменяет местоимения и неоднозначные ссылки, предоставляя точные и контекстуально релевантные ответы.
Заключение
Промпт-инжиниринг играет ключевую роль в решении проблем кореференции в системах RAG с использованием LLM. Интегрируя инновационные техники, такие как few-shot prompts и методы CoT, мы значительно улучшили обработку сложных ссылок в системах RAG, позволяя LLM, таким как ChatGPT, точно заменять местоимения и неоднозначные ссылки, что приводит к связным ответам.
Читать далее

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Vector Databases vs. Object-Relational Databases
Use a vector database for AI-powered similarity search; use an object-relational database for complex data modeling with both relational integrity and object-oriented features.

Vector Databases vs. Document Databases
Use a vector database for similarity search and AI-powered applications; use a document database for flexible schema and JSON-like data storage.



