跳到主要内容

Redis Vector Store(Redis 向量存储)

使用 Redis Vector Store 节点,将 Redis 数据库作为向量存储1进行交互。可向向量数据库插入文档、从中获取文档、通过连接到链2的检索器检索文档,或直接连接到智能体3作为工具4使用。

本页列出了 Redis Vector Store 节点的参数,并提供更多资源的链接。

信息

凭据

此节点的身份验证信息,请参阅 Redis 凭据文档。

信息

子节点中的参数解析

使用表达式处理多个数据项时,子节点的行为与其他节点不同。

多数节点,包括根节点,可以接收任意数量的输入数据项,处理后输出结果。你可以用表达式引用输入数据项,节点会依次对每个数据项解析表达式。例如,输入包含五个 name 值时,表达式 {{ $json.name }} 会依次解析为每个名称。

在子节点中,表达式始终解析为第一个数据项。例如,输入包含五个 name 值时,表达式 {{ $json.name }} 始终解析为第一个名称。

信息

功能可用性

Redis 查询过滤器和 Metadata Schema(元数据架构)选项从 Redis Vector Store 节点版本 1.4 起可用。更早的节点版本,请参阅 Metadata Filter(元数据过滤器)。

现有 Redis Vector Store 节点会保留其节点版本,原有索引仍可使用。如需使用节点版本 1.4,请添加新的 Redis Vector Store 节点并使用新索引,然后重新导入文档。请勿将节点版本 1.4 的节点指向早期节点版本创建的索引,否则元数据会缺失,过滤器将返回错误结果。

前置条件 ​

使用此节点前,需要一个启用了 Redis Query Engine 的 Redis 数据库。可使用以下任一选项:

  • Redis Open Source(v8.0 及更高版本):默认包含 Redis Query Engine
  • Redis Cloud:全托管服务
  • Redis Software:自行管理的部署
信息

如果没有索引,将创建新索引。

只有需要自定义索引架构或复用现有索引时,才需要提前创建索引。否则可跳过此步骤,让节点根据你指定的选项创建新索引。

节点使用模式 ​

可按以下方式使用 Redis Vector Store 节点:

作为普通节点插入和检索文档 ​

可将 Redis Vector Store 用作普通节点,插入或获取文档。此模式将 Redis Vector Store 放在常规连接流程中,无需使用智能体。

示例请参阅此模板,其中将语义缓存存储在 Redis 中,并在工作流开头使用 Redis Vector Store 节点检索。

作为工具直接连接到 AI 智能体 ​

可将 Redis Vector Store 节点直接连接到 AI 智能体的工具4连接器,让智能体在回答查询时将向量存储用作资源。

此时连接方式为:AI Agent(工具连接器)→ Redis Vector Store 节点。

使用检索器获取文档 ​

可将 Vector Store Retriever 节点与 Redis Vector Store 节点配合使用,从 Redis Vector Store 节点获取文档。这通常与 Question and Answer Chain 节点配合,从向量存储获取与给定聊天输入匹配的文档。

连接流程示例如下(链接示例使用 Pinecone,但模式相同):Question and Answer Chain(Retriever 连接器)→ Vector Store Retriever(Vector Store 连接器)→ Redis Vector Store。

使用 Vector Store Question Answer Tool 回答问题 ​

另一种模式使用 Vector Store Question Answer Tool,汇总 Redis Vector Store 节点的结果并回答问题。此模式通过专门用于汇总向量存储数据的工具工作,无需将 Redis Vector Store 直接作为工具连接。

此模板展示了如何将 Vector Store Question Answer Tool 与 Redis Vector Store 节点配合使用。此时的连接流程为:AI Agent(工具连接器)→ Vector Store Question Answer Tool(Vector Store 连接器)→ Redis Vector Store。

节点参数 ​

此向量存储节点有四种模式:Get Many(获取多条)、Insert Documents(插入文档)、Retrieve Documents (As Vector Store for Chain/Tool)(检索文档,作为链或工具的向量存储)及 Retrieve Documents (As Tool for AI Agent)(检索文档,作为 AI 智能体工具)。所选模式决定可执行的操作,以及可用的输入和输出。

