通义千问大模型数据推理和交互

本文介绍了如何通过扩展的SQL在PolarDB上使用通义千问大模型,并通过模型生成的数据来和数据库中的数据进行交互。

简介

通义千问大模型基于Transformer大语言模型,在超大规模的预生成模型数据上进行操作。预创建模型数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。

为了帮助您更好地理解和使用PolarDB AIGC的相关功能,PolarDB for AI将阿里云通义千问模型部署到了PolarDB上,作为PolarDB的一个内置模型。同时,PolarDB for AI扩展了SQL的语法,方便用户在数据库内调用通义千问。此外,PolarDB预置了一些场景,您可以按照本文档的使用说明部分,实现开箱即用。

典型场景

  • 情感分析

    分析一句话的情感倾向。主要用于电商评论分析、新闻报道的倾向性分析、舆情分析等。

  • 生成正面/负面评价

    根据一篇内容,生成正面或者负面的评价。

  • 总结

    根据一篇内容,生成对这篇文章的总结。

  • 翻译

    将一篇中文内容翻译成英文,或者将其他语言(包括英文在内)的内容翻译成中文。

  • 对话

    根据一段内容生成答案。这个内容也可以带有一些显式的提示(prompt),答案将根据提示(prompt)生成。

使用说明

语法

根据模型是否上传并部署在PolarDB for AI上,可将通义千问模型推理分为在线推理和离线推理两种方式。具体的语法说明如下:

--在线推理
/*polar4ai*/SELECT * FROM PREDICT (MODEL modelname, SELECT col FROM tablename) with ()
/*polar4ai*/SELECT * FROM PREDICT (MODEL modelname, SELECT text) with ()

--离线推理
/*polar4ai*/SELECT * FROM PREDICT (MODEL modelname, SELECT col FROM tablename) with (mode='async')
/*polar4ai*/SELECT * FROM PREDICT (MODEL modelname, SELECT text) with (mode='async')
说明

关于模型上传和部署的更多细节,请参见模型使用流程及说明

参数说明

参数名称

参数说明

tablename

表名。

col

表的列名,也是模型的输入。

modelname

模型名称,需要根据场景类型指定,取值如下:

  • 情感分析:_polar4ai_tongyi_sa

  • 生成正面/负面评价

    • 生成正面评价:_polar4ai_tongyi_p_comment

    • 生成负面评价:_polar4ai_tongyi_n_comment

  • 总结:_polar4ai_tongyi_summarize

  • 翻译:

    • 翻译成中文:_polar4ai_tongyi_tran_2_zh

    • 翻译成英文_polar4ai_tongyi_tran_2_en

  • 对话:_polar4ai_tongyi

text

纯文本。支持不建表直接执行,适合接口调用的场景。

mode

模式。

  • 取值为async时,表示离线推理;

  • 不设置该参数时,表示在线推理。

说明

更多关于在线推理和离线推理的使用说明,请参见模型推理

使用限制

  • 为了保证查询性能,在线预测默认只支持对单条数据的处理。如果有多条数据,只会取第一条。离线预测可以预测多条数据。

  • 目前通义千问的token数为8000,但因为模型计算资源有限,如果结果不能在10秒内生成,则不会产生最终结果。这种情况下您可以增加AI节点,从而提高性能。

示例

