天天看點

Langchain之大模型Cache緩存

作者:大狗在海裡

模型即服務,尤其高并發低延遲場景下不能每次都調用LLM。響應時間長占用資源多,最後肯定需要LLM-Cache。Langchain也支援內建Cache,而且品類非常多。

1.InMemoryCache

記憶體性質,大資料緩存記憶體資源比較高

最簡單的memory:就是”硬“緩存更新删除

Langchain之大模型Cache緩存

2.RedisCache

redis的memory:對prompt+llmstring做hash-md5

Langchain之大模型Cache緩存

3.RedisSemanticCache

Redis的STS插件例如RedisSemantic語義檢索

Langchain之大模型Cache緩存

4.SQLAlchemyCache

利用資料庫做Cache,SQLAlchemy支援的資料庫都可以考慮

5.SQLiteCache

測試實驗性質科研,你懂的

6.GPTCache

完整級别解決方案(涵蓋Embedding Model,Cache Storage,Vector Store,Cache Manager[LRU,LFU,FIFO],Similarity Evaluator等),就是那個向量資料庫Milvus營運商Zilliz推出解決方案

Langchain之大模型Cache緩存

簡單使用樣例:

初始化實作

Langchain之大模型Cache緩存

簡單舉例:

#cache選擇mysql

cache_base = CacheBase('mysql',sql_url='mysql+pymysql://root:[email protected]:3306/mysql')

#使用milvus作為vectordb

vector_base = VectorBase('milvus', host='127.0.0.1', port='19530', dimension=hf.dimension)

#data管理器

data_manager = get_data_manager(cache_base, vector_base)

cache.init(

pre_embedding_func=None,#沒有自定義函數可以為空

embedding_func=hf.to_embeddings,

data_manager=data_manager,

similarity_evaluation=SearchDistanceEvaluation(), ##相似性算法評估

)

7.MomentoCache:三方服務key收費,要錢的始終不能幹[捂臉]

介紹這麼多Cache,最後考慮成本開源安全高效可靠:建議還是采用Redis/RedisSemantic或者VectorDB做緩存,然後相似性比對檢索。也可以考慮GPTCache複雜度高且對竟對vectordb産品支援度有限主推自己産品[笑哭]。上述Cache方式繼承BaseCache實作lookup,update,clear抽象方法。

繼續閱讀