这篇文章介绍了如何使用 PostgreSQL 作为向量数据库构建生成式 AI 应用程序。从使用 pgvector 扩展启动 PostgreSQL,加载 Airbnb 数据集,到查找相关房源,还提到了扩展性能和可扩展性的方法,如使用专用索引和分布式版本如 YugabyteDB。
PostgreSQL 拥有丰富的扩展和解决方案生态系统,使我们能够将该数据库用于通用人工智能应用程序。本指南将引导您完成使用 PostgreSQL 作为向量数据库构建生成式 AI 应用程序所需的步骤。
我们将从pgvector 扩展开始,它使 Postgres 具有特定于向量数据库的功能。然后,我们将回顾增强在 PostgreSQL 上运行的 AI 应用程序的性能和可扩展性的方法。最后,我们将拥有一个功能齐全的生成式人工智能应用程序,向前往旧金山旅行的人推荐 Airbnb 房源。
Airbnb的推荐服务
该示例应用程序是住宿推荐服务。想象一下,您计划访问旧金山,并希望住在金门大桥附近的一个不错的街区。您访问该服务,输入提示,应用程序将建议三个最相关的住宿选项。
该应用程序支持两种不同的模式:

- OpenAI 聊天模式:在此模式下,Node.js 后端利用OpenAI 聊天完成 API和 GPT-4 模型根据用户的输入生成住宿推荐。虽然此模式不是本指南的重点,但我们鼓励您尝试一下。
- Postgres Embeddings 模式:最初,后端使用OpenAI Embeddings
API将用户的提示转换为嵌入(文本数据的矢量化表示)。接下来,该应用程序在 Postgres 或 YugabyteDB(分布式PostgreSQL)中进行相似性搜索,以查找与用户提示匹配的 Airbnb 属性。Postgres 利用 pgvector扩展在数据库中进行相似性搜索。本指南将深入研究该特定模式在应用程序中的实现。
先决条件
- 可以访问嵌入模型的OpenAI订阅。
- 最新的Node.js 版本
- 最新版本的Docker
使用 Pgvector 启动 PostgreSQL
pgvector 扩展将向量数据库的所有基本功能添加到 Postgres 中。它允许您存储和处理具有数千个维度的向量,计算向量化数据之间的欧几里德距离和余弦距离,并执行精确和近似最近邻搜索。
- 在 Docker 中使用 pgvector 启动 Postgres 实例:
docker run --name postgresql \ -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password \ -p 5432:5432 \ -d ankane/pgvector:latest
- 连接到数据库容器并打开 psql 会话:
docker exec -it postgresql psql -h 127 .0.0.1 -p 5432 -U postgres
- 启用pgvector扩展:
create extension vector;
- 确认向量存在于扩展列表中:
select * from pg_extension;
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+---------+----------+--------------+----------------+------------+-----------+--------------
13561 | plpgsql | 10 | 11 | f | 1.0 | |
16388 | vector | 10 | 2200 | t | 0.5.1 | |
(2 rows)
加载 Airbnb 数据集
该应用程序使用 Airbnb 数据集,其中包含旧金山列出的 7,500 多个出租房产。每个列表都提供了详细的属性描述,包括房间数量、设施类型、位置和其他功能。该信息非常适合根据用户提示进行相似性搜索。
按照以下步骤将数据集加载到启动的 Postgres 实例中:
- 克隆应用程序存储库:
git clone https://github.com/YugabyteDB-Samples/openai-pgvector-lodging-service.git
- 将 Airbnb 架构文件复制到 Postgres 容器(将 替换{app_dir}为应用程序目录的完整路径):
docker cp {app_dir}/sql

最低0.47元/天 解锁文章
661

被折叠的 条评论
为什么被折叠?



