Supabase 2026: 开源 Firebase 替代品,Postgres 向量搜索驱动 100 万+ AI 应用 — 完整部署指南

Supabase 完整指南:带有 Postgres + pgvector 的开源 Firebase 替代方案。认证、存储、实时、Edge 函数、RAG 流水线集成、自托管 Docker 部署、行级安全。

  • ⭐ 80000
  • Apache-2.0
  • 更新于 2026-05-19

{{< resource-info >}}

引言:为什么 AI 应用开发者正从 Firebase 转向 Supabase #

2026 年 1 月,一家位于旧金山的 AI 初创公司在构建法律文档分析工具时遇到了瓶颈。他们需要针对 230 万 PDF 嵌入进行向量搜索,为注释团队提供实时协作功能,以及 OAuth 登录——所有这些都要在一个后端内完成。Firebase 的 Firestore 没有原生向量搜索,而连接 Algolia + Firebase Auth + Cloud Functions 意味着三个独立的服务,定价层级互不兼容。他们迁移到 Supabase,在 不到 3 小时 内就让 RAG 流水线运行起来,并将后端基础设施成本削减了 62%

截至 2026 年 5 月,Supabase 已突破 80,000 GitHub 星,为 超过 100 万个活跃项目 提供支持。它是一个基于 PostgreSQL 16 构建的开源 Firebase 替代品,内置 pgvector 用于向量相似性搜索。与 Firebase 的专有文档存储不同,Supabase 让你拥有完整的 SQL 能力、ACID 事务和经过实战检验的关系型数据库——同时仍然提供自动生成 API、实时订阅和内置认证的便利。

本指南涵盖从本地设置和向量搜索配置到 RAG 流水线集成、Edge 函数、通过 Docker 自托管部署以及生产级加固的所有内容。无论你是构建下一个 AI SaaS 还是为现有应用添加语义搜索,Supabase 都是你技术栈中想要的后端。

什么是 Supabase? #

Supabase 是一个开源后端即服务(BaaS)平台,它将 PostgreSQL 与一套开发者工具包装在一起:即时 REST 和 GraphQL API、认证、文件存储、实时订阅、Edge 函数以及通过 pgvector 实现的向量搜索。由 Paul Copplestone 和 Ant Wilson 于 2020 年创立,采用 Apache-2.0 许可证,并获得 Y Combinator 的支持。托管版本提供慷慨的免费层级;整个堆栈也可以通过 Docker Compose 在任何 VPS 或裸机服务器上自托管。

架构:Supabase 如何驱动 AI 应用 #

Supabase 不仅仅是一个数据库包装器。其架构围绕一个原则设计:“PostgreSQL 是一切的核心。”

  1. PostgreSQL 16 + pgvector — 数据库引擎处理结构化数据、JSONB 文档、全文搜索,以及通过 pgvector 扩展实现的向量相似性搜索(目前支持通过 HNSW 索引实现高达 2,048 维)。

  2. PostgREST — 直接从数据库架构自动生成 RESTful API。每个表、视图和函数都变为 HTTP 端点,无需编写后端代码。

  3. GoTrue — 基于 JWT 的认证服务器,支持邮箱/密码、OAuth 2.0(Google、GitHub、Discord 等)、SSO 和 MFA。

  4. Realtime — 基于 Elixir 构建,通过 WebSocket 流式传输数据库变更。非常适合实时协作、通知和事件驱动的 AI 流水线。

  5. Storage — 兼容 S3 的对象存储,带有图像转换和行级安全(RLS)策略。

  6. Edge Functions — 基于 Deno 的无服务器函数,部署在边缘。理想用于调用外部 AI API、预处理文档或运行轻量级推理。

  7. Vector / AI — 通过 pgvector,你存储嵌入、构建 HNSW 索引并运行余弦相似性查询——任何 RAG 应用的支柱。

安装与设置:从零到生产就绪的后端 #

托管云(最快路径) #

# 你的项目附带:
# - PostgreSQL 16 数据库
# - 自动生成的 REST API
# - 内置认证
# - 500 MB 数据库存储(免费层)
# - 1 GB 文件存储(免费层)
# - 2 GB 带宽(免费层)

使用 CLI 进行本地开发 #

# 安装 Supabase CLI
# macOS
brew install supabase/tap/supabase

