llama_index 如何实现LLM缓存

bpzcxfmw  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(53)

问题验证

  • 我已在文档和Discord中寻找答案。

问题

我们正在使用一个简单的查询引擎来基于两个文档回答问题。由于重复的可能性很高,像GPTCache( https://github.com/zilliztech/GPTCache )这样的缓存机制将会非常有帮助。然而,在阅读他们的文档时,对llama-index的引用已经过时了,而且llama index的文档中没有任何关于实现缓存的参考。
任何帮助或指向实现此功能的指针都将非常棒!谢谢!

zbdgwd5y

zbdgwd5y1#

要使用LlamaIndex为简单的查询引擎实现GPTCache缓存,您可以使用更新后的LlamaIndex代码中的IngestionCache类。此类支持不同类型的缓存,包括SimpleCacheRedisCacheMongoDBCacheFirestoreCache。以下是如何设置缓存的示例:

from llama_index.core.schema import BaseNode
from llama_index.core.storage.kvstore import SimpleKVStore as SimpleCache
from llama_index.core.ingestion.cache import IngestionCache
from typing import List, Optional

Initialize the cache

cache = IngestionCache(cache=SimpleCache())

Function to put data into the cache

def put_data_into_cache(key: str, nodes: List[BaseNode]):
cache.put(key, nodes)

Function to get data from the cache

def get_data_from_cache(key: str) -> Optional[List[BaseNode]]:
return cache.get(key)

Example usage

key = "example_key"
nodes = [BaseNode()] # Replace with actual nodes

Put data into the cache

put_data_into_cache(key, nodes)

Get data from the cache

cached_nodes = get_data_from_cache(key)
if cached_nodes:
print("Data retrieved from cache")
else:
print("No data found in cache")

此示例演示了如何初始化缓存、将数据放入其中以及从中检索数据。您可以根据需求将SimpleCache替换为其他支持的缓存类型,如RedisCacheMongoDBCacheFirestoreCache。更新后的IngestionCache类还包括清除和持久化缓存的方法,这对于随着时间的推移管理缓存数据非常有用。

  • 要继续与Dosu交谈,请提及@dosu。*

相关问题