Создание приложений на базе 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.

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

Zilliz Cloud Audit Logs Goes GA: Security, Compliance, and Transparency at Scale
Zilliz Cloud Audit Logs are now GA, giving enterprises real-time visibility, compliance-ready trails, and stronger security across AWS, GCP, and Azure.



