
n8n工作流:计算向量集合的质心
概述
此工作流接收JSON格式的向量数组,验证所有向量是否具有相同的维度,并计算质心。它被设计为可在不同项目中重复使用。
工作流结构
节点及其功能:
接收向量(Webhook):接受包含向量数组的GET请求,参数为vectors。
预期输入:JSON格式的vectors参数。
示例请求:/webhook/centroid?vectors=[[2,3,4],[4,5,6],[6,7,8]]
输出:将接收到的数据传递给下一个节点。
提取和解析向量(Set节点):将输入字符串转换为适当的JSON数组进行处理。
确保vectors是有效的数组。
如果参数缺失,可能会生成错误。
预期输出示例:
{
“vectors”: [[2,3,4],[4,5,6],[6,7,8]]
}
验证和计算质心(Code节点):验证向量维度并计算质心。
验证:确保所有向量具有相同数量的维度。
计算:对每个维度求平均值以确定质心。
如果验证失败:返回指示维度不一致的错误消息。
成功输出示例:
{
“centroid”: [4,5,6]
}
错误输出示例:
{
“error”: “Vectors have inconsistent dimensions.”
}
返回质心响应(Respond to Webhook节点):将最终响应发送回客户端。
如果计算成功,则返回质心。
如果发生错误,则返回描述性错误消息。
示例响应:
{
“centroid”: [4, 5, 6]
}
输入
JSON向量数组,其中每个向量都是数值数组。
示例输入
{
“vectors”: [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
}
设置指南
在n8n中创建新工作流。
添加Webhook节点(接收向量)以接收JSON输入。
添加Set节点(提取和解析向量)以提取和转换数据。
添加Code节点(验证和计算质心)以:
验证维度。
计算质心。
添加Respond to Webhook节点(返回质心响应)以返回结果。
Function节点脚本示例
const input = items[0].json;
const vectors = input.vectors;
if (!Array.isArray(vectors) || vectors.length === 0) {
return [{ json: { error: “Invalid input: Expected an array of vectors.” } }];
}
const dimension = vectors[0].length;
if (!vectors.every(v => v.length === dimension)) {
return [{ json: { error: “Vectors have inconsistent dimensions.” } }];
}
const centroid = new Array(dimension).fill(0);
vectors.forEach(vector => {
vector.forEach((val, index) => {
centroid[index] += val;
});
});
for (let i = 0; i < dimension; i++) {
centroid[i] /= vectors.length;
}
return [{ json: { centroid } }];
测试
使用Postman或n8n UI等工具发送示例输入并验证响应。
修改输入向量以测试不同场景。
此工作流为向量质心计算提供了一个简单而灵活的解决方案,确保验证和可靠性。

评论(0)