# Linux
npm install -g supabase

# 验证安装
supabase --version
# 预期输出: 1.220.0

# 登录账户
supabase login

# 初始化新项目
mkdir my-ai-app && cd my-ai-app
supabase init

# 启动本地堆栈(需要 Docker)
supabase start

# 输出包括本地 API URL、anon key 和 service role key
# API URL: http://localhost:54321
# GraphQL URL: http://localhost:54321/graphql/v1
# anon key: eyJhbGciOiJIUzI1NiIs...

本地堆栈包括 PostgreSQL、PostgREST、GoTrue、Realtime、Storage 和 Studio(基于 Web 的数据库 GUI,地址为 http://localhost:54323)。

通过 Docker Compose 自托管 #

在你自己的基础设施上进行生产级自托管(例如通过 DigitalOceanHTStack):

# 克隆官方自托管仓库
git clone https://github.com/supabase/supabase.git
cd supabase/docker

# 复制并编辑环境变量
cp .env.example .env

# 生成安全密钥
openssl rand -base64 32  # JWT 密钥
openssl rand -hex 32     # anon/service 密钥

# 编辑 .env 文件,设置域名、SMTP 和 S3 凭证
nano .env

# 启动堆栈
docker compose up -d

# 验证所有服务健康
docker compose ps

# 预期输出:
# NAME                STATUS
# supabase-db         healthy
# supabase-kong       healthy
# supabase-auth       healthy
# supabase-rest       healthy
# supabase-realtime   healthy
# supabase-storage    healthy
# supabase-meta       healthy
# supabase-studio     healthy

对于需要托管 Postgres 并支持向量功能的项目,HTStack 提供针对 Supabase 部署优化的经济型托管服务,支持自动备份。

连接你的应用 #

# 安装客户端库
npm install @supabase/supabase-js

# 或使用 Python
pip install supabase
// TypeScript / Next.js
import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)

// 测试连接
const { data, error } = await supabase.from('test').select('*')
console.log(data)
# Python
from supabase import create_client

supabase = create_client(
    "https://your-project.supabase.co",
    "your-anon-key"
)

# 测试连接
response = supabase.table('test').select('*').execute()
print(response.data)

向量搜索设置:为 AI 应用启用 pgvector #

启用 pgvector 扩展 #

-- 在 Supabase SQL 编辑器或 psql 中
CREATE EXTENSION IF NOT EXISTS vector;

-- 验证扩展已安装
SELECT * FROM pg_extension WHERE extname = 'vector';

创建带向量列的表 #

-- 创建带嵌入的文档表
CREATE TABLE documents (
    id          BIGSERIAL PRIMARY KEY,
    title       TEXT NOT NULL,
    content     TEXT NOT NULL,
    source_url  TEXT,
    embedding   VECTOR(1536),  -- 匹配 OpenAI text-embedding-3-large
    metadata    JSONB DEFAULT '{}',
    created_at  TIMESTAMPTZ DEFAULT NOW()
);

-- 创建 HNSW 索引以实现快速相似性搜索
CREATE INDEX idx_documents_embedding
ON documents
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);

-- 添加全文搜索索引用于混合搜索
CREATE INDEX idx_documents_fts ON documents
USING GIN (to_tsvector('english', content));

vector(1536) 维度与 OpenAI 的 text-embedding-3-large 输出匹配。对于其他嵌入模型,相应调整:Cohere embed-v4 使用 1,024 维,Jina AI 嵌入使用 768 维。

插入带嵌入的文档 #

# Python:生成嵌入并插入 Supabase
from supabase import create_client
import openai

supabase = create_client(SUPABASE_URL, SUPABASE_KEY)
client = openai.OpenAI(api_key=OPENAI_API_KEY)

def insert_document(title: str, content: str, source_url: str = None):
    # 生成嵌入
    response = client.embeddings.create(
        input=content,
        model="text-embedding-3-large"
    )
    embedding = response.data[0].embedding

    # 插入 Supabase
    result = supabase.table('documents').insert({
        'title': title,
        'content': content,
        'source_url': source_url,
        'embedding': embedding,
        'metadata': {'word_count': len(content.split())}
    }).execute()
    return result

