用 n8n AI Agent 与 Supabase 存储文件对话
将 Supabase 存储桶中的 PDF/文本文件自动向量化,并通过聊天接口基于内容上下文进行问答
- 给谁
- 研究人员、分析师、企业主或需要管理大量文档并快速检索上下文信息的用户
- 你会得到
- 上传文件后,可通过对话方式向 AI 询问文档内容,获得基于上下文的回答
硬约束
前置条件:n8n 实例;Supabase 项目(含 Storage 与向量扩展);OpenAI API Key。需配置凭证类型 supabaseApi 与 openAiApi。费用取决于 OpenAI 嵌入与聊天调用量及 Supabase 用量。来源未提供 Supabase 向量表初始化 SQL,需自行准备 documents 表与 match_documents 函数。
他们做了什么
作者 Mark Shcherbakov 在 n8n 官方模板库发布了一个双场景 workflow:场景一自动将 Supabase Storage 中的新文件(PDF/文本)提取、分块、嵌入并写入 Supabase 向量库;场景二通过 Chat Trigger 接收用户问题,由 AI Agent 调用向量检索工具生成基于文档上下文的回答。
效果如何
作者提供了 10 分钟视频指南与分步搭建说明,并建议通过上传示例文件、询问文档内容来测试准确性与上下文相关性(来源 author_report)。
值得知道
模板 workflow.json 中硬编码了作者自己的 Supabase 端点(yqtvdcvjboenlblgcivl.supabase.co),必须全部替换。来源未提供 Supabase 向量表初始化 SQL 或 match_documents 函数定义,需自行准备。AI Agent 节点与 Vector Store Tool 的 metadata 中写死了示例 file_id(300b0128-0955-4058-b0d3-a9aefe728432),多文档场景下需改为动态传入。chunkOverlap=200 在部分长文档中可能产生较高 token 消耗,建议按实际测试调整。
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- Get All files 节点:绑定supabaseApi 凭证。
- Embeddings OpenAI 节点:绑定OpenAI API 凭证。
- Create File record2 节点:绑定supabaseApi 凭证。
- Get All Files 节点:绑定supabaseApi 凭证。
- Download 节点:绑定supabaseApi 凭证。
- OpenAI Chat Model1 节点:绑定OpenAI API 凭证。
- Embeddings OpenAI2 节点:绑定OpenAI API 凭证。
- OpenAI Chat Model2 节点:绑定OpenAI API 凭证。
- Insert into Supabase Vectorstore 节点:绑定supabaseApi 凭证。
- Supabase Vector Store 节点:绑定supabaseApi 凭证。
需要替换的配置
- 源模板来自 n8n 公开库 #2621(约 33 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-25
步骤
从 Supabase 获取文件列表
在 n8n 中使用 HTTP Request 节点(或 Supabase 节点)向 Supabase Storage 发送 POST 请求,列出指定存储桶中的文件。需替换模板中硬编码的 Supabase URL 为你自己的项目地址。添加逻辑过滤空文件夹占位符(.emptyFolderPlaceholder),避免误处理。
比对并过滤已处理文件
使用 Aggregate 节点汇总 Storage 返回的文件列表,再与 Supabase 数据库 files 表中的已有记录比对。通过 If 节点排除重复文件和占位符,仅保留未处理的新文件。
下载新文件
对通过过滤的文件,使用 HTTP Request 节点下载。根据 Storage 的公开/私有权限配置认证方式(模板使用 supabaseApi 凭证)。调整 GET 请求的 URL 与参数以匹配你的 Supabase 设置。
按文件类型处理内容
使用 Switch 节点按扩展名分流:PDF 文件送入 Extract Document PDF 节点提取文本;文本文件直接处理。模板中 Switch 条件判断 $binary.data.fileExtension 是否为 pdf 或 undefined(文本)。
内容分块
将提取到的大段文本通过 Recursive Character Text Splitter 节点切分。来源给出的默认参数:chunkSize=500 tokens,chunkOverlap=200 tokens。可根据文档结构调整。
生成向量嵌入
使用 Embeddings OpenAI 节点(模型 text-embedding-3-small)为每个文本块生成向量嵌入。在 Default Data Loader 中配置 metadata,携带 file_id 以便后续检索。数据来源表达式:{{ $('Merge').item.json.data ?? $('Merge').item.json.text }}。
存入 Supabase 向量库
使用 Insert into Supabase Vectorstore 节点将向量数据写入 Supabase。表名 documents,查询函数 match_documents。需确保 Supabase 项目已启用向量扩展并创建对应表结构。【首次测试安全】首次测试前,改用测试 Supabase 项目/测试 bucket 与测试 documents 表,或临时断开 Insert into Supabase Vectorstore,确认分块与嵌入无误后再写入正式库。
接入 AI 聊天机器人
搭建第二条场景:Chat Trigger 节点接收用户消息 → AI Agent 节点 → 关联 Vector Store Tool(Supabase Vector Store)检索相关文档块 → OpenAI Chat Model 生成回答。Vector Store Tool 的 metadata 中可指定 file_id 实现多文档时的定向查询。
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限
这一段是提示词,页面不会在这里插入广告。
你正在根据 n8n 模板 2621 搭建「AI agent to chat with files in Supabase Storage」。请按以下顺序执行: 1. 确认已拥有 n8n 实例、Supabase 项目(含 Storage 与向量扩展)、OpenAI API Key。 2. 在 n8n 中导入模板 workflow JSON,将所有硬编码的 Supabase URL、存储桶名、凭证替换为你自己的资源。 3. 在 Supabase 中创建向量表 documents 与 match_documents 查询函数(来源未提供 SQL,需参考 Supabase 官方向量文档)。 4. 配置 supabaseApi 与 openAiApi 凭证。 5. 上传测试文件到 Storage,运行 Scenario 1(文件处理流)确认向量写入成功。 6. 测试 Scenario 2(聊天流),向 Chat Trigger 发送问题,验证能否基于文档内容回答。 7. 检查 If 节点的过滤表达式与 Switch 节点的扩展名判断是否符合你的文件类型。 注意:chunkSize、chunkOverlap、topK 等参数可根据实际效果调整。
替换所有硬编码 URL 与凭证;向量表需自行初始化;先跑通文件处理流再测试聊天流。
来源
AI agent to chat with files in Supabase Storage · lowcodingdev · n8n.io · 2024-12-10
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。