你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

什么是 Azure Database for PostgreSQL 灵活服务器的 azure_local_ai 扩展(预览版)

有了 Azure Database for PostgreSQL 灵活服务器的 azure_local_ai 扩展,你就可以使用在本地部署到 Azure Database for PostgreSQL 服务器的已注册且已预训练的开放源代码模型。 这些模型可用于创建文本嵌入,这些嵌入可以在你构建丰富的生成式 AI 应用程序时为检索增强生成 (RAG) 模式提供上下文。  azure_local_ai 扩展使数据库能够调用本地部署的模型,以根据文本数据创建矢量嵌入,这样就无需对 PostgreSQL 边界之外托管的 AI 嵌入模型进行更多远程 API 调用,从而简化了开发过程并降低了延迟。 在此版本中,扩展将单个模型(即 multilingual-e5-small)部署到 Azure Database for PostgreSQL 灵活服务器实例。 其他第三方开放源代码模型可能会持续地可供安装。

本地嵌入可以帮助客户实现以下目的:

  • 降低嵌入创建过程中的延迟。

  • 以可预测的成本使用嵌入模型。

  • 将数据保存在数据库中,无需将数据传输到远程终结点。

在此公共预览版中,azure_local_ai 扩展将在以下 Azure 区域中提供:

 

  • 澳大利亚东部

  • 美国东部

  • 法国中部

  • 日本东部

  • 英国南部

  • 西欧

  • 美国西部

此预览功能仅适用于新部署的 Azure Database for PostgreSQL 灵活服务器实例。

重要

azure_local_ai 扩展目前为预览版。 根据 Microsoft 产品条款,用于通过 Azure 本地 AI 扩展来完成安装的 Microsoft 开放源代码 AI 模型被视为非 Microsoft 产品。 客户对开放源代码 AI 模型的使用受通过 azure_local_ai 扩展提供的此类模型的关联产品文档中提供的单独许可条款的约束。 补充使用条款:受限访问 AI 服务(预览版)

启用 azure_local_ai 扩展(预览版)

在 Azure Database for PostgreSQL 灵活服务器实例上启用 azure_local_ai 之前,你需要按照如何使用 PostgreSQL 扩展中的说明将其添加到允许列表,并通过运行以下 SQL 语句检查其是否已正确添加:SHOW azure.extensions;

重要

在数据库中托管语言模型需要占用大量内存。 为了支持此要求,只有至少具有 4 个 vCore 的内存优化 Azure VM SKU 支持 azure_local_ai。 目前,如果你使用的 VM 不符合最低要求,则 azure_local_ai 扩展将不会显示在“服务器参数”中的可用扩展列表中。 从 Azure Database for PostgreSQL 灵活服务器 Azure 门户页面的“资源菜单”的“设置”部分选择“服务器参数”

PostgreSQL 服务器参数页面的屏幕截图。

搜索“extensions”或“azure.extensions”

屏幕截图显示可用于 Azure Database for Postgresql 灵活服务器允许列表的扩展。

从扩展列表中选择“AZURE_LOCAL_AI”。

屏幕截图显示 Azure 本地 AI 扩展的扩展允许列表。

选择“保存”以应用所做的更改并开始允许列表部署过程。

屏幕截图显示保存到 Azure 本地 AI 扩展的允许列表的扩展。

可以通过 Azure 门户顶部的响铃图标监视此部署。

屏幕截图显示 Azure 本地 AI 扩展的扩展允许列表部署状态。

完成允许列表部署后,就可以继续安装过程。

注意

启用 Azure 本地 AI 预览版会将 multilingual-e5-small 模型部署到 Azure Database for PostgreSQL 灵活服务器实例。 链接的文档提供了来自 e5 团队的许可条款。 其他第三方开放源代码模型可能会持续地可供安装。

现在可通过连接到目标数据库并运行 CREATE EXTENSION 命令来安装扩展。 你需要分别对你希望扩展在其中可用的每个数据库重复运行该命令。

在“Azure 门户 - 服务器参数”页面中,允许基于数据库的列表扩展。