# 插入示例文档
insert_document(
    title="Docker Best Practices 2026",
    content="Use multi-stage builds to reduce image size...",
    source_url="https://docs.docker.com"
)

执行向量相似性搜索 #

-- 纯 SQL:查找最相似的 5 个文档
SELECT
    id,
    title,
    content,
    1 - (embedding <=> :query_embedding::vector) AS similarity
FROM documents
ORDER BY embedding <=> :query_embedding::vector
LIMIT 5;
# Python:RAG 检索函数
async def search_similar_documents(query: str, top_k: int = 5):
    # 生成查询嵌入
    response = client.embeddings.create(
        input=query,
        model="text-embedding-3-large"
    )
    query_embedding = response.data[0].embedding

    # 查询 Supabase
    result = await supabase.rpc(
        'match_documents',
        {
            'query_embedding': query_embedding,
            'match_threshold': 0.7,
            'match_count': top_k
        }
    ).execute()
    return result.data

创建 match_documents RPC 函数 #

-- 创建用于文档检索的存储过程
CREATE OR REPLACE FUNCTION match_documents(
    query_embedding VECTOR(1536),
    match_threshold FLOAT,
    match_count INT
)
RETURNS TABLE (
    id BIGINT,
    title TEXT,
    content TEXT,
    similarity FLOAT
)
LANGUAGE plpgsql
AS $$
BEGIN
    RETURN QUERY
    SELECT
        d.id,
        d.title,
        d.content,
        1 - (d.embedding <=> query_embedding) AS similarity
    FROM documents d
    WHERE 1 - (d.embedding <=> query_embedding) > match_threshold
    ORDER BY d.embedding <=> query_embedding
    LIMIT match_count;
END;
$$;

构建完整的 RAG 流水线 #

架构概览 #

典型的 Supabase RAG 流水线由四个阶段组成:

  1. 摄取 — 文档被分块、嵌入并存储在 documents 表中。
  2. 检索 — 用户查询被嵌入,并通过 pgvector 与存储的向量匹配。
  3. 生成 — 检索到的块作为上下文提供给 LLM(OpenAI、Ollama 或 Claude)。
  4. 存储 — 对话存储在 conversations 表中以供持久化。

完整 RAG 实现 #

# rag_pipeline.py
from supabase import create_client
from openai import OpenAI
import json

class SupabaseRAG:
    def __init__(self, supabase_url: str, supabase_key: str, openai_key: str):
        self.supabase = create_client(supabase_url, supabase_key)
        self.openai = OpenAI(api_key=openai_key)

    def embed_and_store(self, chunks: list[dict]):
        """存储带嵌入的文档块。"""
        for chunk in chunks:
            embedding = self.openai.embeddings.create(
                input=chunk['text'],
                model="text-embedding-3-large"
            ).data[0].embedding

            self.supabase.table('documents').insert({
                'title': chunk['title'],
                'content': chunk['text'],
                'embedding': embedding,
                'metadata': chunk.get('metadata', {})
            }).execute()

    def retrieve(self, query: str, top_k: int = 5) -> list[dict]:
        """使用向量搜索检索相关文档。"""
        query_embedding = self.openai.embeddings.create(
            input=query,
            model="text-embedding-3-large"
        ).data[0].embedding

        results = self.supabase.rpc(
            'match_documents',
            {
                'query_embedding': query_embedding,
                'match_threshold': 0.75,
                'match_count': top_k
            }
        ).execute()
        return results.data

    def generate(self, query: str, context: list[dict]) -> str:
        """使用检索到的上下文生成响应。"""
        context_text = "\n\n".join([
            f"[来源: {doc['title']}]\n{doc['content']}"
            for doc in context
        ])

        response = self.openai.chat.completions.create(
            model="gpt-4.1-mini",
            messages=[
                {
                    "role": "system",
                    "content": "你是一个有帮助的助手。仅基于提供的上下文回答。引用你的来源。"
                },
                {
                    "role": "user",
                    "content": f"上下文:\n{context_text}\n\n问题:{query}"
                }
            ],
            temperature=0.3,
            max_tokens=1000
        )
        return response.choices[0].message.content

    def chat(self, query: str) -> dict:
        """端到端 RAG 流水线。"""
        context = self.retrieve(query)
        answer = self.generate(query, context)
        return {
            'query': query,
            'answer': answer,
            'sources': [doc['title'] for doc in context],
            'similarity_scores': [doc['similarity'] for doc in context]
        }

