🚀 pgai 向量化工具:用一条 SQL 命令在 PostgreSQL 自动生成 AI 嵌入向量
学习怎样使用你熟悉的PostgreSQL来自动化AI嵌入的创建。
管理像RAG、搜索和AI代理这样的AI系统的嵌入工作流程可能是一件麻烦事:需要同时管理多个工具、搭建复杂的流水线,并花费数小时来同步数据,特别是如果你不是ML或AI方面的专家。但这并不一定如此困难。
通过使用 pgai Vectorizer,现在正处于抢先体验阶段,你可以自动化创建向量嵌入,保持它们随着数据变化自动同步,并尝试和探索不同的 AI 模型——所有这些只需一条简单的 SQL 命令。无需额外工具,无需复杂的设置——只需用 PostgreSQL 就能搞定一切。
-- 生成一个向量化器来嵌入blogs表中的数据
-- 使用Open AI的text-embedding-3-small模型来嵌入数据
SELECT ai.create_vectorizer(
'public.blogs'::regclass,
embedding => ai.embedding_openai('text-embedding-3-small', 1536),
chunking => ai.chunking_recursive_character_splitter('content')
);
进入全屏,退出全屏
Vectorizer 做的是:- 使用 SQL 生成向量: 通过一条命令从多个文本列生成向量,从而简化了您的 AI 工作流中关键的部分。
- 自动同步: 随着数据的变化,向量自动更新——无需手动干预。
- 快速模型切换: 使用 SQL 快速测试不同的 AI 模型——无需重新处理数据。
- 测试和部署: 对比模型和分块技术,进行 A/B 测试,从而确保在不停机时间的情况下自信地部署更新,确保业务连续性。
这里有个例子,用pgai向量化器来测试两种不同嵌入模型的RAG输出。
-- 使用OpenAI的text-embedding-3-small进行向量化
SELECT ai.create_vectorizer(
'public.blogs'::regclass,
destination => 'blogs_embedding_small',
embedding => ai.embedding_openai('text-embedding-3-small', 1536),
chunking => ai.chunking_recursive_character_text_splitter('content'),
formatting => ai.formatting_python_template('Title: $title\nURL: $url\nContent: $chunk')
);
-- 使用OpenAI的text-embedding-3-large进行向量化
SELECT ai.create_vectorizer(
'public.blogs'::regclass,
destination => 'blogs_embedding_large',
embedding => ai.embedding_openai('text-embedding-3-large', 1536), -- 注意:不同的维度
chunking => ai.chunking_recursive_character_text_splitter('content'),
formatting => ai.formatting_python_template('Title: $title\nURL: $url\nContent: $chunk')
);
-- 比较在相同RAG查询中两个向量器的结果
SELECT
'text-embedding-3-small' as 模型,
generate_rag_response(
'什么是AI?',
'public.blogs_embedding_small'
) as 回复
UNION ALL
SELECT
'text-embedding-3-large' as 模型,
generate_rag_response(
'什么是AI?',
'public.blogs_embedding_large'
) as 回复;
进入全屏 退出全屏
专为扩展设计随着您的数据集的增长,pgai 向量化器也会随之扩展。当向量数目超过 100,000 时,它会自动优化搜索性能,利用像 HNSW 和 StreamingDiskANN 这样的向量索引。您可以完全掌控——定义分块和格式规则,根据您的需求定制嵌入。
这里是一个高级矢量化器配置的示例,在添加了10万行之后创建了一个ANN索引,并为HTML文件设置了自定义分块处理。
-- 高级向量器配置
SELECT ai.create_vectorizer(
'public.blogs'::regclass,
目标表 => 'blogs_embedding_recursive',
嵌入向量 => ai.embedding_openai('text-embedding-3-small', 1536),
-- 当表中有100k行时自动创建StreamingDiskANN索引
索引设置 => ai.indexing_diskann(最小行数阈值 => 100000, 存储布局参数 => 'memory_optimized'),
-- 对HTML内容应用递归文本切分,指定设置
递归文本切分 => ai.chunking_recursive_character_text_splitter(
'content',
切片大小(字符数) => 800,
重叠字符数 => 400,
-- HTML感知的分隔符,从最高到最低优先级排序
分隔符 => array[
E'</article>', -- 在主要文档部分上分割
E'</div>', -- 在div边界上分割
E'</section>',
E'</p>', -- 在段落上分割
E'<br>', -- 在换行符上分割
E'</li>', -- 在列表项上分割
E'. ', -- 回退到句子边界
' ' -- 最后一个选择:在空格上分割
]
),
格式化设置 => ai.formatting_python_template('标题:$title 链接:$url $chunk')
);
全屏模式 退出全屏
现在就试试 pgai Vectorizer(抢先体验)对于像MarketReader这样的公司而言,,pgai矢量器已经让AI开发变得更快捷和更高效。
“pgai Vectorizer 让我们的 AI 流程更简单,从创建嵌入到实时同步,让 AI 开发更快更简便——全部都在 PostgreSQL 中搞定。” — Web Begole,MarketReader(一家 AI 金融洞察公司)的 CTO
如果你准备好开始构建了,我们有一个与 Ollama 合作举办的一个 Dev Challenge,关于使用开源软件开发 AI 应用。我们非常期待看到社区使用 PostgreSQL 和 pgai 向量器开发出的作品!
节省时间和精力。少关注嵌入,多花时间构建你的下一个杀手级AI应用。试试今天就免费试用pgai Vectorizer:在GitHub上获取它或在Timescale Cloud上全托管(免费试用期限有限)。现在就来试试点击这里。
共同学习,写下你的评论
评论加载中...
作者其他优质文章