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(以秒为单位)。

RATE THIS PAGE
Back to top ↑