您的当前位置:首页>全部文章>文章详情

在n8n中使用Supabase数据库的详细指南

发表于:2025-06-30 12:34:14浏览:9次TAG: #AI #n8n #Supabase #数据库

一、准备工作

  1. 获取Supabase连接信息

    • 登录Supabase控制台,进入目标项目
    • 点击顶部”Connect”按钮,选择”Session pooler”连接方式(推荐用于n8n)
    • 记录连接参数:
      • 主机:aws-0-[REGION].pooler.supabase.com
      • 端口:5432
      • 数据库名:postgres
      • 用户名:postgres.[项目ID](格式示例:postgres.apbkobhfnmcqqzqeeqss)
      • 密码:在项目创建时设置的数据库密码(可在Settings > Database重置)
  2. 获取API密钥(如使用Vector Store)

    • 进入Settings > API
    • 复制”service_role”密钥(用于服务器端操作)

二、使用PostgreSQL节点连接Supabase

  1. 添加PostgreSQL节点

    • 在n8n工作流中添加”PostgreSQL”节点
    • 点击”Credentials” > “Create new”创建新凭证
  2. 配置数据库连接

    • 填写连接参数:
      • Host: 从Supabase获取的主机地址
      • Port: 5432
      • Database: postgres
      • Username: 完整的用户名(包含项目ID)
      • Password: Supabase数据库密码
      • SSL: 启用(选择”require”模式)
  3. 测试连接

    • 点击”Test Connection”按钮验证配置
    • 若连接失败,检查:
      • 密码是否正确
      • SSL设置是否启用
      • 网络是否支持IPv4连接

三、使用Supabase Vector Store节点(适用于RAG场景)

  1. 添加Supabase Vector Store节点

    • 在n8n中添加”Supabase Vector Store”节点
    • 配置认证信息:
      • Supabase URL: https://[项目ID].supabase.co
      • Service Role Secret: 从Supabase API设置中获取的service_role密钥
  2. 创建向量表

    • 进入Supabase控制台的SQL编辑器
    • 运行以下脚本创建必要的表结构:

      -- 启用向量扩展
      create extension if not exists vector;
      
      -- 创建文档表
      create table documents (
        id uuid primary key,
        content text, -- 文档内容
        metadata jsonb, -- 元数据
        embedding vector(1536) -- 向量字段,1536维度适用于OpenAI嵌入
      );
      
      -- 创建相似性搜索函数
      create function match_documents (
        query_embedding vector(1536),
        filter jsonb default '{}'
      ) returns table (
        id uuid,
        content text,
        metadata jsonb,
        similarity float
      ) language plpgsql as $$
      #variable_conflict use_column
      begin
        return query
        select
          id,
          content,
          metadata,
          1 - (documents.embedding <=> query_embedding) as similarity
        from documents
        where metadata @> filter
        order by documents.embedding <=> query_embedding;
      end;
      $$;
      
  3. 配置向量存储节点

    • 在n8n节点中选择创建的”documents”表
    • 设置查询名称为”match_documents”
    • 配置嵌入模型(如OpenAI嵌入)

四、示例工作流

  1. 从Supabase读取数据

    • 配置PostgreSQL节点为”Execute Query”模式
    • 输入SQL查询:SELECT * FROM your_table LIMIT 10
    • 连接到后续节点处理数据
  2. 向Supabase写入数据

    • 配置PostgreSQL节点为”Insert”模式
    • 选择目标表并映射输入字段
    • 连接触发器节点(如定时触发器或Webhook)
  3. 向量相似性搜索

    • 添加”AI Model”节点生成查询嵌入
    • 连接”Supabase Vector Store”节点执行相似性搜索
    • 将结果传递给LLM节点生成自然语言回答

五、常见问题解决

  1. 连接拒绝错误

    • 确认Supabase项目状态正常
    • 检查网络是否支持IPv4(Session pooler模式)
    • 验证主机和端口是否正确
  2. 认证失败

    • 重置数据库密码(Settings > Database)
    • 确认用户名格式正确(包含项目ID)
  3. SSL相关错误

    • 确保SSL模式已启用
    • 如需要证书,从Supabase控制台下载根证书并在n8n中配置

六、安全最佳实践

  1. 不要在前端暴露service_role密钥,仅在服务器端使用
  2. 启用Row Level Security (RLS)保护敏感数据
  3. 定期轮换数据库密码和API密钥
  4. 限制n8n服务器的IP访问权限(Supabase > Project Settings > Network)
腾讯云采购季云服务器一折促销
value=var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?e7a8b7a58ac230c63c797812fd2c66eb"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();