Rerank Results(结果重排序) ​

启用重排序。开启此选项后,必须将 Reranker Cohere(Cohere 重排序器)等重排序节点连接到向量存储,由其重新排列查询结果。此选项可用于 Get Many、Retrieve Documents (As Vector Store for Chain/Tool) 和 Retrieve Documents (As Tool for AI Agent) 模式。

Get Many(获取多条)参数 ​

  • Redis Index(Redis 索引):输入要使用的 Redis 向量搜索索引名称,也可从列表中选择现有索引。
  • Prompt(提示词):输入搜索查询。
  • Limit(上限):输入从向量存储检索的结果数量。例如,设为 10 可获取最匹配的十条结果。

此操作模式包含 Metadata Filter(元数据过滤器)节点选项。从节点版本 1.4 起,还包含 Metadata Schema(元数据架构)节点选项。

Insert Documents(插入文档)参数 ​

  • Redis Index(Redis 索引):输入要使用的 Redis 向量搜索索引名称,也可从列表中选择现有索引。

从节点版本 1.4 起,此操作模式包含 Metadata Schema(元数据架构)节点选项。

Retrieve Documents(作为链或工具的向量存储)参数 ​

  • Redis Index(Redis 索引):输入要使用的 Redis 向量搜索索引名称,也可从列表中选择现有索引。

此操作模式包含 Metadata Filter(元数据过滤器)节点选项。从节点版本 1.4 起,还包含 Metadata Schema(元数据架构)节点选项。

Retrieve Documents(作为 AI 智能体的工具)参数 ​

  • Name(名称):向量存储的名称。
  • Description(描述):向 LLM 说明此工具的用途。清晰、具体的描述有助于 LLM 更经常地生成预期结果。
  • Redis Index(Redis 索引):输入要使用的 Redis 向量搜索索引名称,也可从列表中选择现有索引。
  • Limit(上限):输入从向量存储检索的结果数量。例如,设为 10 可获取最匹配的十条结果。

此操作模式包含 Metadata Filter(元数据过滤器)节点选项。从节点版本 1.4 起,还包含 Metadata Schema(元数据架构)节点选项。

Include Metadata(包含元数据) ​

是否包含文档元数据。

可与 Get Many(获取多条)和 Retrieve Documents(作为 AI 智能体的工具)模式配合使用。

节点选项 ​

Metadata Filter(元数据过滤器) ​

Metadata Filter(元数据过滤器)选项将结果限定为元数据匹配过滤器的文档,适用于 Get Many(获取多条)、Retrieve Documents(作为链或工具的向量存储)和 Retrieve Documents(作为 AI 智能体的工具)操作模式。过滤器语法取决于节点版本。

插入数据时,由文档加载器设置元数据。加载文档的更多信息,请参阅 Default Data Loader。

节点版本 1.4 中的 Redis 查询过滤器 ​

从节点版本 1.4 起,Metadata Filter(元数据过滤器)接受 Redis 查询表达式。可对标签、数值、文本和地理位置字段进行过滤,并用 AND 和 OR 逻辑组合条件。过滤器仅对索引中以匹配类型存储的字段有效。字段类型设置方法,请参阅 Metadata Schema(元数据架构)。

过滤类型示例匹配文档的条件
标签@category:{electronics}category 为 electronics
多个标签@category:{electronics|books}category 为 electronics 或 books
数值范围@price:[0 100]price 在 0 到 100 之间
组合@category:{electronics} @price:[0 100]两个条件都匹配
文本@description:laptopdescription 包含单词 laptop

完整语法,请参阅 LangChain Redis Vector Store 高级功能文档和 Redis Query Engine 文档。

节点版本 1.3 及更早版本中以逗号分隔的过滤器 ​

在节点版本 1.3 及更早版本中,Metadata Filter(元数据过滤器)接受以逗号分隔的词列表,例如 Item1,Item2,Item3。节点执行 OR 查询,只要至少一个词匹配,文档即匹配。

Metadata Schema(元数据架构) ​

