RedisConfig#

class langchain_redis.config.RedisConfig[source]#

基础类:BaseModel

Redis向量存储设置的配置类。

此类定义了用于设置和与Redis向量存储交互的配置参数。它使用Pydantic进行数据验证和设置管理。

index_name#

Redis 中索引的名称。默认为生成的 ULID。

Type:

字符串

from_existing#

是否使用现有索引。默认为 False。

Type:

布尔

key_prefix#

Redis 键的前缀。如果未设置,默认为 index_name。

Type:

可选[str]

redis_url#

Redis实例的URL。默认为“redis://localhost:6379”。

Type:

字符串

redis_client#

预先存在的 Redis 客户端实例。

Type:

可选的[Redis]

connection_args#

额外的 Redis 连接参数。

Type:

可选[字典[str, 任意]]

distance_metric#

向量相似度的距离度量。 默认为“COSINE”。

Type:

字符串

indexing_algorithm#

用于索引的算法。默认为“FLAT”。

Type:

字符串

vector_datatype#

向量的数据类型。默认为“FLOAT32”。

Type:

字符串

storage_type#

Redis中的存储类型。默认为“hash”。

Type:

字符串

id_field#

文档ID的字段名称。默认为“id”。

Type:

字符串

content_field#

文档内容的字段名称。默认为“text”。

Type:

字符串

embedding_field#

嵌入向量的字段名称。默认为“embedding”。

Type:

字符串

default_tag_separator#

标签字段的分隔符。默认为“|”。

Type:

字符串

metadata_schema#

元数据字段的模式。

Type:

可选[列表[字典[字符串, 任意]]]

index_schema#

完整的索引模式定义。

Type:

可选的[IndexSchema]

schema_path#

包含索引模式的YAML文件的路径。

Type:

可选[str]

return_keys#

是否在添加文档后返回键。 默认为 False。

Type:

布尔

custom_keys#

文档的自定义键。

Type:

可选[列表[str]]

embedding_dimensions#

嵌入向量的维度。

Type:

可选[int]

示例

from langchain_redis import RedisConfig

config = RedisConfig(
    index_name="my_index",
    redis_url="redis://localhost:6379",
    distance_metric="COSINE",
    embedding_dimensions=1536
)

# Use this config to initialize a RedisVectorStore
vector_store = RedisVectorStore(embeddings=my_embeddings, config=config)

注意

  • 只能指定‘index_schema’、‘schema_path’或‘metadata_schema’中的一个。

  • 如果未提供,‘key_prefix’ 将自动设置为 ‘index_name’。

  • 当‘from_existing’为True时,它会连接到现有的索引,而不是创建一个新的索引。

  • 自定义验证确保不会同时指定不兼容的选项。

通过解析和验证来自关键字参数的输入数据来创建一个新模型。

如果输入数据无法验证以形成有效模型,则引发 [ValidationError][pydantic_core.ValidationError]。

self 被显式地设为仅位置参数,以允许 self 作为字段名称。

param connection_args: Dict[str, Any] | None = {}#
param content_field: str = 'text'#
param custom_keys: List[str] | None = None#
param default_tag_separator: str = '|'#
param distance_metric: str = 'COSINE'#
param embedding_dimensions: int | None = None#
param embedding_field: str = 'embedding'#
param from_existing: bool = False#
param id_field: str = 'id'#
param index_name: str [Optional]#
param index_schema: Annotated[IndexSchema | None, SkipValidation()] = None (alias 'schema')#
param indexing_algorithm: str = 'FLAT'#
param key_prefix: str | None = None#
param metadata_schema: List[Dict[str, Any]] | None [Optional]#
param redis_client: Redis | None = None#
param redis_url: str = 'redis://localhost:6379'#
param return_keys: bool = False#
param schema_path: str | None = None#
param storage_type: str = 'hash'#
param vector_datatype: str = 'FLOAT32'#
classmethod from_existing_index(index_name: str, redis: Redis) RedisConfig[来源]#

从现有的Redis索引创建一个RedisConfig对象。

此类方法基于Redis中现有索引的配置创建一个RedisConfig实例。它对于连接和使用预先存在的Redis向量存储索引非常有用。

Parameters:
  • index_name (str) – Redis中现有索引的名称。

  • redis (Redis) – 一个已连接到Redis服务器的活跃Redis客户端实例,该服务器上存在索引。

Returns:

一个新的RedisConfig实例,配置为匹配现有的

索引。

Return type:

RedisConfig

示例

from redis import Redis
from langchain_redis import RedisConfig

# Assuming an existing Redis connection
redis_client = Redis.from_url("redis://localhost:6379")

config = RedisConfig.from_existing_index(
    index_name="my_existing_index",
    redis_client=redis_client
)

print(config.index_name)  # Output: my_existing_index
print(config.from_existing)  # Output: True

