GPTCache, LangChain, сильный альянс
Введение в GPTCache
ChatGPT и другие большие языковые модели (LLM) обладают невероятной универсальностью, которую можно использовать для разработки широкого спектра приложений. Однако по мере роста популярности приложений, разработанных с использованием LLM, и увеличения уровня трафика стоимость, связанная с вызовами LLM API, может стать непомерно высокой. Кроме того, сервисы LLM могут демонстрировать медленное время отклика при обработке больших объемов запросов.
Чтобы решить эту задачу, мы создали проект GPTCache, предназначенный для создания семантического кэша для хранения ответов LLM.
Введение в LangChain
Большие языковые модели (LLM) становятся преобразующей технологией, которая позволяет разработчикам создавать приложения, ранее невозможные. Однако опора исключительно на одну LLM часто затрудняет создание действительно мощного приложения. Настоящая сила заключается в их сочетании с другими вычислительными источниками или источниками знаний. Поэтому библиотека LangChain направлена на помощь в разработке таких типов приложений.
Текущее состояние LangChain Cache
До интеграции GPTCache кэш LangChain основывался на сопоставлении строк. При таком подходе сопоставления строк последующий запрос может получить соответствующие данные из кэша, когда два запроса имеют идентичные строки. Реализация включает Memory Cache, SQLite Cache и Redis Cache.
Использование примерно следующее:
import langchain
from langchain.cache import InMemoryCache
langchain.llm_cache = InMemoryCache()
llm = OpenAI(model_name="text-davinci-002", n=2, best_of=2)
// CPU times: user 14.2 ms, sys: 4.9 ms, total: 19.1 ms
// Wall time: 1.1 s
llm("Tell me a joke")
// CPU times: user 162 µs, sys: 7 µs, total: 169 µs
// Wall time: 175 µs
llm("Tell me a joke")
Анализ LangChain Cache
С точки зрения времени выполнения очевидно, что если запрос попадает в кэш, это значительно сократит время отклика. В то же время текущая стоимость использования LLM относительно высока. Использование онлайн-сервисов, таких как OpenAI и Cohere, обычно влечет за собой оплату через токены или самостоятельное развертывание соответствующей модели LLM, при этом время однократного вывода зависит от количества компьютерных ресурсов, включая CPU, память, GPU и т. д. В то же время, если несколько запросов обрабатываются одновременно, предъявляются более высокие требования к вычислительным ресурсам. Если запросы многократно попадают в кэш, это может снизить нагрузку на компьютерные ресурсы и предоставить больше вычислительных ресурсов другим задачам.
Условие попадания LangChain в кэш заключается в том, что два вопроса должны быть идентичными. К сожалению, при фактическом использовании по-прежнему сложно добиться попадания в кэш, и существует большой потенциал для повышения коэффициента использования кэша.
Интеграция GPTCache
Интеграция GPTCache значительно улучшит функциональность модуля кэша LangChain, повысит коэффициент попадания в кэш и, таким образом, снизит затраты на использование LLM и время отклика. Это связано с тем, что GPTCache сначала выполняет операции embedding над входными данными для получения вектора, а затем выполняет поиск векторного приближения в хранилище кэша. После получения результатов поиска он выполняет оценку сходства и возвращает результат при достижении установленного порога. Настройка порога может изменить точность результатов его нечеткого поиска.
Пример использования GPTCache для поиска по сходству в LangChain:
from gptcache import Cache
from gptcache.adapter.api import init_similar_cache
from langchain.cache import GPTCache
import hashlib
def get_hashed_name(name):
return hashlib.sha256(name.encode()).hexdigest()
def init_gptcache(cache_obj: Cache, llm: str):
hashed_llm = get_hashed_name(llm)
init_similar_cache(cache_obj=cache_obj, data_dir=f"similar_cache_{hashed_llm}")
langchain.llm_cache = GPTCache(init_gptcache)
# В первый раз этого ещё нет в кэше, поэтому это должно занять больше времени
# CPU times: user 1.42 s, sys: 279 ms, total: 1.7 s
# Wall time: 8.44 s
llm("Tell me a joke")
# Это точное совпадение, поэтому он находит это в кэше
# CPU times: user 866 ms, sys: 20 ms, total: 886 ms
# Wall time: 226 ms
llm("Tell me a joke")
# Это не точное совпадение, но семантически находится в пределах расстояния, поэтому происходит попадание!
# CPU times: user 853 ms, sys: 14.8 ms, total: 868 ms
# Wall time: 224 ms
llm("Tell me joke")
Мы продолжаем развивать функциональность GPT-Cache, и если у вас будет возможность попробовать его, дайте нам знать, что вы думаете. У нас также есть несколько отличных ресурсов, с которыми вам стоит ознакомиться!
Ссылки:
Читать далее

Zilliz Cloud Now Available in Azure North Europe: Bringing AI-Powered Vector Search Closer to European Customers
The addition of the Azure North Europe (Ireland) region further expands our global footprint to better serve our European customers.

The Real Bottlenecks in Autonomous Driving — And How AI Infrastructure Can Solve Them
Autonomous driving faces a data bottleneck. Learn how AI-native vector databases like Zilliz solve scale, cost, and insight challenges across AV pipelines.

What Exactly Are AI Agents? Why OpenAI and LangChain Are Fighting Over Their Definition?
AI agents are software programs powered by AI that can perceive their environment, make decisions, and take actions to achieve a goal—often autonomously.



