pg_vectorize: PostgreSQL的向量数据库解决方案
pg_vectorize是一个强大的PostgreSQL扩展,旨在简化AI工作负载的构建过程。它为开发人员提供了一种简单而高效的方式来实现向量搜索和构建基于大型语言模型(LLM)的应用程序。通过自动化文本到嵌入向量的转换和编排过程,pg_vectorize使得在现有数据上实现这些功能变得异常简单,只需要几个函数调用即可完成。
主要特性
-
向量搜索和RAG工作流: pg_vectorize支持向量搜索和检索增强生成(RAG)两种主要的AI应用场景。
-
多种集成选项: 该扩展提供了与OpenAI的embeddings和chat-completion端点的集成,同时还支持自托管的Hugging Face Sentence-Transformers容器。
-
自动化嵌入更新: pg_vectorize能够自动创建PostgreSQL触发器,以保持嵌入向量的实时更新。
-
高级API: 提供了简洁的高级API,只需一个函数即可初始化嵌入转换,另一个函数用于搜索。
工作原理
pg_vectorize的核心功能是将文本数据转换为嵌入向量,并在PostgreSQL数据库中存储和管理这些向量。它利用了pgvector进行向量相似度搜索,pgmq用于后台工作的编排,以及SentenceTransformers用于生成嵌入。
以下是使用pg_vectorize进行向量搜索的基本步骤:
-
安装和配置: 首先需要在PostgreSQL实例中安装pg_vectorize扩展及其依赖项。
-
初始化向量化: 使用
vectorize.table()
函数来初始化对特定表的向量化处理。这将创建一个新的嵌入列并填充数据。 -
执行搜索: 使用
vectorize.search()
函数来执行向量搜索,返回最相似的结果。
实际应用示例
让我们通过一个简单的产品搜索示例来展示pg_vectorize的强大功能:
-- 创建产品表并插入示例数据
CREATE TABLE products (LIKE vectorize.example_products INCLUDING ALL);
INSERT INTO products SELECT * FROM vectorize.example_products;
-- 初始化向量化处理
SELECT vectorize.table(
job_name => 'product_search_hf',
"table" => 'products',
primary_key => 'product_id',
columns => ARRAY['product_name', 'description'],
transformer => 'sentence-transformers/all-MiniLM-L6-v2',
schedule => 'realtime'
);
-- 执行向量搜索
SELECT * FROM vectorize.search(
job_name => 'product_search_hf',
query => 'accessories for mobile devices',
return_columns => ARRAY['product_id', 'product_name'],
num_results => 3
);
这个例子展示了如何快速设置一个产品搜索系统,能够基于产品名称和描述进行语义搜索。
RAG应用
pg_vectorize还支持检索增强生成(RAG)应用。以下是一个简单的RAG示例:
-- 初始化RAG项目
SELECT vectorize.init_rag(
agent_name => 'product_chat',
table_name => 'products',
"column" => 'context',
unique_record_id => 'product_id',
transformer => 'sentence-transformers/all-MiniLM-L6-v2'
);
-- 使用RAG进行问答
SELECT vectorize.rag(
agent_name => 'product_chat',
query => 'What is a pencil?',
chat_model => 'openai/gpt-3.5-turbo'
) -> 'chat_response';
这个例子展示了如何使用pg_vectorize创建一个能够回答产品相关问题的聊天机器人。
结论
pg_vectorize为开发人员提供了一种简单而强大的方式来在PostgreSQL数据库中实现AI驱动的功能。无论是构建智能搜索系统还是创建复杂的RAG应用,pg_vectorize都能大大简化开发过程,使得AI技术的集成变得前所未有的简单。
通过利用PostgreSQL的强大功能和灵活性,pg_vectorize为构建下一代AI应用铺平了道路。无论您是在开发产品搜索、智能客户服务还是知识管理系统,pg_vectorize都能为您提供所需的工具和功能。
随着AI技术的不断发展,pg_vectorize将继续evolve,为开发者提供更多强大的功能和更简单的使用体验。如果您正在寻找一种简单而高效的方式来在PostgreSQL上构建AI工作负载,pg_vectorize无疑是一个值得考虑的选择。
立即在Tembo Cloud上试用pg_vectorize,体验AI驱动的数据库功能的未来!