SHOW azure.extensions;

在数据库中创建扩展。

CREATE EXTENSION azure_local_ai;

安装 azure_local_ai 扩展会创建以下架构:

  • azure_local_ai:主体架构,扩展在其中创建表、函数以及实现和公开其功能所需的任何其他 SQL 相关对象。

重要

你希望启用矢量扩展,因为它是在 PostgreSQL 数据库中存储文本嵌入所需的。

azure_local_ai 扩展提供的函数

azure_local_ai 扩展提供了一组函数。 使用这些函数,你可以从文本数据创建矢量嵌入,从而更轻松地开发生成式 AI 应用程序。 该扩展提供了用于创建嵌入的函数、用于获取设置的函数,以及其他函数。 使用这些函数,你无需对托管在 PostgreSQL 边界之外的 AI 嵌入模型进行额外的远程 API 调用,因此可以简化开发过程并降低延迟。

架构 名称 结果数据类型 参数数据类型
azure_local_ai create_embeddings TABLE(embedding real[]) model_uri text, inputs text[], batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000
azure_local_ai create_embeddings real[] model_uri text, input text, timeout_ms integer DEFAULT 3600000
azure_local_ai get_setting jsonb keys text[] DEFAULT ARRAY[]::text[], timeout_ms integer DEFAULT 3600000
azure_local_ai get_setting text key text, timeout_ms integer DEFAULT 3600000
azure_local_ai model_metadata jsonb model_uri text

这些项可以通过 PSQL 命令显示,

\df azure_local_ai.*

azure_local_ai.create_embeddings

azure_local_ai 扩展允许你以标量和批处理格式创建和更新嵌入,调用本地部署的 LLM。

azure_local_ai.create_embeddings(model_uri text, input text, batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000);
azure_local_ai.create_embeddings(model_uri text, array[inputs [text]], batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000);

参数

model_uri

调用后可以创建嵌入项的文本嵌入模型的 text 名称。

input

texttext[] 单个文本或文本数组,具体取决于为其创建嵌入的所用函数的重载。

batch_size

bigint DEFAULT 128 一次要处理的记录数(仅适用于参数 inputtext[] 类型的函数的重载)。

timeout_ms

操作停止之前的 integer DEFAULT 3600000 超时(以毫秒为单位)。

简单的创建嵌入示例:

SELECT azure_local_ai.create_embeddings('model_uri TEXT', 'query: input TEXT');
SELECT azure_local_ai.create_embeddings('multilingual-e5-small:v1', 'query: Vector databases are awesome');
SELECT azure_local_ai.create_embeddings('model_uri TEXT', array['input TEXT', 'input TEXT']);
SELECT azure_local_ai.create_embeddings('multilingual-e5-small:v1', array['Hello', 'World']);

检查 azure_local_ai 扩展版本

SELECT * FROM pg_available_extensions
WHERE NAME ='azure_local_ai';

ONNX 运行时配置

azure_local_ai.get_setting

用于获取配置选项的当前值。

SELECT azure_local_ai.get_setting(key TEXT)

azure_local_ai 支持在 ONNX 运行时服务中查看 ONNX 运行时线程池的配置参数。 目前不允许进行更改。 请参阅 ONNX 运行时性能优化

参数

密钥

key 的有效值为:

  • intra_op_parallelism:设置由 ONNX 运行时线程池用来并行化单个运算符的线程的总数。 默认情况下,我们会尽可能最大化操作内线程的数量,因为它可以大大提高整体吞吐量(默认情况下所有可用的CPU)。
  • inter_op_parallelism:设置由 ONNX 运行时线程池用来并行计算多个运算符的线程的总数。 默认情况下,我们将其设置为最小可能线程数,即 1。 由于线程之间存在频繁的上下文切换,增加它通常会损害性能。
  • spin_control:切换 ONNX 运行时线程池的请求旋转。 禁用时,它使用较少的 CPU,因此会导致更高的延迟。 它默认设置为 true(启用)。

返回类型

TEXT 表示所选设置的当前值。