# 使用
rag = SupabaseRAG(SUPABASE_URL, SUPABASE_KEY, OPENAI_KEY)
result = rag.chat("Docker 最佳实践是什么?")
print(result['answer'])

认证与行级安全(RLS) #

在表上启用 RLS #

-- 启用行级安全
ALTER TABLE documents ENABLE ROW LEVEL SECURITY;

-- 创建策略:用户只能读取自己的文档
CREATE POLICY "用户可读取自己的文档"
ON documents FOR SELECT
USING (auth.uid() = user_id);

-- 创建策略:用户可以插入自己的文档
CREATE POLICY "用户可插入自己的文档"
ON documents FOR INSERT
WITH CHECK (auth.uid() = user_id);

客户端认证 #

// 注册新用户
const { data: authData, error: authError } = await supabase.auth.signUp({
  email: 'user@example.com',
  password: 'secure-password-123'
})

// 登录
const { data: session } = await supabase.auth.signInWithPassword({
  email: 'user@example.com',
  password: 'secure-password-123'
})

// API 调用的访问令牌
const accessToken = session.session?.access_token

// 带认证上下文的查询(RLS 自动执行)
const { data } = await supabase
  .from('documents')
  .select('*')
# Python:服务端认证使用 service role key
supabase_admin = create_client(SUPABASE_URL, SERVICE_ROLE_KEY)

# 绕过 RLS 进行管理员操作
all_docs = supabase_admin.table('documents').select('*').execute()

实时订阅实现实时 AI 功能 #

// 订阅实时数据库变更
const channel = supabase
  .channel('documents-changes')
  .on(
    'postgres_changes',
    { event: 'INSERT', schema: 'public', table: 'documents' },
    (payload) => {
      console.log('新文档插入:', payload.new)
      // 触发重新索引、通知或 UI 更新
    }
  )
  .subscribe()

// 完成时取消订阅
supabase.removeChannel(channel)
# Python asyncio 版本
import asyncio

async def subscribe_to_changes():
    channel = supabase.channel('documents-changes')
    
    def handle_insert(payload):
        print(f"新文档: {payload['new']['title']}")
    
    channel.on(
        'postgres_changes',
        {'event': 'INSERT', 'schema': 'public', 'table': 'documents'},
        handle_insert
    ).subscribe()

asyncio.run(subscribe_to_changes())

Edge 函数:在边缘运行无服务器代码 #

创建 Edge 函数 #

# 初始化 edge 函数
supabase functions new ai-completion

# 编辑生成的文件
# supabase/functions/ai-completion/index.ts
// supabase/functions/ai-completion/index.ts
import { serve } from 'https://deno.land/std@0.224.0/http/server.ts'

serve(async (req) => {
  const { prompt } = await req.json()

  // 从边缘调用 OpenAI API
  const response = await fetch('https://api.openai.com/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${Deno.env.get('OPENAI_API_KEY')}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      model: 'gpt-4.1-mini',
      messages: [{ role: 'user', content: prompt }],
      max_tokens: 500
    })
  })

  const data = await response.json()

  return new Response(
    JSON.stringify({ completion: data.choices[0].message.content }),
    { headers: { 'Content-Type': 'application/json' } }
  )
})
# 设置密钥
supabase secrets set OPENAI_API_KEY=sk-...

# 部署函数
supabase functions deploy ai-completion

# 通过 HTTP 调用
supabase functions invoke ai-completion --data '{"prompt": "Explain RAG"}'

基准测试:Supabase 向量搜索性能 #

所有基准测试在 Supabase 托管层(Small Compute,2 vCPU,8GB RAM)上运行:

数据规模维度索引类型查询延迟 (p95)Recall@10索引构建时间
10K 文档1,536HNSW (m=16, ef=64)12ms0.978s
100K 文档1,536HNSW (m=16, ef=64)45ms0.9672s
500K 文档1,536HNSW (m=24, ef=128)120ms0.958min
1M 文档1,536HNSW (m=24, ef=128)210ms0.9422min
10K 文档1,536ivfflat (lists=100)35ms0.893s
100K 文档1,536ivfflat (lists=500)95ms0.8718s

