跳到主要内容

Azure AI Search 向量存储节点#

Azure AI Search(原 Azure Cognitive Search)是一项具备向量搜索能力的云搜索服务,适用于 RAG 与语义搜索应用场景。此节点可用于存储、检索及查询向量嵌入及其关联内容与元数据。

认证凭证

该节点的身份验证信息请参阅此处

子节点中的参数解析

在使用表达式处理多项数据时,子节点的运行机制与其他节点存在差异。

多数节点(包括根节点)可接收任意数量的输入项,经处理后输出相应结果。您可通过表达式引用输入项,节点将逐项解析表达式。例如:当输入包含五个name值时,表达式{{ $json.name }}会依次解析每个名称。

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

前置条件#

使用本节点前需准备:

  1. 有效的 Azure 订阅
  2. 已创建的 Azure AI Search 服务
  3. 配置 API 密钥认证(写入操作需管理密钥,只读操作需查询密钥)

具体设置步骤请参阅凭证文档

索引配置#

本节点支持自动创建索引。在自动创建过程中,节点将配置:

  • 根据嵌入模型维度自动设置向量字段
  • 采用 HNSW 算法配合余弦度量实现高效相似性搜索
  • 支持筛选检索的内容字段与元数据字段

您也可通过 Azure 门户预创建索引以实现自定义配置。示例架构:

{
"name": "n8n-vectorstore",
"fields": [
{
"name": "id",
"type": "Edm.String",
"key": true,
"filterable": true
},
{
"name": "content",
"type": "Edm.String",
"searchable": true
},
{
"name": "content_vector",
"type": "Collection(Edm.Single)",
"searchable": true,
"vectorSearchDimensions": 1536,
"vectorSearchProfileName": "n8n-vector-profile"
},
{
"name": "metadata",
"type": "Edm.String",
"filterable": true
}
],
"vectorSearch": {
"profiles": [
{
"name": "n8n-vector-profile",
"algorithm": "n8n-vector-algorithm"
}
],
"algorithms": [
{
"name": "n8n-vector-algorithm",
"kind": "hnsw",
"hnswParameters": {
"metric": "cosine",
"m": 4,
"efConstruction": 400,
"efSearch": 500
}
}
]
}
}

向量维度

vectorSearchDimensions 值必须与您的嵌入模型输出相匹配。

节点使用模式#

作为常规节点插入和检索文档#

直接在工作流中使用该节点来插入或检索文档,无需通过代理。有关示例模式,请参阅此模板(使用 Supabase,但模式相同)。

直接作为工具连接到 AI 代理#

连接到 AI 代理 的工具连接器,将向量存储用作可搜索知识库:

AI 代理(工具连接器)→ Azure AI 搜索向量存储节点

使用检索器获取文档#

向量存储检索器问答链 结合使用,实现检索增强生成:

问答链(检索器)→ 向量存储检索器(向量存储)→ Azure AI 搜索向量存储

请参阅此示例工作流

使用向量存储问答工具#

使用 向量存储问答工具 来总结和回答问题:

AI 代理(工具)→ 向量存储问答工具(向量存储)→ Azure AI 搜索向量存储

请参阅此示例

节点参数#

此向量存储节点有五种模式:获取多个插入文档检索文档(作为链/工具的向量存储)检索文档(作为 AI 代理的工具)更新文档。您选择的模式决定了可以使用节点执行的操作以及可用的输入和输出。

获取多个#

在此模式下,您可以通过提供提示从向量数据库中检索多个文档。提示将被嵌入并用于相似性搜索。节点将返回与提示最相似的文档及其相似性分数。如果您想检索相似文档列表并将其作为附加上下文传递给代理,此模式非常有用。

插入文档#

使用插入文档模式将新文档插入到向量数据库中。

检索文档(作为链/工具的向量存储)#

将检索文档(作为链/工具的向量存储)模式与向量存储检索器一起使用,以从向量数据库检索文档并将其提供给连接到链的检索器。在此模式下,您必须将节点连接到检索器节点或根节点。

检索文档(作为 AI 代理的工具)#

使用检索文档(作为 AI 代理的工具)模式,在回答查询时将向量存储用作工具资源。在制定响应时,当向量存储名称和描述与问题细节匹配时,代理会使用向量存储。

更新文档#

使用更新文档模式按 ID 更新向量数据库中的文档。在 ID 字段中填入要更新的嵌入条目的 ID。

重新排序结果#

启用 重新排序。如果启用此选项,则必须将重新排序节点连接到向量存储。然后,该节点将对查询结果进行重新排序。您可以将此选项与 获取多个检索文档(作为链/工具的向量存储)检索文档(作为 AI 代理的工具) 模式一起使用。

Azure AI 搜索语义重新排序