Metadata Schema(元数据架构)选项设置索引中各个元数据字段的类型。从节点版本 1.4 起,适用于 Insert Documents(插入文档)、Get Many(获取多条)、Retrieve Documents(作为链或工具的向量存储)和 Retrieve Documents(作为 AI 智能体的工具)操作模式。

输入 JSON 数组,每个元数据字段对应一个对象。每个对象必须包含 name 和 type,还可包含 options 对象:

[
{"name": "category", "type": "tag"},
{"name": "price", "type": "numeric", "options": {"sortable": true}},
{"name": "description", "type": "text"},
{"name": "location", "type": "geo"}
]

如果 JSON 无效、字段缺少名称或类型未知,节点将报错停止,索引保持不变。

类型用途过滤器示例
tag精确匹配类别、标签和状态值@category:{electronics}
text对描述和内容进行全文搜索@description:laptop
numeric价格、分数和日期范围(日期以 Unix 时间戳存储)@price:[0 100]
geo地理位置,以 "<longitude>,<latitude>" 格式存储@location:[-73.98 40.75 5 km]
选项字段类型描述
sortablenumeric、text允许 Redis 按该字段对结果排序。默认值:false。
separatortag同一个值中分隔多个标签的字符。默认值:,。
caseSensitivetag区分大小写匹配标签。默认值:false。
weighttextRedis 对文本匹配评分时,该字段的权重。默认值:1.0。
noStemtext关闭词干提取,使 laptops 不匹配 laptop。默认值:false。
noindex所有类型存储字段但不为其建立索引,因此无法按此字段过滤。默认值:false。

如果将 Metadata Schema(元数据架构)留空,节点会根据插入的所有文档推断各字段的类型:

元数据值推断类型
数值或日期numeric
数组tag
格式为 "<longitude>,<latitude>" 的字符串geo
其他字符串text

普通字符串字段会成为 text 类型,因此 @category:{electronics} 等标签过滤器无法匹配。要对字符串字段使用标签过滤器,请在 Metadata Schema(元数据架构)中将该字段声明为 tag。

更多详情,请参阅 LangChain Redis Vector Store 文档。

Redis 配置选项 ​

适用于所有操作模式:

  • Metadata Key(元数据键):输入 Redis 哈希中元数据字段的键(默认值:metadata)。
  • Key Prefix(键前缀):输入存储文档使用的键前缀(默认值:doc:)。
  • Content Key(内容键):输入 Redis 哈希中内容字段的键(默认值:content)。
  • Embedding Key(嵌入键):输入 Redis 哈希中嵌入字段的键(默认值:embedding)。

插入选项 ​

适用于 Insert Documents(插入文档)操作模式:

  • Overwrite Documents(覆盖文档):开启时覆盖现有文档,关闭时不覆盖。此操作还会删除索引。
  • Time-to-Live(存活时间):输入文档的存活时间,单位为秒。不会使索引过期。

模板与示例 ​

浏览 Redis Vector Store(Redis 向量存储) 集成模板,或搜索所有模板

相关资源 ​

请参阅:

查看 n8n 的高级 AI 文档。

自行托管 AI 入门套件 ​

刚开始使用 AI 和自行托管的 n8n?可试用 n8n 的自行托管 AI 入门套件,通过 Ollama、Qdrant 和 PostgreSQL 搭建概念验证或演示环境。

Footnotes​

  1. 向量存储或向量数据库用于存储信息的数学表示。将其与嵌入模型和检索器配合使用,可创建供 AI 在回答问题时访问的数据库。 ↩

  2. AI 链通过对组件的一系列调用,让你与大语言模型(LLM)及其他资源交互。n8n 中的 AI 链不使用持久记忆,因此不能通过它引用先前的上下文(此用途请使用 AI 智能体)。 ↩

  3. AI 智能体是能够响应请求、作出决策并为用户执行现实任务的人工智能系统。它们使用大语言模型(LLM)理解用户输入,利用可用的信息和资源,决定如何最好地处理请求。 ↩

  4. 在 AI 场景中,工具是附加资源,AI 可在响应请求时调用它获取特定信息或功能。AI 模型可以通过工具与外部系统交互,或完成具体、专门的任务。 ↩ ↩2

本文为社区中文翻译。查看对应英文原文