
在构建 AI 应用,特别是检索增强生成(RAG)系统时,你是否也曾被复杂的技术栈所困扰?
通常的做法:将文件存储在 S3 这样的对象存储中,然后调用 OpenAI 等模型生成向量嵌入(Embeddings),再将这些向量存入一个专门的向量数据库(如 Pinecone, Weaviate)。这个流程不仅繁琐,还带来了数据同步、权限管理和额外成本等一系列问题。
现在,Supabase 带来了一个优雅的解决方案,或许能让你告别这种复杂性: Vector Buckets——一个内置了相似度搜索功能的持久化对象存储层。
简单来说,你可以把它想象成一个“超级 S3 存储桶”:你往里面存文件,它不仅能帮你保管文件,还能让你直接对这些文件进行语义搜索!这一切都构建在 Supabase 强大的 PostgreSQL 和 pgvector扩展之上。
下面,我们通过一个简单的例子,看看使用 Vector Buckets 有多方便。
首先,在 Supabase 的仪表盘或通过客户端库创建一个新的存储桶,并指定 embedding 模型。
-- 使用 SQL 创建一个 vector bucket
SELECT storage.create_bucket(
'documents',
public => true,
file_size_limit => '50MB',
allowed_mime_types => ARRAY['application/pdf'],
-- 启用向量扩展
extensions => jsonb_build_object(
'vectors', jsonb_build_object(
'embedding_model', 'text-embedding-3-small'
)
)
);
当你向这个 documents存储桶上传一个 PDF 文件时,Supabase 的扩展会自动在后台完成以下操作:
text-embedding-3-small模型为每个块生成向量嵌入。supabase_storage_vectors的新表中。这一切都是全自动的!
现在,你可以使用 storage.search()函数来查找与你的问题最相关的内容块。
// 使用 Supabase JS 客户端进行搜索
const { data, error } = await supabase
.storage
.search('documents', 'What are vector buckets?')
if (data) {
// 'data' 将包含最相似的文本块
// 接下来你可以将这些文本块作为上下文注入到 LLM 的 Prompt 中
console.log(data)
}
Supabase 的 Vector Buckets 通过将相似度搜索功能直接集成到对象存储层,极大地简化了 AI 应用(尤其是 RAG)的开发流程。它降低了技术栈的复杂性,提高了数据安全性和开发效率。
如果你正在构建或计划构建 AI 应用,那么这个新功能绝对值一试!它让我们离“人人都能轻松构建 AI 应用”的未来又近了一步。
Vector Buckets 目前只对Pro及以上版本提供 Public Alpha 测试,在测试期间,Vector Buckets 可以免费使用。
参考资料:
Introducing Vector Buckets