langchain.embeddings.cache.CacheBackedEmbeddings

class langchain.embeddings.cache.CacheBackedEmbeddings(underlying_embeddings: Embeddings, document_embedding_store: BaseStore[str, List[float]], *, batch_size: Optional[int] = None, query_embedding_store: Optional[BaseStore[str, List[float]]] = None)[source]

用于缓存嵌入模型结果的接口。

该接口允许与实现接受类型为str的键和浮点数列表值的抽象存储接口一起使用。

如果需要,接口可以扩展以接受其他值序列化器和反序列化器的实现,以及键编码器。

请注意,默认情况下仅缓存文档嵌入。要缓存查询嵌入,也可以将query_embedding_store传递给构造函数。

示例:

```python from langchain.embeddings import CacheBackedEmbeddings from langchain.storage import LocalFileStore from langchain_community.embeddings import OpenAIEmbeddings

store = LocalFileStore(‘./my_cache’)

underlying_embedder = OpenAIEmbeddings() embedder = CacheBackedEmbeddings.from_bytes_store(

underlying_embedder, store, namespace=underlying_embedder.model

)

# 嵌入被计算并缓存 embeddings = embedder.embed_documents([“hello”, “goodbye”])

# 从缓存中检索嵌入,不进行计算 embeddings = embedder.embed_documents([“hello”, “goodbye”]) ```

初始化嵌入器。

参数:

underlying_embeddings: 用于计算嵌入的嵌入器。 document_embedding_store: 用于缓存文档嵌入的存储。 batch_size: 在存储更新之间嵌入的文档数量。 query_embedding_store: 用于缓存查询嵌入的存储。

如果为None,则不缓存查询嵌入。

Methods

__init__(underlying_embeddings, ...[, ...])

初始化嵌入器。

aembed_documents(texts)

嵌入文本列表。

aembed_query(text)

嵌入查询文本。

embed_documents(texts)

嵌入文本列表。

embed_query(text)

嵌入查询文本。

from_bytes_store(underlying_embeddings, ...)

添加必要的序列化和编码到存储的入口。

Parameters
  • underlying_embeddings (Embeddings) –

  • document_embedding_store (BaseStore[str, List[float]]) –

  • batch_size (Optional[int]) –

  • query_embedding_store (Optional[BaseStore[str, List[float]]]) –

Return type

None

__init__(underlying_embeddings: Embeddings, document_embedding_store: BaseStore[str, List[float]], *, batch_size: Optional[int] = None, query_embedding_store: Optional[BaseStore[str, List[float]]] = None) None[source]

初始化嵌入器。

参数:

underlying_embeddings: 用于计算嵌入的嵌入器。 document_embedding_store: 用于缓存文档嵌入的存储。 batch_size: 在存储更新之间嵌入的文档数量。 query_embedding_store: 用于缓存查询嵌入的存储。

如果为None,则不缓存查询嵌入。

Parameters
  • underlying_embeddings (Embeddings) –

  • document_embedding_store (BaseStore[str, List[float]]) –

  • batch_size (Optional[int]) –

  • query_embedding_store (Optional[BaseStore[str, List[float]]]) –

Return type

None

async aembed_documents(texts: List[str]) List[List[float]][source]

嵌入文本列表。

该方法首先检查嵌入缓存。 如果找不到嵌入,该方法将使用底层的嵌入器来嵌入文档,并将结果存储在缓存中。

参数:

texts:要嵌入的文本列表。

返回:

给定文本的嵌入列表。

Parameters

texts (List[str]) –

Return type

List[List[float]]

async aembed_query(text: str) List[float][source]

嵌入查询文本。

默认情况下,此方法不会缓存查询。要启用缓存,请在初始化嵌入器时将`cache_query`参数设置为`True`。

参数:

text:要嵌入的文本。

返回:

给定文本的嵌入。

Parameters

text (str) –

Return type

List[float]

embed_documents(texts: List[str]) List[List[float]][source]

嵌入文本列表。

该方法首先检查嵌入缓存。 如果找不到嵌入,该方法将使用底层的嵌入器来嵌入文档,并将结果存储在缓存中。

参数:

texts:要嵌入的文本列表。

返回:

给定文本的嵌入列表。

Parameters

texts (List[str]) –

Return type

List[List[float]]

embed_query(text: str) List[float][source]

嵌入查询文本。

默认情况下,此方法不会缓存查询。要启用缓存,请在初始化嵌入器时将`cache_query`参数设置为`True`。

参数:

text:要嵌入的文本。

返回:

给定文本的嵌入。

Parameters

text (str) –

Return type

List[float]

classmethod from_bytes_store(underlying_embeddings: Embeddings, document_embedding_cache: BaseStore[str, bytes], *, namespace: str = '', batch_size: Optional[int] = None, query_embedding_cache: Union[bool, BaseStore[str, bytes]] = False) CacheBackedEmbeddings[source]

添加必要的序列化和编码到存储的入口。

参数:

underlying_embeddings: 用于嵌入的嵌入器。 document_embedding_cache: 用于存储文档嵌入的缓存。 *, namespace: 用于文档缓存的命名空间。

此命名空间用于避免与其他缓存发生冲突。 例如,将其设置为所使用的嵌入模型的名称。

batch_size: 在存储更新之间要嵌入的文档数量。 query_embedding_cache: 用于存储查询嵌入的缓存。

True 表示使用与文档嵌入相同的缓存。 False 表示不缓存查询嵌入。

Parameters
  • underlying_embeddings (Embeddings) –

  • document_embedding_cache (BaseStore[str, bytes]) –

  • namespace (str) –

  • batch_size (Optional[int]) –

  • query_embedding_cache (Union[bool, BaseStore[str, bytes]]) –

Return type

CacheBackedEmbeddings

Examples using CacheBackedEmbeddings