Supabase 发布内置 AI 推理 API,开发者可在 Edge Functions 中直接运行 AI 模型,简化了边缘计算场景的 AI 集成。
我们正在大幅简化在 Supabase Edge Functions 中运行 AI 模型的流程。Edge Runtime 现在提供了一个新的内置 API,只需几行代码就能运行推理任务。
借助这个新 API,你可以:
在上一次 Launch Week 中,我们宣布支持通过 Transformers.js 进行 AI 推理。这是一个不错的开始,但也存在一些不足:它需要实例化 WASM runtime 并构建推理 pipeline,因此“启动”需要一定时间。我们提高了 CPU 限制来缓解这个问题,但我们知道,还需要提供更好的 Developer Experience。
本文将介绍我们如何使用 Ort 消除冷启动,以及如何通过 Ollama 添加 LLM 支持。
Embeddings 可以捕捉文本、图像、视频或其他类型信息之间的“相关性”。Embeddings 会以浮点数数组的形式存储在数据库中,这种数组称为 vectors。自从我们在平台上推出 pgvector 以来,Postgres 已经成为一种广受欢迎的 vector database。
今天发布的功能解决了开发者根据数据库内容生成 embeddings 时面临的一些技术难题,让他们能够将这项计算密集型任务转移给后台 worker。
现在,每当数据库表中插入新行时,你都可以利用 database webhooks 自动生成 embeddings。
由于创建 embeddings 是一项计算密集型任务,因此将这项工作从数据库中卸载出去是合理的。Edge Functions 正是理想的“后台 worker”。我们创建了一个简单示例,展示如何在 Edge Functions 中生成 embeddings:使用 pgvector 和 Supabase Edge Functions 实现 Semantic Search。
Embedding 生成在底层使用 ONNX runtime。这是一个跨平台推理库,支持从 CPU 到专用 GPU 的多种 execution providers。
transformers.js 等库同样使用 ONNX runtime。在 Edge Functions 环境中,它会作为 WASM module 运行,而 WASM 的实例化过程可能比较慢。
为了解决这个问题,我们在 Edge Runtime 中构建了一个 native extension,从而能够通过 Rust 接口使用 ONNX runtime。这一能力的实现得益于一个优秀的 Rust wrapper——Ort。
与 LLM 工作负载相比,生成 embeddings 的计算量相对较小,因此无需硬件加速,也可以在 CPU 上运行。
Embedding 模型现已在 Edge Functions 中开放使用。目前我们支持 gte-small,未来还会根据用户反馈添加更多 embedding 模型。
所有 Edge Functions 用户现在都可以通过 Supabase.ai API 生成 embeddings,该功能同时适用于本地、托管和 self-hosted 平台。
在 Edge Function 中生成 embeddings 不会产生额外费用:我们仍然按照 CPU 使用量收费。一次典型的 embedding 生成请求,即使遇到冷启动,也应该能在 1 秒内完成。通常,它消耗的 CPU 时间不会超过 100~200 毫秒。
OpenAI 和 Claude 等专有 LLM 提供了生成文本 embeddings 的 API,并按照 token 收费。例如,在本文撰写时,OpenAI 的 text-embedding-3-small 价格为每 100 万个 token 0.02 美元。
开源文本 embedding 模型可以提供与 OpenAI 付费模型相近的性能。例如,gte-small 模型使用 384 个维度,在 MTEB 排行榜上的平均得分为 61.36;相比之下,OpenAI 的 text-embedding-3-small 得分为 62.26。由于维度更少,开源模型还能以更快的速度执行搜索。
借助 Supabase Edge Functions,生成文本 embeddings 的成本可以比使用 OpenAI embeddings API 低 10 倍。
生成 embeddings 只是解决方案的一部分。通常,你还需要一个 LLM,例如 OpenAI 的 GPT-3.5,来生成类似人类的交互内容。我们正在与 Ollama 合作,让 Supabase 能够支持这一能力,包括本地开发、self-hosted 部署和 Supabase 平台。
我们很高兴地宣布,Supabase.ai API 现已提供对 Llama 和 Mistral 的实验性支持。
这个 API 使用起来非常简单,并且支持 streaming responses。
你可以查看完整指南了解详情。
直接通过 ONNX runtime 在 CPU 上运行 LLM 模型非常困难。对于这些模型,我们在底层使用了由 GPU 加速的 Ollama server。
我们认为这是一对非常理想的组合:Ollama 团队投入了大量精力,确保本地开发体验足够出色;我们也非常喜欢无需联网即可运行的开发环境——尤其适合那些喜欢在飞机上编程的人。
作为 Supabase 开发者,你无需操心模型部署和 GPU instance 管理,只需使用 serverless API 即可完成任务。
为了管理 GPU instance 的使用需求,目前开源 LLM 仅限受邀用户访问。如果你需要提前使用,请联系我们。
我们计划扩展对更多模型的支持。请告诉我们你接下来希望使用哪些模型。我们也在考虑支持 fine-tuned models!
现在就可以查看 Supabase 文档,开始使用这些 AI 模型:
你可以在 Postgres 中存储和查询 embeddings,并将其用于 Retrieval Augmented Generation(RAG)和 Semantic Search。