OpenAI Embeddings创意写作AI 评分 · 79/100AI 辅助编辑·未发现明显提示词注入风险n8n.io

用 n8n AI Agent 与 Supabase 存储文件对话

将 Supabase 存储桶中的 PDF/文本文件自动向量化,并通过聊天接口基于内容上下文进行问答

有一点经验步骤流程贴士
给谁
研究人员、分析师、企业主或需要管理大量文档并快速检索上下文信息的用户
你会得到
上传文件后,可通过对话方式向 AI 询问文档内容,获得基于上下文的回答
你需要
n8n · supabase

硬约束

前置条件: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

步骤

  1. 从 Supabase 获取文件列表

    在 n8n 中使用 HTTP Request 节点(或 Supabase 节点)向 Supabase Storage 发送 POST 请求,列出指定存储桶中的文件。需替换模板中硬编码的 Supabase URL 为你自己的项目地址。添加逻辑过滤空文件夹占位符(.emptyFolderPlaceholder),避免误处理。

  2. 比对并过滤已处理文件

    使用 Aggregate 节点汇总 Storage 返回的文件列表,再与 Supabase 数据库 files 表中的已有记录比对。通过 If 节点排除重复文件和占位符,仅保留未处理的新文件。

  3. 下载新文件

    对通过过滤的文件,使用 HTTP Request 节点下载。根据 Storage 的公开/私有权限配置认证方式(模板使用 supabaseApi 凭证)。调整 GET 请求的 URL 与参数以匹配你的 Supabase 设置。

  4. 按文件类型处理内容

    使用 Switch 节点按扩展名分流:PDF 文件送入 Extract Document PDF 节点提取文本;文本文件直接处理。模板中 Switch 条件判断 $binary.data.fileExtension 是否为 pdf 或 undefined(文本)。

  5. 内容分块

    将提取到的大段文本通过 Recursive Character Text Splitter 节点切分。来源给出的默认参数:chunkSize=500 tokens,chunkOverlap=200 tokens。可根据文档结构调整。

  6. 生成向量嵌入

    使用 Embeddings OpenAI 节点(模型 text-embedding-3-small)为每个文本块生成向量嵌入。在 Default Data Loader 中配置 metadata,携带 file_id 以便后续检索。数据来源表达式:{{ $('Merge').item.json.data ?? $('Merge').item.json.text }}。

  7. 存入 Supabase 向量库

    使用 Insert into Supabase Vectorstore 节点将向量数据写入 Supabase。表名 documents,查询函数 match_documents。需确保 Supabase 项目已启用向量扩展并创建对应表结构。【首次测试安全】首次测试前,改用测试 Supabase 项目/测试 bucket 与测试 documents 表,或临时断开 Insert into Supabase Vectorstore,确认分块与嵌入无误后再写入正式库。

  8. 接入 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

留言与反馈

试过这个方法吗?分享效果、遇到的问题或改进建议。留言审核后公开,请勿填写敏感信息。

正在加载…

    相关用例