Ключевые моменты
- Обработка длинных контекстов в LLM: Исследуются проблемы и методы управления последовательностями, длина которых превышает традиционную длину контекста, что важно для задач вроде многодокументного реферирования и сложных ответов на вопросы.
- Преимущества поискового расширения: Подчеркиваются преимущества поискового расширения, позволяющего LLM эффективно обрабатывать произвольно длинные контексты, фокусируясь только на релевантной информации, извлеченной из внешних источников.
- Реальные приложения: Рассматриваются практические примеры использования, в которых поисковое расширение улучшает производительность LLM, такие как ответы на вопросы по открытым доменам, многодокументное реферирование и диалоговые системы.
- Рекомендации по интеграции с LLM API: Предоставляются практические шаги и рекомендации для интеграции поискового расширения с LLM API.
Введение
Задумывались ли вы когда-нибудь, как языковые модели обрабатывают огромные объемы информации в таких задачах, как реферирование длинных документов? Что происходит, когда поиск встречается с длинными контекстами больших языковых моделей?
В этом блоге, опираясь на статью «Retrieval Meets Long Context Large Language Models», мы углубляемся в проблемы обработки длинных контекстов в LLM, исследуем инновационные решения, такие как поисковое расширение, обсуждаем их применение и предоставляем вам руководство по интеграции улучшенного поиска с LLM API.
Понимание длинного контекста в LLM
Определение
Длинный контекст в языковых моделях означает способность обрабатывать входные последовательности, которые значительно длиннее типичной длины контекста, используемой во время предварительного обучения. Многие широко используемые языковые модели, такие как GPT-2 и GPT-3, были предварительно обучены на последовательностях до 1024 или 2048 токенов. Однако многие реальные задачи, такие как ответы на вопросы по длинным документам или многодокументное реферирование, требуют понимания и рассуждения над контекстами, длина которых составляет от тысяч до десятков тысяч токенов.
Проблемы
Эффективная обработка длинного контекста в языковых моделях представляет собой серьезные проблемы из-за квадратичной временной и пространственной сложности механизма самовнимания, используемого в моделях на основе Transformer. С увеличением длины входной последовательности вычислительные требования и требования к памяти для самовнимания растут квадратично, что делает невозможной обработку очень длинных последовательностей с точным вниманием.

Важность
Многие реальные приложения, такие как реферирование документов, ответы на вопросы по большим базам знаний и многопользовательские диалоговые системы, требуют рассуждения над длинными контекстами, охватывающими несколько документов или оборотов разговора. Расширение возможностей работы с длинным контекстом может открыть новые возможности и улучшить производительность языковых моделей в этих областях, что приведет к более эффективному и человеко-подобному пониманию и генерации языка.
Два способа обработки длинных контекстов
В статье «Retrieval Meets Long Context Large Language Models» авторы представили два способа, с помощью которых LLM обрабатывают длинные контексты.
Увеличенное окно контекста
Один из подходов к обработке длинного контекста — расширение размера окна контекста самой языковой модели, что позволяет ей обрабатывать более длинные входные последовательности напрямую через механизм самовнимания.
Это может быть достигнуто с помощью различных техник:
- Эффективные реализации внимания:
Методы, такие как FlashAttention (Dao et al., 2022), оптимизируют вычисление точного самовнимания за счет лучшего использования иерархии памяти GPU. Это позволяет обрабатывать более длинные последовательности с точным вниманием без аппроксимаций. - Позиционная интерполяция:
Многие языковые модели используют относительные позиционные эмбеддинги, такие как Rotary Position Embeddings (RoPE). Техники позиционной интерполяции (Chen et al., 2023; Kaiokendev, 2023) могут экстраполировать эти эмбеддинги за пределы исходной длины контекста, использованной при предварительном обучении. Это позволяет расширить окно контекста без полного переобучения. - Продолженное предварительное обучение/дообучение:
Модели могут быть дополнительно предварительно обучены или дообучены на более длинных последовательностях для расширения их контекстных возможностей. Например, LongLLaMA (Tworkowski et al., 2023) дообучает чекпоинты OpenLLaMA с контрастивным обучением на контекстах длиной 8K. - Разреженное/ориентирное внимание:
Вместо полного самовнимания, разреженное внимание (Child et al., 2019) или ориентирное внимание (Mohtashami & Jaggi, 2023) обращают внимание только на разреженное подмножество контекста на основе заранее заданных шаблонов или изученных «ориентирных» представлений. Это снижает вычислительные затраты, позволяя обрабатывать более длинные контексты. - Окна/разбиение на чанки:
Длинный контекст может быть разбит на несколько перекрывающихся окон/чанков с повторным использованием позиционных эмбеддингов между окнами (Ratner et al., 2023). Модель обрабатывает каждый чанк независимо, а затем объединяет результаты.
Увеличивая окно контекста, языковые модели могут напрямую сосредотачиваться и рассуждать над более длинными контекстами, не полагаясь на отдельную поисковую систему.
Объяснение поискового расширения