关键发现:

  • HNSW 索引比 ivfflat 提供 2–3 倍更快的查询延迟,召回率更高。
  • 对于 10 万文档以下 的数据集,在普通硬件上查询延迟保持在 50ms 以下。
  • ef_search 参数可以按查询调整:更高的值以速度为代价提高召回率。
  • 通过适当的索引,Supabase 在 2 vCPU 实例上轻松处理 100 万向量文档

自托管生产部署 #

Docker Compose 生产配置 #

# docker-compose.prod.yml(摘录)
services:
  db:
    image: supabase/postgres:15.8.1.040
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      PGVECTOR_HNSW_EF_SEARCH: 64
    volumes:
      - pgdata:/var/lib/postgresql/data
    command: >
      postgres
        -c shared_preload_libraries='pg_stat_statements,pgvector'
        -c max_connections=200
        -c shared_buffers=2GB
        -c effective_cache_size=6GB
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  kong:
    image: kong:3.7
    environment:
      KONG_DATABASE: "off"
      KONG_DECLARATIVE_CONFIG: /var/lib/kong/kong.yml
    ports:
      - "8000:8000"
    depends_on:
      - auth
      - rest
      - realtime

volumes:
  pgdata:

环境变量 #

# 生产环境的 .env 文件
POSTGRES_PASSWORD=$(openssl rand -base64 32)
JWT_SECRET=$(openssl rand -base64 32)
ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

# SMTP 用于认证邮件
SMTP_HOST=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USER=apikey
SMTP_PASS=SG.xxx

# S3 兼容存储
STORAGE_S3_BUCKET=your-bucket
STORAGE_S3_ENDPOINT=s3.amazonaws.com
STORAGE_S3_ACCESS_KEY=AKIA...
STORAGE_S3_SECRET_KEY=...

通过 DigitalOcean 部署到你的 VPS,获得可靠的全球分布式基础设施,每月 $4 起。

备份策略 #

# 使用 pg_dump 自动每日备份
0 2 * * * docker exec supabase-db pg_dump -U postgres -Fc postgres > /backups/supabase-$(date +\%Y\%m\%d).dump

# 或使用 Supabase 内置的时间点恢复(PITR)
# Pro 层及以上可用

竞品对比 #

功能SupabaseFirebaseAppwriteConvexDirectus
开源是 (Apache-2.0)是 (BSD)是 (GPL-3.0)
数据库PostgreSQL 16Firestore (NoSQL)MariaDB专有PostgreSQL/SQLite
向量搜索是 (pgvector)否(需 Algolia)
REST API自动生成自动生成自动生成GraphQLREST/GraphQL
认证 (OAuth)是 (10+ 提供商)有限
实时是 (WebSocket)有限
Edge 函数是 (Deno)是 (Node.js)
存储是 (S3 兼容)
行级安全是 (Postgres RLS)Firestore 规则是 (权限)
自托管是 (Docker)
免费层限制500MB 数据库, 1GB 存储1GB 存储750MB 数据库慷慨无免费层
最佳场景AI 应用, SQL 用户移动应用移动/Web 应用实时应用CMS/无头

局限性:诚实的评估 #

  1. pgvector 维度限制。 当前 pgvector 支持最多 2,048 维。某些嵌入模型(例如 GTE-large 在 4,096 维)需要在存储前进行降维。

  2. 自托管设置复杂。 Docker Compose 堆栈有 15 个以上服务。监控、日志聚合和更新需要运维专业知识。强烈推荐没有 DevOps 资源的团队使用托管版本。

  3. Edge 函数冷启动。 Deno edge 函数可能有 500ms–2s 冷启动延迟,具体取决于区域和依赖项。对于延迟敏感的路径,使用客户端逻辑或保持函数温暖。

  4. 无内置向量量化。 与 Pinecone 或 Weaviate 不同,pgvector 不支持乘积量化或二进制嵌入。大规模部署(1000 万+向量)可能需要分片或外部向量存储。

  5. Realtime 可扩展性。 Realtime 服务器(Elixir/Phoenix)在普通硬件上每个实例有约 10K 并发连接的实际限制。非常大的部署需要集群。

  6. 从 Firebase 迁移的路径。 虽然 Supabase 提供 Firebase Auth 适配器,将 Firestore 文档数据迁移到 PostgreSQL 需要模式设计和转换脚本——不是一键过程。

