Azure AI Search 向量存储节点#
Azure AI Search(原 Azure Cognitive Search)是一项具备向量搜索能力的云搜索服务,适用于 RAG 与语义搜索应用场景。此节点可用于存储、检索及查询向量嵌入及其关联内容与元数据。
认证凭证
该节点的身份验证信息请参阅此处。
子节点中的参数解析
在使用表达式处理多项数据时,子节点的运行机制与其他节点存在差异。
多数节点(包括根节点)可接收任意数量的输入项,经处理后输出相应结果。您可通过表达式引用输入项,节点将逐项解析表达式。例如:当输入包含五个name值时,表达式{{ $json.name }}会依次解析每个名称。
在子节点中,表达式始终仅解析首项数据。例如:当输入包含五个name值时,表达式{{ $json.name }}将固定解析第一个名称。
前置条件#
使用 本节点前需准备:
- 有效的 Azure 订阅
- 已创建的 Azure AI Search 服务
- 配置 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 搜索内置了 语义重新排序 功能。要使用它:
- 在"选项"中将 查询模式 设置为 语义混合
- 将 语义配置 设置为您的配置名称(如果未指定,则默认为
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 运算符:
- 比较运算符:
eq、ne、gt、ge、lt、le - 逻辑运算符:
and、or、not - 字符串函数:
startswith()、endswith()、contains() - 集合函数:
any()、all()
筛选器格式
筛选器适用于所有查询模式(向量、关键词、混合、语义混合)和所有操作模式(检索、加载、工具式检索)。