注意

  • 此方法将 'from_existing' 属性设置为 True,表示配置基于现有索引。

  • 该方法不会获取现有索引的完整模式或配置。它只设置连接到索引所需的基本参数。

  • 额外的索引详细信息(如字段配置)不会被检索,如果需要,应单独了解或发现。

  • 当您需要处理或扩展现有的Redis向量存储索引时,此方法特别有用。

  • 确保提供的 Redis 客户端具有访问指定索引的必要权限。

  • 如果索引不存在,此方法仍将创建一个配置,但在创建索引之前,使用此配置的操作可能会失败。

Raises:
  • ValueError – 如果 index_name 为空或 None。

  • ConnectionError – 如果使用提供的客户端连接Redis时出现问题。

Parameters:
  • index_name (str)

  • redis (Redis)

Return type:

RedisConfig

classmethod from_kwargs(**kwargs: Any) RedisConfig[source]#
Create a RedisConfig object with default values,

被提供的kwargs覆盖。

此类方法允许灵活创建 RedisConfig 对象, 在未指定的情况下使用默认值,并使用提供的任何关键字参数进行覆盖。

Parameters:

**kwargs (Any) –

与RedisConfig属性匹配的关键字参数。这些将

覆盖默认值。

常见的kwargs包括: - index_name (str): Redis中索引的名称。 - redis_url (str): Redis实例的URL。 - distance_metric (str): 向量相似度的距离度量。 - indexing_algorithm (str): 用于索引的算法。 - vector_datatype (str): 向量的数据类型。 - embedding_dimensions (int): 嵌入向量的维度。

Returns:

应用设置后的RedisConfig新实例。

Return type:

RedisConfig

示例

from langchain_redis import RedisConfig

config = RedisConfig.from_kwargs(
    index_name="my_custom_index",
    redis_url="redis://custom-host:6379",
    distance_metric="COSINE",
    embedding_dimensions=768
)

print(config.index_name)  # Output: my_custom_index
print(config.distance_metric)  # Output: COSINE

注意

  • 此方法首先将所有属性设置为其默认值,然后使用提供的kwargs覆盖它们。

  • 如果提供了‘schema’参数,它将被设置为配置中的‘index_schema’。

  • 当您希望创建一个主要使用默认值但需要自定义一些特定属性的配置时,此方法特别有用。

  • RedisConfig 的任何属性都可以通过 kwargs 设置,提供配置的完全灵活性。

classmethod from_schema(schema: IndexSchema, **kwargs: Any) RedisConfig[来源]#

从IndexSchema创建一个RedisConfig对象。

此类方法使用提供的IndexSchema创建一个RedisConfig实例, 该实例定义了Redis索引的结构。

Parameters:
  • schema (IndexSchema) – 一个定义Redis索引结构的IndexSchema对象。

  • **kwargs

    额外的关键字参数,用于覆盖或补充

    从模式派生的设置。

    常见的 kwargs 包括: - redis_url (str): Redis 实例的 URL。 - distance_metric (str): 向量相似度的距离度量。 - embedding_dimensions (int): 嵌入向量的维度。

Returns:

基于提供的配置一个新的RedisConfig实例

schema和kwargs。

Return type:

RedisConfig

示例

from redisvl.schema import IndexSchema
from langchain_redis import RedisConfig

schema = IndexSchema.from_dict({
    "index": {"name": "my_index", "storage_type": "hash"},
    "fields": [
        {"name": "text", "type": "text"},
        {
            "name": "embedding",
            "type": "vector",
            "attrs": {"dims": 1536, "distance_metric": "cosine"}
        }
    ]
})

config = RedisConfig.from_schema(
    schema,
    redis_url="redis://localhost:6379"
)

print(config.index_name)  # Output: my_index
print(config.storage_type)  # Output: hash

注意

  • 该方法从模式中提取索引名称、键前缀和存储类型。

  • 如果模式指定了一个向量字段,则使用其属性(如维度和距离度量)。

  • 额外的 kwargs 可以覆盖从 schema 派生的设置。

  • 当您有一个预定义的索引结构并希望创建一个匹配的配置时,此方法非常有用。

  • 生成的配置可用于确保 RedisVectorStore 与现有索引结构匹配。

classmethod from_yaml(schema_path: str, **kwargs: Any) RedisConfig[来源]#

从包含索引模式的YAML文件创建一个RedisConfig对象。

此类方法使用定义Redis索引结构的YAML文件创建RedisConfig实例。

Parameters:
  • schema_path (str) – 包含索引模式定义的YAML文件的路径。

  • **kwargs

    额外的关键字参数,用于覆盖或补充

    从模式派生的设置。

    常见的 kwargs 包括: - redis_url (str): Redis 实例的 URL。 - distance_metric (str): 向量相似度的距离度量。 - embedding_dimensions (int): 嵌入向量的维度。

Returns:

基于YAML配置的RedisConfig新实例

模式和kwargs。

Return type:

RedisConfig

