Создание приложений на базе LLM с ответами в 100 раз быстрее и резким снижением затрат
Эта статья была первоначально опубликована на ODBMS и переопубликована здесь с разрешения.
Магический ChatGPT и другие большие языковые модели (LLM) поразили почти всех своей способностью понимать естественный язык и отвечать на сложные вопросы. В результате всё больше разработчиков используют LLM для создания интеллектуальных приложений. Однако по мере того как ваше LLM-приложение набирает популярность и сталкивается с резким ростом трафика, стоимость вызовов LLM API значительно увеличивается. Высокая задержка ответа также будет вызывать раздражение, особенно в периоды пиковой нагрузки для LLM, напрямую влияя на пользовательский опыт.
В этой статье я представлю практическое решение проблем, которые препятствуют эффективности и скорости LLM-приложений: GPTCache. Этот семантический кэш с открытым исходным кодом может помочь вам добиться скорости извлечения как минимум в 100 раз выше и снизить ваши затраты на использование сервисов LLM до нуля при попадании в кэш.
Ключевые проблемы при создании приложений на основе LLM
Прежде чем глубоко погрузиться в GPTCache, давайте сначала обсудим две ключевые проблемы при создании интеллектуального приложения на основе LLM.
Резкий рост затрат из-за ненужных вызовов API
Приложения могут использовать мощные возможности логического вывода LLM, вызывая API LLM. Однако вызов API не является бесплатным. Если ваше приложение предназначено для продакшена и имеет большую пользовательскую базу, частые вызовы API могут стоить вам целое состояние. Более того, вы можете в итоге платить за ненужные вызовы API для семантически идентичных вопросов, на которые LLM уже ответила, впустую тратя деньги и ресурсы.
Низкая производительность и масштабируемость при высокой задержке ответа
Большие языковые модели обычно обрабатывают ошеломляющие рабочие нагрузки. Возьмём ChatGPT в качестве примера. По состоянию на июль 2023 года у него более 100 миллионов активных пользователей, и только в июне он получил примерно один миллиард посещений. Из-за таких высоких нагрузок LLM замедляют свои ответы, особенно в часы пик, из-за чего приложения, которые на них полагаются, также замедляются.
Кроме того, сервисы LLM применяют ограничения частоты запросов, ограничивая количество вызовов API, которые ваши приложения могут отправлять на сервер в течение заданного периода времени. Достижение лимита частоты означает, что дополнительные запросы будут заблокированы до истечения определённого периода, что приводит к простою сервиса. Это узкое место может напрямую повлиять на пользовательский опыт и ограничить количество запросов, которые может обрабатывать ваше приложение.
Что такое GPTCache?
GPTCache — это семантический кэш с открытым исходным кодом, предназначенный для повышения эффективности и скорости приложений на основе GPT за счёт хранения и извлечения ответов, сгенерированных языковыми моделями. GPTCache позволяет пользователям настраивать кэш под свои конкретные требования, предлагая ряд вариантов для эмбеддинга, оценки сходства, места хранения и политик вытеснения. Кроме того, GPTCache поддерживает как интерфейс OpenAI ChatGPT, так и интерфейс Langchain, с планами поддержать больше интерфейсов в ближайшие месяцы.
Как работает GPTCache?
Проще говоря, GPTCache хранит ответы LLM в кэше. Поэтому, когда пользователи делают похожие запросы, на которые LLM ранее уже отвечали, GPTCache выполняет поиск и возвращает результаты пользователям без необходимости снова вызывать LLM. В отличие от традиционных систем кэширования, таких как Redis, GPTCache использует семантическое кэширование, которое хранит и извлекает данные через эмбеддинги. Он использует алгоритмы эмбеддинга для преобразования пользовательских запросов и ответов LLM в эмбеддинги и выполняет поиск сходства по этим эмбеддингам с использованием векторного хранилища, такого как Milvus.
GPTCache состоит из шести основных модулей: LLM Adapter, Pre-processor (Context Manager), Embedding Generator, Cache Manager, Similarity Evaluator и Post-processor.
Адаптер LLM
Адаптер LLM служит интерфейсом GPTCache для внешнего взаимодействия. Он преобразует запросы в протоколы кэша, управляет рабочим процессом кэширования и преобразует результаты кэша в ответы LLM. Благодаря адаптеру LLM экспериментировать и тестировать различные языковые модели становится проще, поскольку вы можете переключаться между ними без переписывания кода или изучения нового API.
GPTCache уже поддерживает OpenAI ChatGPT API, LangChain API, MiniGPT4 API и Llamacpp API. Наша дорожная карта включает добавление большего числа API, таких как Hugging Face Hub, Bard и Anthropic.
Препроцессор
Препроцессор управляет запросами, отправляемыми в LLM, анализирует и форматирует их, включая удаление избыточной информации из входных данных, сжатие входной информации, обрезку длинных текстов и выполнение других связанных задач.
Генератор эмбеддингов
Генератор эмбеддингов преобразует пользовательские запросы в векторы эмбеддингов с использованием предпочитаемых вами моделей эмбеддингов. GPTCache поддерживает локальные модели из HuggingFace и GitHub, а также облачные сервисы эмбеддингов для генерации эмбеддингов. К ним относятся OpenAI embedding API, ONNX с моделью GPTCache/paraphrase-albert-onnx, Hugging Face embedding API, Cohere embedding API, fastText embedding API и SentenceTransformers embedding API, а также модели Timm для эмбеддингов изображений.
Менеджер кэша
Менеджер кэша — это основной модуль GPTCache. Он хранит запросы пользователей и ответы LLM и состоит из трех компонентов:
Векторное хранилище для хранения векторов эмбеддингов и поиска по сходству
Хранилище кэша для хранения пользовательских запросов и соответствующих ответов LLM
Политика вытеснения для управления емкостью кэша в соответствии с политикой вытеснения Least Recently Used (LRU) или First In, First Out (FIFO).
В настоящее время GPTCache поддерживает SQLite, PostgreSQL, MySQL, MariaDB, SQL Server и Oracle для хранения кэша, а также Milvus, Zilliz Cloud и Weaviate для хранения и извлечения векторов. Пользователи могут выбрать предпочитаемое векторное хранилище, хранилище кэша и политику вытеснения в соответствии со своими потребностями, балансируя производительность, масштабируемость и затраты.
Оценщик сходства
Оценщик сходства определяет, соответствует ли кэшированный ответ входному запросу. GPTCache предлагает стандартизированный интерфейс, который объединяет несколько стратегий сходства, позволяя пользователям настраивать совпадения кэша в соответствии со своими конкретными потребностями и сценариями использования.
Постпроцессор
Постпроцессор подготавливает итоговый ответ для возврата пользователю при попадании в кэш. Если ответа нет в кэше, адаптер LLM запрашивает ответы у LLM и записывает их обратно в менеджер кэша.
Преимущества GPTCache
Резкое снижение затрат на вызовы LLM API
LLM взимают плату за каждый вызов API. GPTCache помогает разработчикам семантически кэшировать ответы LLM для похожих и повторно задаваемых вопросов, снижая затраты на API до нуля при попадании в кэш. GPTCache сокращает общее количество вызовов API, резко снижая затраты. Это особенно полезно для приложений с очень высоким трафиком.
Ответы быстрее в 100 раз
GPTCache может значительно сократить время ответа для приложений LLM. В периоды пиковой нагрузки ChatGPT ответы могут занимать до нескольких секунд. Однако с GPTCache приложения могут извлекать ранее запрошенные ответы менее чем за 100 миллисекунд, что как минимум в 100 раз быстрее.
Улучшенная масштабируемость
Кэширование ответов LLM снижает нагрузку на сервис LLM, повышая масштабируемость вашего приложения и предотвращая узкие места при обработке растущего числа запросов.
Лучшая доступность
Сервисы LLM часто устанавливают ограничения скорости, ограничивая количество раз, когда ваше приложение может обращаться к серверу в течение определенного периода времени. GPTCache сокращает общее количество API-вызовов и позволяет вашему приложению быстро масштабироваться для обработки растущего объема запросов. Этот подход обеспечивает стабильную производительность по мере роста пользовательской базы вашего приложения.
Подробнее о том, какую пользу вы можете получить от GPTCache, см. на странице Что такое GPTCache.
OSS Chat, AI-чатбот, использующий GPTCache и стек CVP
GPTCache полезен для Retrieval-Augmented Generation (RAG), где приложения реализуют стек CVP (ChatGPT/LLMs+векторная база данных+prompt as code) для более точных результатов. OSS Chat, AI-чатбот, который может отвечать на вопросы о проектах GitHub, — лучший пример, иллюстрирующий, как GPTCache и стек CVP работают в сценарии RAG.
Архитектура OSS Chat
OSS Chat использует Towhee, конвейер машинного обучения, для преобразования информации и связанных страниц документации проектов GitHub во вложения. Затем он сохраняет вложения в Zilliz Cloud, полностью управляемом сервисе векторных баз данных. Когда пользователь задает вопрос через OSS Chat, Zilliz Cloud ищет top k результатов, наиболее релевантных этому запросу. Затем эти результаты объединяются с исходным вопросом для создания prompt с более широким контекстом.
Перед отправкой prompt в ChatGPT Zilliz Cloud сначала проверяет GPTCache на наличие ответов; если происходит попадание в кэш, GPTCache возвращает ответ непосредственно пользователю. Если промах кэша, GPTCache отправляет исходный prompt в ChatGPT для получения ответов и сохраняет его обратно в кэше для дальнейшего использования. GPTCache позволяет OSS Chat предоставлять отличный пользовательский опыт с более низкими затратами, меньшей задержкой ответа и меньшими усилиями на разработку.
Итоги
Создание приложений на основе LLM — растущий тренд, который приносит пользу всем участникам экосистемы. Однако разработчики приложений сталкиваются с двумя ключевыми проблемами: высокой стоимостью API-вызовов и высокой задержкой ответа. GPTCache — идеальное open-source-решение, которое решает эти проблемы и предлагает множество других преимуществ, включая снижение сетевой задержки, повышение доступности и лучшую масштабируемость.
Практическое руководство по началу работы с GPTCache см. в документации GPTCache. Вы можете задавать вопросы или делиться своими идеями во время наших Community Office Hours. Вы также можете внести вклад в GPTCache.
Читать далее

Zilliz Cloud On-Demand Compute: Pay Only for What You Use
The customer case behind Zilliz Cloud On-Demand: how a $10K vector search bill came down to under $500, and the engineering changes that made it possible.

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.



