LLMCache
LLMCache API
SemanticCache
class SemanticCache(name='llmcache', prefix=None, distance_threshold=0.1, ttl=None, vectorizer=HFTextVectorizer(model='sentence-transformers/all-mpnet-base-v2', dims=768, client=SentenceTransformer( (0): Transformer({'max_seq_length': 384, 'do_lower_case': False}) with Transformer model: MPNetModel (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False}) (2): Normalize() )), redis_client=None, redis_url='redis://localhost:6379', connection_args={}, **kwargs)
基类:BaseLLMCache
适用于大型语言模型的语义缓存。
适用于大型语言模型的语义缓存。
- 参数
- name (str , 可选) – 语义缓存搜索索引的名称。默认为“llmcache”。
- prefix (可选 *[*str ] , 可选) - 与语义缓存搜索索引关联的 Redis 密钥的前缀。默认为 None,索引名称将用作键前缀。
- distance_threshold (float , 可选) – 缓存的语义阈值。默认为 0.1。
- ttl (可选 *[*int ] , 可选) – 缓存到 Redis 中记录的生存时间。默认为 None。
- vectorizer (BaseVectorizer , 可选) – 适用于缓存的向量化器。默认为 HFTextVectorizer。
- redis_client (Redis , 可选) – Redis 客户端连接实例。默认为 None。
- redis_url (str , 可选) – Redis URL。默认为“redis://localhost:6379”。
- connection_args (Dict *[*str , Any ] , 可选) - Redis 客户端的连接参数。默认为 None。
- 引发错误
- TypeError – 如果提供了无效的向量化器。
- TypeError – 如果 TTL 值不是整数。
- ValueError – 如果阈值不在 0 到 1 之间。
- ValueError – 如果未提供索引名称
check(prompt=None, vector=None, num_results=1, return_fields=None)
检查语义缓存是否存在与指定的提示或向量相似的结果。
此方法使用矢量相似性搜索缓存,以获取原始文本提示(转换为矢量)或提供的矢量作为输入。它检查语义相似的提示并获取缓存的 LLM 响应。
- 参数
- prompt (可选 *[*str ] , 可选) – 缓存中要搜索的文本提示。
- 矢量(可选 *[*列表 *[*浮点 ] ] , 可选)– 用于在缓存中搜索提示符的矢量表示。
- 结果数量(整数 , 可选)– 要返回的缓存结果数量。默认为 1。
- 返回字段(可选 *[*列表 *[*str ] ] , 可选)– 要包含在每个返回结果中的字段。如果为 None,则默认为缓存条目中所有可用字段。
-
- 返回
- 包含请求的字典列表
- 每个类似缓存响应的返回字段。
- 返回类型: List[Dict[str, Any]]
- 引发错误
- ValueError – 如果既未指定提示符也未指定矢量。
- TypeError – 如果提供时 return_fields 不是列表。
response = cache.check(
prompt="What is the captial city of France?"
)
clear()
清除所有键的缓存,同时保留索引。
- 返回类型:无
delete()
清除所有键的语义缓存并删除底层搜索索引。
- 返回类型:无
deserialize(元数据)
从字符串中反序列化输入。
- 参数: 元数据(str)–
- 返回类型: Dict[str, Any]
hash_input(提示符)
使用 SHA256 对输入进行哈希处理。
- 参数: 提示符(str)–
serialize(元数据)
将输入序列化为字符串。
- 参数: 元数据(Dict *[*str , Any ])–
- 返回类型: str
set_threshold(距离阈值)
设置缓存的语义距离阈值。
- 参数: 距离阈值(浮点)– 缓存的语义距离阈值。
- 引发: ValueError – 如果阈值不在 0 和 1 之间。
- 返回类型:无
set_ttl(ttl=None)
设置缓存中条目的默认 TTL(以秒为单位)。
- 参数: ttl(可选 *[*整数 ] , 可选)– 缓存的可选生存期(以秒为单位)。
- 引发: ValueError – 如果生存期值不是整数。
set_vectorizer(矢量化器)
设置 LLM 缓存的矢量化器。
必须是 BaseVectorizer 的有效子类,并且与架构中定义的矢量字段具有相同的维度。
- 参数: 矢量化器(BaseVectorizer)– 用于矢量化缓存条目的 RedisVL 矢量化器。
- 引发错误
- TypeError – 如果矢量化器类型无效。
- ValueError – 如果矢量维度不匹配。
- 返回类型:无
store(提示符, 响应, 矢量=None, 元数据=None)
将指定的 key-value 对连同元数据一起存储在缓存中。
- 参数
- 提示符(str)– 要缓存的用户提示符。
- 响应(str)– 要缓存的 LLM 响应。
- vector(可选* [*列表* [*float ] ] , 可选)- 要缓存的提示向量。默认为 None,并根据需要生成提示向量。
- metadata(可选* [*字典 ] , 可选)- 与提示和响应一起缓存的可选元数据。默认为 None。
- 返回值:用于添加到语义缓存的项的 Redis 密钥。
- 返回类型: str
- 引发错误
- ValueError - 如果既未指定提示,也未指定向量。
- TypeError - 如果提供的元数据不是字典。
key = cache.store(
prompt="What is the captial city of France?",
response="Paris",
metadata={"city": "Paris", "country": "France"}
)
属性 distance_threshold : float
缓存的语义距离阈值。
- 返回值:语义距离阈值。
- 返回值类型: float
属性 index : SearchIndex
缓存的底层 SearchIndex。
- 返回值:搜索索引。
- 返回值类型: SearchIndex
属性 ttl : int | None
缓存中项的默认 TTL(以秒为单位)。