示例

from langchain_redis import RedisConfig

# Assuming 'index_schema.yaml' contains a valid index schema
config = RedisConfig.from_yaml(
    schema_path="path/to/index_schema.yaml",
    redis_url="redis://localhost:6379"
)

print(config.index_name)  # Output: Name defined in YAML
print(config.storage_type)  # Output: Storage type defined in YAML

注意

  • YAML 文件应包含与 RedisVL 兼容的有效索引模式定义。

  • 此方法内部使用 IndexSchema.from_yaml() 来解析 YAML 文件。

  • 从YAML模式派生的设置可以通过额外的kwargs进行覆盖。

  • 当索引结构在YAML文件中外部定义时,此方法特别有用。

  • 确保YAML文件格式正确,并且在给定路径下可访问。

  • 读取或解析YAML文件时的任何错误都将作为异常传播。

Raises:
  • FileNotFoundError – 如果指定的YAML文件不存在。

  • YAMLError – 如果解析YAML文件时出现问题。

  • ValueError – 如果YAML内容不是有效的索引模式。

Parameters:
  • schema_path (str)

  • kwargs (Any)

Return type:

RedisConfig

redis() Redis[source]#
Return type:

Redis

to_index_schema() IndexSchema[source]#

将RedisConfig转换为IndexSchema。

此方法基于当前配置创建一个IndexSchema对象。 它对于生成可用于创建或更新Redis索引的模式非常有用。

Returns:

一个表示当前配置的IndexSchema对象。

Return type:

索引模式

示例

from langchain_redis import RedisConfig

config = RedisConfig(
    index_name="my_index",
    embedding_dimensions=1536,
    distance_metric="COSINE",
    metadata_schema=[
        {"name": "author", "type": "text"},
        {"name": "year", "type": "numeric"}
    ]
)

schema = config.to_index_schema()
print(schema.index.name)
# Output: my_index
print(len(schema.fields))
# Output: 4 (id, content, embedding, author, year)

注意

  • 如果已经设置了index_schema,它将直接返回。

  • 如果设置了schema_path,将从YAML文件中加载模式。

  • 否则,将根据当前配置创建一个新的 IndexSchema。

  • 生成的模式包括id、内容和嵌入向量的字段,以及metadata_schema中指定的任何其他字段。

  • 嵌入字段配置了指定的维度、距离度量和其他相关属性。

  • 当您需要创建新索引或验证现有索引的结构时,此方法特别有用。

  • 生成的模式可以用于需要IndexSchema的RedisVL操作。

Raises:

ValueError – 如果缺少必要的配置元素(如embedding_dimensions)。

Return type:

IndexSchema

classmethod with_metadata_schema(metadata_schema: List[Dict[str, Any]], **kwargs: Any) RedisConfig[source]#

创建一个具有指定元数据模式的RedisConfig对象。

此类方法使用提供的元数据模式创建一个RedisConfig实例,该模式定义了Redis索引中附加元数据字段的结构。

Parameters:
  • metadata_schema (List[Dict[str, Any]]) – 定义元数据字段的字典列表。每个字典应至少包含‘name’和‘type’键。

  • **kwargs

    用于配置 RedisConfig 的额外关键字参数

    实例。

    常见的 kwargs 包括: - index_name (str): Redis 中索引的名称。 - redis_url (str): Redis 实例的 URL。 - distance_metric (str): 向量相似度的距离度量。 - embedding_dimensions (int): 嵌入向量的维度。

Returns:

使用指定的配置元数据模式配置的RedisConfig新实例

元数据模式。

Return type:

RedisConfig

示例

from langchain_redis import RedisConfig

metadata_schema = [
    {"name": "author", "type": "text"},
    {"name": "publication_date", "type": "numeric"},
    {"name": "tags", "type": "tag", "separator": ","}
]

config = RedisConfig.with_metadata_schema(
    metadata_schema,
    index_name="book_index",
    redis_url="redis://localhost:6379",
    embedding_dimensions=1536
)

print(config.metadata_schema)  # Output: The metadata schema list
print(config.index_name)  # Output: book_index

注意

  • metadata_schema 定义了超出默认内容和嵌入字段的额外字段。

  • 常见的元数据字段类型包括‘text’、‘numeric’和‘tag’。

  • 对于‘tag’字段,您可以使用‘separator’键指定自定义分隔符。

  • 当您需要对特定的元数据属性进行索引和搜索时,此方法非常有用。

  • 生成的配置确保 RedisVectorStore 将使用指定的元数据字段创建索引。

  • 确保元数据模式与您计划与文档一起存储的实际元数据一致。

  • 此方法仅设置metadata_schema;其他配置应通过kwargs提供。

Raises:

ValueError – 如果metadata_schema不是字典列表或缺少必需的键。

Parameters:
  • metadata_schema (List[Dict[str, Any]])

  • kwargs (Any)

Return type:

RedisConfig