PostgresML 是 PostgreSQL 生态系统的扩展,允许在数据库中训练、微调和使用各种机器学习和大型语言模型。该扩展将 PostgreSQL 变成了一个完整的 MLOps 平台,支持各种自然语言处理任务,并扩展了 Postgres 作为向量数据库的功能。
该扩展是对 pgvector 的补充,pgvector 是另一个基础扩展,适用于希望使用 Postgres 作为 AI 用例的矢量数据库的应用程序。借助 pgvector,应用程序可以轻松存储和处理由大型语言模型 (LLM) 生成的嵌入。PostgresML 通过在数据库中启用模型的训练和执行来更进一步。
让我们看看 PostgresML 扩展通过使用 PostgreSQL 进行语言翻译任务和用户情绪分析的实际应用。
开始使用 PostgresML 的最简单方法是在 Docker 中部署具有预安装扩展的数据库实例。
使用以下命令在容器中启动带有 PostgresML 的 PostgreSQL,并使用 psql 工具打开数据库会话:
壳
docker run \br
-it \br
-v postgresml_data:/var/lib/postgresql \br
-p 5432:5432 \br
-p 8000:8000 \br
ghcr.io/postgresml/postgresml:2.7.12 \br
sudo -u postgresml psql -d postgresml
容器启动并打开 psql 会话后,请检查 pgml 扩展(PostgresML 的缩写)是否在扩展列表中:
SQL算法
select * from pg_extension;br
br
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extconditionbr
-------+---------+----------+--------------+----------------+------------+-----------+--------------br
13540 | plpgsql | 10 | 11 | f | 1.0 | |br
16388 | pgml | 16385 | 16387 | f | 2.7.12 | |br
(2 rows)
最后,如果运行该命令,你将看到 PostgresML 内部使用的数据库对象列表。\d
SQL算法
\dbr
List of relationsbr
Schema | Name | Type | Ownerbr
--------+-----------------------+----------+------------br
pgml | deployed_models | view | postgresmlbr
pgml | deployments | table | postgresmlbr
pgml | deployments_id_seq | sequence | postgresmlbr
pgml | files | table | postgresmlbr
pgml | files_id_seq | sequence | postgresmlbr
pgml | models | table | postgresmlbr
pgml | models_id_seq | sequence | postgresmlbr
...truncated
PostgresML 与 Hugging Face Transformers 集成,以在 PostgreSQL 中启用最新的自然语言处理 (NLP) 模型。Hugging Face 具有数千个预训练模型,可用于情感分析、文本分类、摘要、翻译、问答等任务。
例如,假设您在 PostgreSQL 中存储一个产品目录,所有产品描述均为英文。现在,您需要为从法国访问您的电子商务网站的客户显示法语描述。
如果有人对 Apple 的 AirTag 感兴趣怎么办?PostgresML 可以使用其中一个翻译转换器来促进从英语到法语的翻译:
SQL算法
SELECT pgml.transform(br
'translation_en_to_fr',br
inputs => ARRAY[br
'AirTag is a supereasy way to keep track of your stuff. br
Attach one to your keys, slip another in your backpack. br
And just like that, they’re on your radar in the Find My app, br
where you can also track down your Apple devices and keep up with br
friends and family.'br
]br
) AS french;br
br
-[ RECORD 1 ]--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------br
french | [{"translation_text": "AirTag est un moyen super facile de suivre vos objets. Attachez-leur à vos clés, glissez-leur dans votre sac à dos. Et comme ça, ils sont sur votre radar dans l’app Find My, où vous pouvez aussi retrouver vos appareils Apple et suivre vos amis et votre famille."}]
如果电子商务网站也迎合西班牙语国家,则可以使用不同的模式将产品描述翻译成西班牙语:
SQL算法
select pgml.transform(br
task => '{"task": "translation", br
"model": "Helsinki-NLP/opus-mt-en-es"br
}'::JSONB,br
inputs => ARRAY[br
'AirTag is a supereasy way to keep track of your stuff. br
Attach one to your keys, slip another in your backpack. br
And just like that, they’re on your radar in the Find My app, br
where you can also track down your Apple devices and keep up with br
friends and family.'br
] br
) as spanish;br
br
-[ RECORD 1 ]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------br
spanish | [{"translation_text": "AirTag es una manera superfácil de hacer un seguimiento de tus cosas. Conecta una a tus llaves, desliza otra en tu mochila. Y así mismo, están en tu radar en la aplicación Find My, donde también puedes rastrear tus dispositivos Apple y mantenerte al día con tus amigos y familiares."}]
总体而言,PostgresML可以通过将已翻译的文本返回回应用层来改善用户体验。
使用 PostgresML 执行更复杂的 ML 和 AI 相关任务怎么样?其中一项任务是对数据库中插入或存储的数据进行情感分析。
想象一下,电子商务网站的客户可以分享他们对产品的反馈。PostgresML可以帮助监控客户对特定产品的情绪,并主动回应各种疑虑和投诉。
例如,一位客户购买了头戴式设备,并分享了 PostgresML 归类为负面的反馈:
SQL算法
SELECT pgml.transform(br
task => 'text-classification',br
inputs => ARRAY[br
'I regret buying this headset. It does not connect to my laptop over Bluetooth.'br
]br
) AS positivity;br
br
-[ RECORD 1 ]----------------------------------------------------br
positivity | [{"label": "NEGATIVE", "score": 0.9996261596679688}]
公司代表及时联系了客户并帮助解决了问题。因此,客户分享了被归类为正面的后续反馈。
SQL算法
SELECT pgml.transform(br
task => 'text-classification',br
inputs => ARRAY[br
'I regret buying this headset. It does not connect to my laptop over Bluetooth.',br
'The problem is solved. Jane reached out to me and helped with the setup. Love the product!'br
]br
) AS positivity;br
br
-[ RECORD 1 ]-------------------------------------------------------------------------------------------------------br
positivity | br
[{"label": "NEGATIVE", "score": 0.9996261596679688}, br
{"label": "POSITIVE", "score": 0.999795138835907}]
就像翻译任务一样,您可以利用 Hugging Face 中的数千个其他模型进行情感分析和其他文本分类任务。例如,以下是切换到 RoBERTa 模型的方法,该模型是在 X (Twitter) 上大约 40,000 个英文帖子上训练的:
SQL算法
SELECT pgml.transform(br
task => '{"task": "text-classification",br
"model": "finiteautomata/bertweet-base-sentiment-analysis"br
}'::jsonb,br
inputs => ARRAY[br
'I regret buying this headset. It does not connect to my laptop over Bluetooth.',br
'The problem is solved. Jane reached out to me and helped with the setup. Love the product!'br
]br
) AS positivity;br
br
-[ RECORD 1 ]----------------------------------------------------------------------------------------------br
positivity | [{"label": "NEG", "score": 0.9769334197044371}, br
{"label": "POS", "score": 0.9884902238845824}]
RoBERTa模型还准确地对评论的情绪进行了分类,使电子商务公司能够在负面反馈进入PostgreSQL后立即解决用户的担忧和投诉。
作为一个向量数据库,Postgres 并不局限于存储和查询嵌入。借助 PostgresML 扩展,Postgres 可以转换为用于各种 AI 和 ML 任务的计算平台。
原文标题:PostgresML: Extension That Turns PostgreSQL Into a Platform for AI Apps
原文链接:
https://dzone.com/articles/postgresml-extension-that-turns-postgresql-into-a
作者:Denis Magda
编译:LCR