当您将 语义混合 查询模式与语义配置一起使用时,Azure AI 搜索内置了 语义重新排序 功能。要使用它:

  1. 在"选项"中将 查询模式 设置为 语义混合
  2. 语义配置 设置为您的配置名称(如果未指定,则默认为 semantic-search-config

内置的语义重新排序器使用机器学习模型来提高相关性。您可以在语义重新排序之后链接一个额外的重新排序节点以进行进一步优化。

语义重新排序 仅在您的索引定义了语义配置时可用。

获取多个参数#

  • 端点:您的 Azure AI 搜索端点(格式:https://your-service.search.windows.net
  • 索引名称:要查询的索引
  • 限制:要返回的最大文档数(默认值:4)

插入文档参数#

  • 端点:您的 Azure AI 搜索端点
  • 索引名称:要使用的索引(如果不存在则自动创建)
  • 批处理大小:每批上传到 Azure AI 搜索的文档数量。根据文档大小和服务层级限制进行调整。这仅控制上传批处理——嵌入生成批处理在嵌入节点中配置。

更新文档参数#

  • 端点:您的 Azure AI 搜索端点
  • 索引名称:要更新的索引

检索文档参数(作为链/工具的向量存储)#

  • 端点:您的 Azure AI 搜索端点
  • 索引名称:要查询的索引

检索文档(作为 AI 代理的工具)参数#

  • 名称:向 LLM 显示的工具名称
  • 描述:向 LLM 解释此工具的功能。具体说明以帮助 LLM 选择何时使用此工具。
  • 端点:您的 Azure AI 搜索端点
  • 索引名称:要查询的索引
  • 限制:要检索的最大结果数(例如,10 表示十个最佳匹配项)

节点选项#

选项#

  • 筛选器OData 筛选表达式,用于按文档字段或元数据筛选结果。请参阅下面的筛选器示例。
  • 查询模式:要使用的搜索策略:
  • 向量:仅使用嵌入进行相似性搜索
  • 关键词:使用 BM25 排名进行全文搜索
  • 混合(默认):结合向量和关键词搜索,使用倒数排序融合(RRF)
  • 语义混合:混合搜索,带有 语义重新排序 以提高相关性
  • 语义配置:用于 语义排名 的语义配置名称。如果未指定,则默认为 semantic-search-config。仅当您预先创建了具有自定义语义配置名称的索引时才需要。

查询模式选择

使用 向量 进行语义相似性搜索,使用 关键词 进行精确术语匹配,使用 混合 获得平衡结果,或者在索引中配置了语义搜索以获得最大相关性时使用 语义混合

OData 筛选器示例#

Azure AI 搜索使用 OData 语法 进行筛选。元数据字段使用 metadata/字段名 格式访问。

按文档 ID 筛选:

id eq '3da6491a-f930-4a4e-9471-c05dcd450ba0'

按元数据字段筛选:

metadata/source eq 'user-guide'

复杂 AND 过滤器:

metadata/category eq 'technology' and metadata/author eq 'John'

复杂OR过滤器:

metadata/source eq 'user-guide' or metadata/rating ge 4

数值比较:

metadata/rating ge 4 and metadata/rating lt 10

使用NOT进行字符串匹配:

metadata/category eq 'technology' and metadata/title ne 'Deprecated'

支持的 OData 运算符:

  • 比较运算符:eqnegtgeltle
  • 逻辑运算符:andornot
  • 字符串函数:startswith()endswith()contains()
  • 集合函数:any()all()

筛选器格式

筛选器适用于所有查询模式(向量、关键词、混合、语义混合)和所有操作模式(检索、加载、工具式检索)。

Azure AI 搜索特定功能#

基于 RRF 的混合搜索#

Azure AI 搜索的混合搜索采用 Reciprocal Rank Fusion 技术融合向量与关键词结果,相比单一方法能提供更高的准确率。

语义排序#

语义混合模式通过机器学习模型,基于对查询的语义理解对结果进行重新排序,此功能需要在索引中配置语义设置。

OData 筛选器#

在向量搜索执行前,可使用 OData 语法根据文档字段或元数据进行筛选。当需要特定来源或具备特定属性的结果时,此功能可提升性能与精确度。

HNSW 算法#

Azure AI 搜索采用分层可导航小世界(HNSW)图进行近似最近邻搜索,在可配置的精度/速度权衡下实现大规模快速检索。

故障排除#

索引问题#

索引未找到:请确认索引名称正确(区分大小写)且存在于 Azure AI 搜索服务中。若使用自动创建功能,请检查索引是否成功创建。

向量维度不匹配:确保嵌入模型维度与索引向量字段维度一致。检查索引架构中 vectorSearchDimensions 的设置。

文档插入失败

  • 确认写入权限(需要管理员 API 密钥)
  • 检查文档字段是否匹配索引架构
  • 确保文档中包含必填字段
  • 处理大批量文档时若出现超时,请调整批次大小设置

筛选器问题#

筛选器未生效

  • 验证 OData 语法是否正确
  • 确保元数据字段使用 metadata/ 前缀:metadata/source eq 'value'
  • 确认筛选字段在索引架构中标记为 filterable
  • 先使用简单筛选条件测试(如 id eq 'value'),再尝试复杂表达式

无效 OData 语法

  • 字符串值需使用单引号:metadata/source eq 'value'
  • 使用正确的运算符:eqnegtgeltleandornot
  • 语法细节请参阅 OData 筛选器文档

连接问题#

连接失败

  • 验证端点 URL 格式:https://your-service.search.windows.net
  • 确认 Azure AI 搜索服务正在运行且可访问
  • 检查网络安全组、防火墙规则及私有端点配置
  • 对于 Azure 托管的 n8n,若使用私有端点请验证虚拟网络对等互连或服务端点配置

认证问题#

关于 API 密钥错误等认证故障排除,请参阅凭据文档的故障排除章节

模板与示例#

浏览 Azure AI 搜索向量存储集成模板搜索所有模板

相关资源#

查看 n8n 的 高级 AI 文档。

自托管 AI 入门套件#

初次接触 AI 并使用自托管 n8n?尝试 n8n 的 自托管 AI 入门套件,通过 Ollama、Qdrant 和 PostgreSQL 快速构建概念验证或演示环境。