使用GenAI和Azure Database for PostgreSQL构建智能应用

本文介绍了如何通过Azure AI扩展将生成式AI能力集成到PostgreSQL数据库中,实现语义搜索、情感分析和机器学习推理,提升应用智能化和数据安全性。

使用GenAI和Azure Database for PostgreSQL构建智能应用

生成式AI正在改变现代应用的构建、部署和扩展方式。开发人员现在可以使用简单的SQL命令在数据库内运行文本摘要。Azure Database for PostgreSQL提供了直接与Azure AI服务集成的能力,使开发人员能够将GenAI功能直接用于数据层,简化工作流程,自动化洞察,并提供更高级的用户体验。

Azure AI Extension for PostgreSQL

Azure AI extension for PostgreSQL是一个强大的附加组件,使开发人员能够将AI能力直接引入托管在Azure上的PostgreSQL数据库。该扩展能够轻松地将Azure的高级AI服务(包括OpenAI、认知服务和Azure机器学习)集成到数据工作流中,而无需将数据移出数据库环境。

核心功能

扩展的核心在于专用模式,这些模式指向各种Azure AI服务。AI能力通过这些模式模块化,帮助开发人员专注于特定服务。

模式 角色
azure_openai 将数据库连接到大型语言模型,用于文本生成、摘要和自然语言处理等任务。
azure_cognitive 提供对预构建认知服务的访问,包括视觉、语音和语言API。
azure_ml 将数据库与Azure机器学习模型集成,用于运行自定义预测和推理。

优势

通过使用Azure AI扩展PostgreSQL,您可以:

  • 保持数据安全和原位:在不将数据移出数据库的情况下执行AI操作。
  • 简化开发:使用熟悉的SQL调用AI模型和服务,减少对自定义应用逻辑的需求。
  • 智能扩展:利用Azure的托管AI基础设施和完全托管的数据库。
  • 加速创新:使用集成的AI功能快速构建智能功能,如聊天机器人、内容生成或智能推荐。

配置和启用(简化)

要开始使用,请遵循以下基本步骤:

  1. 启用扩展:
1
CREATE EXTENSION IF NOT EXISTS azure_ai;
  1. 设置服务端点和密钥:
1
2
SELECT azure_ai.set_setting('azure_openai.endpoint', 'https://<your-endpoint>.openai.azure.com');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '<your-api-key>');
  1. 验证配置:
1
2
SELECT azure_ai.get_setting('azure_openai.endpoint');
SELECT azure_ai.version();

Azure OpenAI集成

Azure AI扩展的Azure OpenAI模式促进了PostgreSQL嵌入向量的生成和使用,这些向量是文本的密集数值表示,代表了文本的语义含义。使用这些嵌入,您的应用可以超越基本的关键词搜索,进行语义搜索、相似性搜索和检索增强生成(RAG)。

什么是嵌入?

嵌入是帮助表示文本含义的高维向量。它们通过考虑单词和短语的关系和上下文来揭示单词背后的真实含义。向量空间中更接近的向量是由相似文本生成的。它们使您的系统能够意识到单词之间的关系,如“dog”和“puppy”,尽管它们之间可能存在差异。这使得语义搜索、推荐和内容分组更加智能和精确。

最小SQL示例:创建嵌入

使用部署的Azure OpenAI模型生成嵌入:

1
SELECT azure_openai.create_embeddings('text-model', 'sample text');
  • ’text-model’指的是您部署的嵌入模型的名称(例如,text-embedding-ada-002)。
  • ‘sample text’是要向量化的输入字符串。

结果是一个表示语义内容的浮点数向量。

使用嵌入进行语义搜索

一旦存储,嵌入让您基于含义而不是关键词比较文本。这支持以下用例:

  • 语义搜索:找到与用户查询含义相似的内容。
  • 相似性比较:分组相关的文档、文章或消息。
  • 推荐:根据上下文向用户推荐相关内容。

为了高效存储和查询嵌入,最好将此集成与pgvector结合使用。pgvector是一个用于处理向量数据类型的PostgreSQL扩展。使用pgvector,您可以将嵌入存储在向量列中,并使用SQL运行快速相似性搜索。azure_openai模式和pgvector一起将您的PostgreSQL数据库变成一个强大的语义搜索引擎,将生成式AI更接近您的数据。

Azure认知服务集成

Azure AI扩展中的Azure认知服务模式将强大的预构建AI模型直接引入您的PostgreSQL数据库。通过此集成,您可以在数据旁边运行情感分析、语言检测、文本摘要和实体识别等任务。

Azure认知服务为常见自然语言任务提供即用型模型:

  • 情感分析:理解文本是否表达积极、消极或中性情感。
  • 语言检测:自动检测任何文本输入的语言。
  • 文本摘要:从较长的文本生成简洁摘要。
  • 实体识别:从文本中提取重要实体,如名称、日期和位置。

在SQL中的工作原理

您可以直接从SQL查询调用认知服务函数。例如,分析短文本的情感:

1
SELECT azure_cognitive.analyze_sentiment('Great product', 'en');
  • ‘Great product’是输入文本。
  • ’en’指定语言(英语)。
  • 结果包括情感分类和置信度分数。