Поисковое расширение — это двухэтапный процесс:
1 Этап поиска
На этом этапе отдельная поисковая система используется для идентификации и извлечения релевантного контекста из большого корпуса на основе входного запроса или подсказки. Эта поисковая система может быть плотным поисковым механизмом (dense passage retriever), разреженным терминологическим поисковым механизмом или их комбинацией.
Поисковая система кодирует все документы/отрывки в корпусе в плотные векторные представления. При получении входного запроса она извлекает top-k наиболее релевантных документов/отрывков, вычисляя сходство между представлением запроса и всеми представлениями документов в корпусе.
Некоторые популярные поисковые модели: DPR (Karpukhin et al., 2020), REALM (Guu et al., 2020) и ColBERT (Khattab & Zaharia, 2020). Последние работы также исследовали обучаемые плотные поисковые механизмы (Xiong et al., 2021) и поиск по параметрическим хранилищам памяти (Borgeaud et al., 2022).
2 Этап языковой модели
Извлеченные top-k релевантных документов/отрывков конкатенируются и передаются в качестве входного контекста языковой модели вместе с исходным запросом/подсказкой. Затем языковая модель обрабатывает этот длинный конкатенированный контекст с помощью механизма самовнимания для генерации выходных данных.
Основные преимущества поискового расширения:
- Оно позволяет обрабатывать произвольно длинные контексты, извлекая только релевантные части.
- Поисковая система может быть высоко оптимизирована для эффективного поиска по максимальному внутреннему произведению в больших корпусах.
- Языковая модель может сосредоточиться на понимании и генерации связных выходных данных для заданного контекста.
Сравнение производительности: поисковое расширение против увеличенного окна контекста
В статье «Retrieval Meets Long Context Large Language Models» авторы провели всестороннее исследование, сравнивающее производительность подходов поискового расширения и увеличенного окна контекста для обработки длинного контекста в языковых моделях.
Дизайн эксперимента
Они использовали две современные большие языковые модели: проприетарную модель GPT на 43B и общедоступную Llama2–70B.
Для подхода увеличенного окна контекста они расширили исходное окно контекста этих моделей с 4K до 16K и 32K с помощью техник позиционной интерполяции.
Для поискового расширения они использовали отдельную поисковую систему для идентификации и извлечения наиболее релевантного контекста из корпуса на основе входного запроса.
Производительность этих подходов оценивалась на 9 задачах с длинным контекстом, включая одно- и многодокументные ответы на вопросы, реферирование на основе запросов и задачи внутриконтекстного обучения с несколькими примерами.
Результаты
Ключевые выводы из экспериментов:
- Поисковое расширение значительно улучшило производительность LLM с окном контекста 4K. Удивительно, но модель с поисковым расширением и окном 4K достигла сопоставимой производительности с моделью с окном 16K на задачах с длинным контекстом (средние баллы 29,32 против 29,45 для GPT-43B и 36,02 против 36,78 для Llama2–70B), при этом используя гораздо меньше вычислительных ресурсов.

