Запознайте се с Redis LangCache: управляван семантичен кеш, който намалява разходите за LLM API с до 90% и връща попаденията в кеша до 15 пъти по-бързо
Производствените LLM приложения рядко получават въпрос, който никой не е задавал преди. Асистентите за поддръжка и RAG конвейерите обработват едни и същи намерения хиляди пъти на ден, като всеки път са формулирани по различен начин, а повечето стекове третират всяка формулировка като нова, изцяло таксувана заявка. Redis LangCache е напълно управлявана услуга за семантично кеширане, която се намира между приложението и модела, съпоставя входящите подсказки с предварително отговорени такива според значението им, а не според точното им текстово съвпадение, и връща съхранения отговор, когато съществува достатъчно близко съвпадение. Redis съобщава за спестяване на до 90% от разходите за API и отговори от кеша до 15 пъти по-бързи в сравнение с повторно изпращане на заявка към модела.
Може ли да бъде внедрен? Да. LangCache е наличен днес като публична предварителна версия в Redis Cloud, достъпен чрез REST API с Python и JavaScript SDK, като Redis отбелязва, че функциите и поведението могат да се променят по време на предварителната версия.
Проблемът: парафразите все още са пълни LLM заявки
Разгледайте три заявки към асистент за клиентска поддръжка:
- „Мога ли да получа възстановяване на сумата, след като закупих месечния план?“
- „Възстановява ли се сумата за месечния абонамент?“
- „Мога ли да анулирам плана и да си върна парите?“
Формулировката е различна, но въпросът и отговорът са идентични. Без семантичен кеш всяка версия задейства пълно генериране: входните токени се обработват, изходните токени се декодират, а потребителят чака.
Кеширането на префикси премахва само част от този разход. Когато заявките споделят системна подсказка или контекст, механизмът използва повторно KV състоянията, изчислени за този префикс, но заявката все пак достига до LLM, новите токени все още се обработват, а пълният отговор все още се декодира. Попадането в кеша на префикса означава по-евтина заявка за генериране, а не избегната заявка.
Как работи LangCache
LangCache премества кеша извън модела и съхранява самия генериран отговор. Архитектурата представлява цикъл от две заявки:
- Преди да извика модела, приложението изпраща подсказката до
POST /v1/caches/{cacheId}/entries/search. - LangCache генерира embedding за подсказката и извършва векторно търсене сред съхранените записи.
- Ако семантично подобен запис премине конфигурирания праг за сходство, кешираният отговор се връща и не се извършва LLM заявка.
- При липса на съвпадение приложението извиква избрания от него LLM по обичайния начин, след което съхранява подсказката и новия отговор чрез
POST /v1/caches/{cacheId}/entriesза бъдещи съвпадения.
Генерирането на embedding се обработва от услугата, като могат да се използват модели по подразбиране или собствени модели. Поведението на кеша се управлява чрез прагове за сходство, TTL и политики за изтласкване, както и чрез адаптивни контроли, които настройват прецизността и пълнотата. Изграден върху векторната база данни на Redis и предоставен като REST API, той работи с всеки LLM доставчик и език. Процентът на попаденията и спестяванията се наблюдават от конзолата на Redis Cloud.
Какво всъщност спестява попадането в кеша
Попадането в кеша премахва входните токени, изходните токени и латентността при декодиране на допълнителна заявка към модела. При демонстрационно изпълнение, сравняващо двата пътя при парафразиран въпрос, директното инфериране отне 2.232 секунди и използва 514 входни токена плюс 250 изходни токена. LangCache върна предишния отговор за 0.37 секунди без входни или изходни токени от LLM, което е приблизително 6 пъти по-бързо в това изпълнение.
Документацията на Redis внимателно обяснява как се натрупват спестяванията. При кеширан отговор не плащате за изходни токени, докато разходите за входни токени обикновено се компенсират от разходите за embedding и съхранение. Препоръчителната оценка е:
Ориентировъчни месечни спестявания = (Месечни разходи за изходни токени) x (Процент попадения в кеша)
При месечни разходи за LLM от 200 щатски долара, 60% от които са за изходни токени, и процент попадения от 50%, това означава спестени 60 щатски долара на месец. Redis публикува и калкулатор за спестявания за годишни оценки.
Съобщението за публичната предварителна версия на Redis посочва до 15 пъти по-бързи отговори при попадение в кеша и до 70% по-ниско използване на токени, докато текущата продуктова страница посочва спестявания до 90%. Клиентът Mangoes.ai съобщава за 70% процент попадения в кеша в своето гласово приложение за грижа за пациенти, което намалява разходите за LLM със 70% и осигурява 4 пъти по-бързи отговори. Действителният резултат зависи от това каква част от трафика съдържа безопасно повторение.
Къде семантичното кеширане изисква внимание
Решението кои въпроси могат безопасно да споделят един и същ отговор е производствен въпрос, а не детайл от конфигурацията. Ако прагът е зададен твърде ниско, на клиент, който пита за надграждане, може да бъде върната политика за възстановяване на сума. Ако е зададен твърде високо, почти всяка парафраза ще бъде изпратена обратно към модела и кешът ще спре да се изплаща. Производствените конфигурации се нуждаят от добре настроени прагове, политики за изтичане, така че остарелите отговори да бъдат премахвани, изолиране на данните между наематели и наблюдение за неправилни съвпадения.
LangCache покрива тези изисквания чрез обхвати за достъп, персонализирано филтриране, контроли за TTL и изтласкване, както и наблюдение чрез Redis Cloud. Данните остават на Redis сървърите на клиента, а Redis заявява, че няма достъп до тези данни и не ги използва за обучение на модели.
Основни изводи
- Кеширането на префикси намалява разходите за обработка на подсказките; семантичното кеширане напълно елиминира LLM заявката при попадение.
- LangCache представлява REST интеграция от две заявки: търсене преди модела и съхранение след него.
- Спестяванията идват основно от избегнатите изходни токени; в документацията е дадена формулата
разходи за изходни токени x процент попадения. - Redis твърди, че спестяванията могат да достигнат 90%, а попаденията в кеша да бъдат до 15 пъти по-бързи; демонстрационно изпълнение показа 6 пъти по-висока скорост.
- Праговете, TTL, изолирането и наблюдението за грешни съвпадения определят дали семантичният кеш е безопасен.
Разгледайте redis.io/langcache и следвайте примерите за API и SDK. Също така, не се колебайте да ни последвате в Twitter и не забравяйте да се присъедините към нашия ML SubReddit с над 150 хиляди членове и да се абонирате за нашия бюлетин. Чакайте! В Telegram ли сте? Сега можете да се присъедините към нас и в Telegram.
Имате нужда да си партнирате с нас за популяризиране на вашето GitHub хранилище ИЛИ страница в Hugging Face ИЛИ представяне на продукт ИЛИ уебинар и т.н.? Свържете се с нас
Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.