其他函数遵循类似模式:

1
2
3
SELECT azure_cognitive.detect_language('Bonjour tout le monde');
SELECT azure_cognitive.extract_entities('Satya Nadella is the CEO of Microsoft.');
SELECT azure_cognitive.summarize_text('Long-form content goes here...');

在PostgreSQL数据库内存储认知分析使您能够更好地控制和简化AI流程。您可以在不离开其家园的情况下丰富和管道文本,而不是将数据复制到其他服务并处理复杂的管道。这种策略有几个好处:

  • 更好的数据安全性:包含敏感细节的信息保留在数据库内,减少了在数据传输过程中被泄露的可能性。
  • 减少延迟:在本地执行认知任务意味着响应时间更低,这在实时场景中使用时至关重要。
  • 简单的架构:您不需要创建和支持额外的集成层、外部存储系统。
  • 减少AI应用:更容易将智能功能(如反馈分析、内容审核、智能标记和文本分类)集成到您的应用中。
  • 改进的可扩展性:当您处理高文本量时,使用本地数据的认知功能扩展变得轻而易举。

Azure机器学习集成

Azure AI扩展中的Azure ML模式使PostgreSQL能够调用托管在Azure机器学习上的自定义机器学习模型。此集成允许开发人员直接从SQL执行实时推理,简化工作流并减少架构复杂性。

以下是如何调用部署模型的最小示例:

1
2
3
4
5
6
7
SELECT azure_ml.inference('{
"input_data": {
"feature1": 3.5,
"feature2": "blue",
"feature3": true
}
}'::jsonb);

input_data对象包含您的模型期望的特征。结果是一个包含模型预测或输出的JSONB对象。

灵活的基于JSON的输入/输出

这种方法支持广泛的ML场景:

场景 输入格式示例 输出格式示例
分类 { “input_data”: { “age”: 25, “income”: 50000 } } { “prediction”: “Approved”, “confidence”: 0.92 }
回归 { “input_data”: { “sqft”: 1200, “location”: “urban” } } { “price_estimate”: 350000 }
预测 { “input_data”: { “date”: “2025-07-01”, “sales”: 120 } } { “forecast”: 135 }
异常检测 { “input_data”: { “sensor”: “X1”, “value”: 0.003 } } { “is_anomaly”: true }
  • 只有具有azure_ai_settings_manager角色的用户才能配置端点和密钥。
  • 使用Azure Key Vault进行安全凭据管理和轮换。
  • 确保您的模型端点已部署并通过REST API可访问。

实际用例

让我们看一些用例:

情感分析和意见挖掘

情感分析使您能够快速了解客户反馈是消极、积极还是中性。直接在数据库内运行此功能意味着您可以存储大量评论、评论或甚至调查答案,而无需额外工具。

使用它来:

  • 客户洞察:识别满意度的驱动因素和痛点
  • 品牌监控:跨渠道跟踪公众感知
  • 决策支持:为产品开发和营销策略提供信息

数据库级分析

通过在Azure Database for PostgreSQL内直接执行情感分析,企业受益于:

  • 可扩展性:分析大量反馈而无需外部管道
  • 效率:通过将数据和分析共置减少延迟
  • 安全性:在数据库内维护治理和访问控制

应用:

  • 反馈监控:分析NPS调查、应用评论和支持日志
  • 内容个性化:根据用户情感定制消息
  • 客户服务分类:根据情感紧迫性优先处理票证

语义相似性搜索

传统的关键词搜索匹配确切的单词,但可能不搜索查询的实际含义。语义相似性搜索通过在多维空间中封装文本的上下文和含义通过嵌入向量来克服这一点。

如果您愿意,您的嵌入还可以使用PostgreSQL中的PGvector扩展与高效的向量操作(如余弦相似性或内积)进行比较。这将使您能够根据含义与查询的接近程度而不是使用的单词来排名结果。

实际示例包括:

  • 在电子商务中提供更智能的产品搜索,定位具有相同描述或评论的其他产品。
  • 创建推荐引擎,用于通过含义推荐相关文章、文档或产品。
  • 这种语义知识库或FAQ点火可以为知识库或FAQ提供动力,并给人们最相关的答案,即使他们含糊或措辞不同。

最后 thoughts

生成式AI的参与是设计和实施智能应用的重要一步,这些应用集成到Azure Database PostgreSQL中。与开源和SQL平台(如PostgreSQL)合作,数据库为开发人员提供了并行实施AI功能的能力。它通过扩展与Azure OpenAI、Azure认知服务和Azure机器学习一起工作,为他们提供了扩展大规模工作流的机会,这些工作流包含语义理解、即时推理和扩展分析。

这种方法通过以下方式帮助简化应用开发:

  • 减少架构复杂性
  • 提高数据局部性和整体性能
  • 提供对高级AI服务的安全、SQL原生访问

当您实施这些功能时,您应该考虑GenAI是否适合您的用例。这并不总是意味着我们需要在数据层中使用AI;性能取决于数据量、延迟要求和模型复杂性。完全避免权衡一个与另一个,并同时考虑技术可行性和业务价值,以便您的解决方案在大规模上带来所需的影响。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计