数据准备

  1. 执行如下SQL语句创建名为textinfo的表。

    CREATE TABLE IF NOT EXISTS textinfo (
        id INT NOT NULL,
        content TEXT NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  2. 分别执行如下SQL语句,在textinfo表中添加如下数据:

    INSERT INTO textinfo (id,content) VALUES (1,"这个东西只是看着还行,实际体验上非常的不好,不推荐大家购买。")
    INSERT INTO textinfo (id,content) VALUES (2,"华为最新手机Mate 60 Pro自开卖后销售火爆,目前已缺货。知名分析师郭明錤周一发文称,大幅提升Mate 60 Pro的出货量预期,华为对于产业和股市的影响力不可忽视,这种影响力正在回归中。")
    INSERT INTO textinfo (id,content) VALUES (3,"今年暑期档最大的变化是:好莱坞大片的失败,与现实题材的国产片大行其道。
    过去,好莱坞大片讲究炫目视效,在题材上以动作、奇幻、冒险为主,主要靠视觉轰炸。而在后疫情时代,观众则越来越关注现实的、切身的内容。
    今年的TOP 10电影,现实题材几乎屠榜。
    《消失的她》捆绑反恋爱脑与泰国杀妻等热门话题、《八角笼中》深度挖掘王宝强的人生经历主打草根逆袭;《孤注一掷》则切中人们对电信诈骗、缅甸诈骗园、荷官设局等社会热点的好奇;《热烈》也聚焦了普通人、小人物的成长路线。
    回顾近几年的中国电影市场,现实题材其实早就开始拔尖。
    2018年《我不是药神》,以31亿票房拿下当年暑期档冠军。2019年的《扫毒2》、2021年《怒火·重案》《中国医生》,再到2022年的《人生大事》……还有其他档期的《奇迹·笨小孩》《我的姐姐》等等。")
    INSERT INTO textinfo (id,content) VALUES (4,"30个字以内回答我你是谁")

体验通义千问模型推理

场景一:情感分析

分析一句话的情感倾向。主要用于电商评论分析、新闻报道的倾向性分析、舆情分析等。

/*polar4ai*/ SELECT * FROM PREDICT (MODEL _polar4ai_tongyi_sa, SELECT content FROM textinfo WHERE id=1) WITH ();

返回结果:

负向

场景二:生成正面/负面评价

根据一篇内容,生成正面或者负面的评价。

  • 生成正面评价:

    /*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_tongyi_p_comment, SELECT content FROM textinfo WHERE id=2) with ()

    返回结果:

    华为Mate 60 Pro自开卖后销售火爆,显示出消费者对于华为品牌的认可和支持。华为作为中国知名科技企业,其在手机市场上的表现一直备受关注。郭明錤的发文进一步证实了华为在产业和股市上的影响力,这表明华为正在逐步回归到其应有的地位。华为的影响力不仅体现在其产品销售上,还体现在其对于整个科技产业和股市的推动作用。我们应该鼓励和支持像华为这样的优秀企业,促进中国科技产业的持续发展。
  • 生成负面评价:

    /*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_tongyi_n_comment, SELECT content FROM textinfo WHERE id=2) with ();

    返回结果:

    华为Mate 60 Pro的销售火爆让人感到意外,但同时也表明消费者对于华为品牌的认可度和支持度依然很高。然而,这也可能与当前全球科技市场的不稳定因素有关。华为作为一家中国公司,在国际市场上一直受到政治和经济压力,这可能会影响其销售业绩。此外,知名分析师郭明錤的言论可能过于乐观,忽视了华为目前面临的挑战和困难。综上所述,华为的影响力虽然在回归中,但其未来的市场表现仍需要谨慎对待。

场景三:总结

根据一篇内容,生成对这篇文章的总结。

/*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_tongyi_summarize, SELECT content FROM textinfo WHERE id=3) with ();

返回结果:

今年暑期档最大的变化是现实题材电影大受欢迎,好莱坞大片则表现不佳。中国电影市场中,现实题材电影早已成为主流,包括《我不是药神》、《扫毒2》、《怒火·重案》等多部影片都取得了高票房。

场景四:翻译

将一篇中文内容翻译成英文,或者将其他语言(包括英文在内)的内容翻译成中文。

/*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_tongyi_tran_2_en, SELECT content FROM textinfo WHERE id=1) with ();

返回结果:

The item looks okay, but the actual experience is very poor. I don't recommend buying it.

场景五:对话

根据一段内容生成答案。这个内容也可以带有一些显式的提示(prompt),答案将根据提示(prompt)生成。

/*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_tongyi, SELECT content FROM textinfo WHERE id=4) with ();

返回结果:

我是阿里巴巴达摩院开发的一款超大规模语言模型,我叫通义千问。

此外,您也可以直接输入文本,得到结果。例如对“场景五:对话”这个例子,也可以执行:

/*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_tongyi, SELECT '30个字以内回答我你是谁') with ();

返回结果:

我是阿里巴巴达摩院开发的一款超大规模语言模型,我叫通义千问。