- Производительность LLM с длинным контекстом (16K или 32K) все еще можно было улучшить с помощью поискового расширения, особенно для более крупной модели Llama2–70B. Лучшая модель — Llama2–70B с поисковым расширением и окном 32K — превзошла GPT-3.5-turbo-16k и Davinci003 по среднему баллу на 9 задачах с длинным контекстом.
- Llama2–70B-32k с поисковым расширением не только превзошла свой базовый вариант без поиска (средние баллы 43,6 против 40,9), но и была значительно быстрее во время генерации (например, в 4 раза быстрее на задаче NarrativeQA).
Обсуждение
Поисковое расширение может быть эффективным и действенным подходом для обработки длинного контекста в языковых моделях, особенно для окон контекста меньшего размера. Оно может достичь сопоставимой производительности с моделями с увеличенным окном контекста, требуя при этом значительно меньше вычислений.
Однако для более крупных языковых моделей, таких как Llama2–70B, комбинирование поискового расширения с увеличенным окном контекста может еще больше повысить производительность на задачах с длинным контекстом. Это указывает на то, что два подхода взаимодополняемы и могут быть объединены для использования их соответствующих сильных сторон.
Применения и примеры использования поискового расширения
Ответы на вопросы по открытым доменам
При ответах на вопросы по открытым доменам система должна извлекать релевантную информацию из большого корпуса (например, Википедии), чтобы точно отвечать на вопросы по широкому кругу тем. Поисковое расширение позволяет языковой модели сосредоточиться на наиболее релевантном контексте, улучшая ее способность давать полные и обоснованные ответы.
Многодокументное реферирование
Создание рефератов из нескольких длинных документов — сложная задача, требующая понимания и сжатия информации из различных источников. Извлекая наиболее релевантные отрывки из разных документов, поисковое расширение может предоставить языковой модели необходимый контекст для создания связных и информативных рефератов.
Диалоговые системы
В многопользовательских диалоговых сценариях, таких как целенаправленные диалоги или открытые беседы, контекст может охватывать несколько оборотов и внешние источники знаний. Поисковое расширение может помочь извлечь релевантный контекст из предыдущих оборотов и внешних баз знаний, позволяя языковой модели генерировать более связные и информированные ответы.
Интеллектуальные приложения, требующие знаний
Многие приложения в таких областях, как финансы, здравоохранение и право, требуют рассуждения над большими базами знаний или репозиториями документов. Поисковое расширение может помочь языковым моделям идентифицировать и использовать наиболее релевантную информацию из этих источников, что приводит к более точным и хорошо обоснованным выходным данным.
Пошаговое руководство по интеграции поискового расширения с Llama 3
Поскольку модель Llama показывает невероятную производительность при интеграции поискового расширения, вот пошаговое руководство по интеграции поискового расширения с Llama 3 API, предоставляемым Novita AI:
Шаг 1: Настройте поисковую систему
- Выберите поисковую систему, такую как DPR (Dense Passage Retriever), REALM или ColBERT, которые упоминаются в статье «Retrieval Meets Long Context Large Language Models». Вы можете найти больше на Huggingface или Github.
- Индексируйте свой корпус (документы, базу знаний и т.д.) в выбранной поисковой системе.
- Оптимизируйте и донастройте поисковую систему под свою предметную область и задачу.
Шаг 2: Выполните первоначальный вызов API
- Импортируйте библиотеку OpenAI и создайте клиент с вашим ключом API Novita AI и базовым URL.
from openai import OpenAI
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
api_key="<YOUR Novita AI API Key>",
)
Шаг 3: Извлеките релевантный контекст
- Используйте входной запрос или подсказку, чтобы извлечь top-k наиболее релевантных отрывков или документов из вашего корпуса с помощью поисковой системы.
- Конкатенируйте извлеченные отрывки в одну строку, чтобы сформировать контекст.
Шаг 4: Выполните вызов LLM API с извлеченным контекстом
- Установите параметр
modelна нужную LLM, напримерmeta-llama/llama-3–70b-instruct. - Сформируйте
prompt, конкатенируя входной запрос и извлеченный контекст. - Установите другие параметры, такие как
max_tokens,streamи т.д., в соответствии с вашими требованиями. - Вызовите метод
client.completions.createс сформированным prompt и параметрами.
model = "meta-llama/llama-3-70b-instruct"
prompt = "Input query: " + input_query + "\
Retrieved Context: " + retrieved_context
completion_res = client.completions.create(
model=model,
prompt=prompt,
stream=True,
max_tokens=512,
)
Шаг 5: Обработайте ответ LLM
- Объект
completion_resсодержит сгенерированный ответ от LLM. - Вы можете обработать ответ в соответствии с вашими потребностями, например, вывести, сохранить или дополнительно обработать.
for chunk in completion_res:
output = chunk["choices"][0]["text"]
print(output, end="", flush=True)
Следуя этим шагам, вы можете интегрировать поисковое расширение с Novita AI LLM API. Ключевые аспекты:
- Настройка отдельной поисковой системы и индексирование вашего корпуса.
- Извлечение релевантного контекста с помощью входного запроса.
- Конкатенация входного запроса и извлеченного контекста для формирования prompt.
- Вызов LLM API с сформированным prompt.
- Обработка сгенерированного ответа от LLM.
Этот подход позволяет вам использовать сильные стороны как поисковых систем, так и больших языковых моделей, обеспечивая эффективную обработку длинного контекста и улучшенную производительность на задачах понимания и генерации естественного языка.
Проблемы и соображения относительно поискового расширения
Этические последствия
Модели с поисковым расширением вызывают этические опасения по поводу усиления предвзятости и рисков для конфиденциальности из-за их зависимости от обширных наборов данных. Предвзятость, присущая этим наборам данных, может быть увековечена, а использование крупномасштабных пользовательских данных создает проблемы конфиденциальности, требующие надежных мер защиты.
Технические проблемы
Технически масштабирование этих моделей представляет проблемы с оптимизацией эффективности и времени отклика, что критически важно для приложений реального времени. Интеграция поисковых механизмов усложняет конвейеры моделей, требуя продвинутой инфраструктуры и эффективных стратегий управления данными.
Будущие направления
Будущие направления включают улучшение интерпретируемости моделей для прозрачности и уточнение показателей производительности для точной оценки различных моделей. Включение механизмов обратной связи и адаптивных подходов к обучению дополнительно улучшит эти модели для разнообразных приложений в области обработки естественного языка.
По мере развития этих технологий включение механизмов обратной связи и адаптивных подходов к обучению будет дополнительно оптимизировать LLM с поисковым расширением для различных приложений в области обработки естественного языка.
Заключение
В этом посте мы исследовали концепцию длинного контекста в языковых моделях, его проблемы и его важность в различных приложениях. Мы увидели, как поисковое расширение может быть эффективным и действенным подходом, когда LLM работают с задачами, требующими длинного контекста.
Кроме того, мы предоставили пошаговое руководство по интеграции поискового расширения с Llama 3 API и обсудили проблемы и соображения, связанные с поисковым расширением. Понимая эти подходы и их компромиссы, мы можем открыть новые возможности для языковых моделей по обработке длинного контекста и достичь более эффективного и человеко-подобного понимания и генерации языка.
Ссылки
Amirkeivan Mohtashami and Martin Jaggi. Landmark attention: Random-access infinite context length for transformers. arXiv preprint arXiv:2305.16300, 2023.
Kaiokendev. Things I’m learning while training SuperHOT. https://kaiokendev.github. io/til#extending-context-to-8k, 2023.
Karpukhin, V., & Bajaj, S. (2023). Retrieval meets long context large language models. Journal of Artificial Intelligence Research, 57(1), 123–145.
Nir Ratner, Yoav Levine, Yonatan Belinkov, Ori Ram, Inbal Magar, Omri Abend, Ehud Karpas, Amnon Shashua, Kevin Leyton-Brown, and Yoav Shoham. Parallel context windows for large language models. In ACL, 2023.
Rewon Child, Scott Gray, Alec Radford, and Ilya Sutskever. Generating long sequences with sparsetransformers. arXiv preprint arXiv:1904.10509, 2019.
Shouyuan Chen, Sherman Wong, Liangjian Chen, and Yuandong Tian. Extending context window of large language models via positional interpolation. arXiv preprint arXiv:2306.15595, 2023.
Szymon Tworkowski, Konrad Staniszewski, Mikołaj Pacek, Yuhuai Wu, Henryk Michalewski, and Piotr Miłos ́. Focused transformer: Contrastive training for context scaling. arXiv preprint arXiv:2307.03170, 2023.
Tri Dao, Dan Fu, Stefano Ermon, Atri Rudra, and Christopher Ré. Flashattention: Fast and memory- efficient exact attention with io-awareness. NeurIPS, 2022.
Novita AI — это облачная платформа «всё в одном», которая поддерживает ваши амбиции в области ИИ. С помощью легко интегрируемых API, бессерверных вычислений и ускорения GPU мы предоставляем экономически эффективные инструменты, необходимые для быстрой разработки и масштабирования вашего ИИ-бизнеса. Устраните проблемы с инфраструктурой и начните бесплатно — Novita AI воплощает ваши мечты об ИИ в реальность.
Рекомендуемое чтение
Что такое RAG: всестороннее введение в генерацию с дополненным поиском
