?? pgai 向量化工具:用一条 SQL 命令在 PostgreSQL 自动生成 AI 嵌入向量

2024/10/30 21:03:02

本文主要是介绍?? 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 向量器系统架构图 – Pgai 向量器自动从源数据表中创建和更新嵌入,通过使用托管在 PostgreSQL 中的工作队列和配置表。嵌入由一个外部工作者创建,并与 OpenAI API 等嵌入服务进行交互。

这里有个例子,用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上全托管(免费试用期限有限)。现在就来试试点击这里。



这篇关于?? pgai 向量化工具:用一条 SQL 命令在 PostgreSQL 自动生成 AI 嵌入向量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程