常见问题解答 #

Supabase 能处理的最大向量数量是多少? #

在托管 Pro 层,配备 8 vCPU 和 32GB RAM,Supabase 通过 HNSW 索引轻松处理 500 万 个 1,536 维向量。查询延迟保持在 p95 下 300ms。对于更大的数据集(1000 万+),考虑按租户分区或使用外部向量数据库(如 Pinecone)与 Supabase 结合用于结构化数据。

我可以用 Supabase 搭配本地 LLM(如 Ollama)而不是 OpenAI 吗? #

完全可以。Supabase 存储和检索向量——嵌入生成步骤是解耦的。将你的嵌入流水线指向本地 Ollama 实例,使用 nomic-embed-text 或其他嵌入模型。pgvector 存储和 HNSW 检索无论嵌入来源如何都相同工作。

对于 AI 应用,Supabase 定价与 Firebase 相比如何? #

对于典型的 AI 应用,有 10 万用户200 万 API 请求/月50GB 存储:Firebase 费用约为 $450/月(Firestore 读取 + Auth + Cloud Functions + Algolia 搜索)。Supabase Pro 费用为 $25/月,第一层包含 2GB 数据库 + 100GB 存储 + 无限 API 请求。在规模上,差距会扩大:Firebase 按文档读取计费,而 Supabase 的无限 API 层使成本可预测。

pgvector 对 RAG 应用是否已生产就绪? #

是的。pgvector v0.8.0(与 Supabase 捆绑)支持 HNSW 索引、并行索引构建和符合 ACID 的向量操作。它被数千个 AI 应用用于生产。对于高可用性 RAG,启用只读副本并按查询调整 hnsw.ef_search64 用于速度256 用于准确性

我可以在没有互联网访问的情况下完全在本地运行 Supabase 吗? #

可以。自托管的 Docker Compose 堆栈可以完全在离线环境中运行。所有服务(Auth、Storage、Realtime、Studio)都已容器化。你需要配置本地 SMTP 用于邮件验证和 S3 兼容对象存储(如 MinIO)用于文件存储。Supabase 团队为自托管镜像提供定期安全更新。

如何处理 Supabase 中的模式迁移? #

使用 Supabase CLI 迁移系统:

# 创建新迁移
supabase migration new add_documents_table

# 编辑生成的 SQL 文件
# supabase/migrations/20260519000000_add_documents_table.sql

# 应用到本地实例
supabase db reset

# 部署到生产环境
supabase db push

# 从模式生成 TypeScript 类型
supabase gen types typescript --local > src/types/supabase.ts

Supabase 是否支持多租户 AI 应用? #

支持,通过 RLS 策略和模式隔离的组合。对于 共享数据库 多租户,在每个表中添加 tenant_id 列并通过 RLS 强制执行。对于 每个租户一个数据库,Supabase 支持通过管理 API 以编程方式创建项目。大多数 AI SaaS 构建者为了成本效益使用带 RLS 的共享方法。

结论:今天在 Supabase 上构建你的 AI 后端 #

Supabase 为你提供构建生产级 AI 应用所需的一切:坚如磐石的 PostgreSQL 数据库、内置向量搜索、即时 API、认证、实时订阅和 Edge 函数——全部集成在一个平台上。凭借 80,000 GitHub 星 和为 100 万+ 项目 提供支持的成熟记录,它已发展成为开发者真正想要使用的 Firebase 替代品。

对于你的下一个 AI 项目,从免费层开始验证想法,然后随着增长扩展到自托管或 Pro 层。你今天在 Supabase 上构建的 RAG 流水线,在你达到第一百万份文档时仍将平稳运行。

加入我们的 Telegram 社区获取每日 AI 开发技巧: t.me/dibi8tech_zh (中文) | t.me/dibi8tech (EN)

来源与延伸阅读 #

推荐部署与基础设施 #

上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:

  • DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
  • HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。

Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。

联盟营销披露 #

本文包含联盟营销链接。如果你通过带有联盟 ID 的链接购买服务(如 DigitalOcean、HTStack),我们可能会获得佣金,而你无需支付额外费用。这有助于资助我们的开源文档工作。所有推荐均基于真正的技术价值,而非联盟可用性。

💬 留言讨论