现代企业面临海量非结构化数据,如客户支持记录、邮件往来、法律文档等。传统上,从中提取有效信息需要复杂的数据科学流程、NLP模型、API集成和编排工具。而 Snowflake Cortex LLM 的出现,彻底改变了这一局面。它是一个在数据云中原生运行的预训练大语言模型(LLM)函数套件,让你无需离开SQL环境,就能轻松驾驭非结构化数据,实现 AI驱动的洞察。本文将带你亲身体验如何使用 Snowflake Cortex LLM 分析呼叫中心记录,感受其强大功能和易用性。

Cortex LLM 简介:SQL即AI

Snowflake Cortex LLM 核心在于它将复杂的人工智能任务抽象为简单的SQL函数。无需学习复杂的ML框架、部署API或将数据移出Snowflake,你只需编写几行SQL代码,就能完成文档摘要、分类、问答、情感分析和翻译等任务。这极大降低了AI应用的门槛,让更多业务人员能够参与到数据分析中来。

Cortex LLM 的优势体现在以下几个方面:

  • 简单性: 无需机器学习专业知识,仅通过SQL即可调用强大的LLM功能。
  • 易用性: 将复杂的LLM工作负载简化为一行SQL函数。
  • 安全性: 数据始终在Snowflake内部,由你完全控制。
  • 高性能: 利用Snowflake原生的计算资源进行扩展,无需额外基础设施。

环境搭建:为LLM分析做好准备

在使用 Snowflake Cortex LLM 之前,我们需要搭建一个干净的环境,包括创建数据库、配置计算仓库、设置Schema和准备用于文件上传的Stage。

  1. 创建数据库:

    CREATE DATABASE IF NOT EXISTS LLM_CORTEX_DEMO_DB;
    

    这条命令初始化一个专门用于存储本次实验相关对象的数据库。

  2. 创建计算仓库:

    CREATE OR REPLACE WAREHOUSE USER_STD_XSMALL_WH
    WITH
        WAREHOUSE_SIZE = 'XSMALL'
        WAREHOUSE_TYPE = 'STANDARD'
        AUTO_SUSPEND = 60
        AUTO_RESUME = TRUE
        INITIALLY_SUSPENDED = TRUE;
    

    这定义了一个轻量级的计算资源,用于运行你的SQL和 Cortex LLM 查询,并启用了自动挂起功能,以提高成本效益。WAREHOUSE_SIZE 定义了计算资源的大小,AUTO_SUSPEND 定义了自动挂起前的空闲时间(秒),AUTO_RESUME 则允许计算仓库在接收到查询时自动恢复。

  3. 创建Schema:

    CREATE SCHEMA IF NOT EXISTS LLM_CORTEX_DEMO_DB.RAW;
    CREATE SCHEMA IF NOT EXISTS LLM_CORTEX_DEMO_DB.STAGE;
    

    RAW schema用于存放原始文件,STAGE schema用于存放解析和转换后的内容。

  4. 创建内部Stage:

    CREATE OR REPLACE STAGE LLM_CORTEX_DEMO_DB.RAW.INT_STAGE_DOC_RAW
        DIRECTORY = ( ENABLE = TRUE )
        ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
    

    这条命令创建了一个安全、加密的内部Stage,用于在解析之前保存PDF文档。DIRECTORY = ( ENABLE = TRUE ) 允许从Stage读取目录中的文件。

  5. 上传PDF文件:

    在Snowsight中,点击Databases标签,导航到LLM_CORTEX_DEMO_DB > RAW > INT_STAGE_DOC_RAW,使用+ Files按钮上传你的.pdf记录文件。上传完成后,这些文件将可以通过@LLM_CORTEX_DEMO_DB.RAW.INT_STAGE_DOC_RAW访问。

文档解析:提取非结构化数据的关键信息

Snowflake Cortex LLM 提供了强大的文档解析功能,可以将上传的非结构化文档转换为结构化数据,方便后续分析。

  1. 设置执行上下文:

    USE DATABASE LLM_CORTEX_DEMO_DB;
    USE SCHEMA STAGE;
    USE WAREHOUSE USER_STD_XSMALL_WH;
    

    确保你在正确的数据库、Schema和仓库中操作。

  2. 创建Transcript表:

    CREATE OR REPLACE TABLE LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT (
        FILE_NAME STRING,
        TRANSCRIPT VARCHAR
    );
    

    这个表将存储每个记录的解析内容以及文件名。

  3. 使用PARSE_DOCUMENT函数解析文档:

    INSERT INTO LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT
    SELECT
        FILE_NAME,
        TO_VARCHAR(
            SNOWFLAKE.CORTEX.PARSE_DOCUMENT(
                @LLM_CORTEX_DEMO_DB.RAW.INT_STAGE_DOC_RAW,
                FILE_PATH,
                { 'mode': 'LAYOUT' }
            ):content::string
        ) AS TRANSCRIPT
    FROM (
        SELECT DISTINCT
            METADATA$FILENAME AS FILE_PATH,
            SPLIT_PART(METADATA$FILENAME, '/', -1) AS FILE_NAME
        FROM
            @LLM_CORTEX_DEMO_DB.RAW.INT_STAGE_DOC_RAW
    ) AS A;
    

    这个语句处理每个Stage中的PDF文件,使用PARSE_DOCUMENT函数提取内容,并将结果插入到TRANSCRIPT表中。METADATA$FILENAME 是Snowflake提供的用于获取文件元数据的内置变量,SPLIT_PART 函数用于提取文件名。'mode': 'LAYOUT'参数指示解析器保持文档的布局结构。

  4. 预览解析后的输出:

    SELECT
        FILE_NAME,
        TRANSCRIPT
    FROM
        LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT;
    

    验证你的PDF文件是否已成功解析并存储。

情感分析:挖掘客户情绪,提升服务质量

情感分析 是理解客户反馈的关键。Snowflake Cortex LLM 提供了强大的情感分析功能,可以帮助你快速了解客户的情绪,从而改进服务质量。

SELECT
    SNOWFLAKE.CORTEX.SENTIMENT(TRANSCRIPT) AS SENTIMENT
FROM
    LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT
WHERE
    FILE_NAME = 'audiofile11.pdf';

这个查询使用 SNOWFLAKE.CORTEX.SENTIMENT 函数来分析指定记录文本的情感,结果将返回 “Positive”、“Negative” 或 “Neutral” 等情感类别。例如,如果大量记录的情感为负面,则可能表明客户对某个产品或服务的体验不佳,需要进行改进。

更进一步,可以使用 ENTITY_SENTIMENT 函数来检测文本中特定实体或主题的情感,从而进行更有针对性的情感分析。

SELECT
    f.value:name::string AS category,
    f.value:sentiment::string AS sentiment
FROM
    LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT t,
    LATERAL FLATTEN(
        input => SNOWFLAKE.CORTEX.ENTITY_SENTIMENT(
            t.TRANSCRIPT,
            ARRAY_CONSTRUCT('Tone of voice', 'Issue Resolved', 'Follow up action')
        ):categories
    ) f
WHERE
    t.FILE_NAME = 'audiofile11.pdf';

此示例提取记录中关于“语气”、“问题解决”和“后续行动”的情感。使用 ARRAY_CONSTRUCT 函数定义要分析的实体列表,然后使用 LATERAL FLATTEN 函数将 ENTITY_SENTIMENT 函数返回的 JSON 结果展平,以便更方便地进行分析。 通过分析这些实体的情感,企业可以深入了解客户对特定方面的满意度。例如,如果客户对问题的解决持积极态度,但对后续行动持消极态度,则可能表明需要改进后续服务。

文本分类:自动识别问题类型,提升工作效率

文本分类 是将文本分配到预定义类别中的过程。 Snowflake Cortex LLM 的文本分类功能可以自动识别问题类型,从而提高工作效率。

SELECT
    TRANSCRIPT,
    SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
        TRANSCRIPT,
        ARRAY_CONSTRUCT('Incident', 'Complaint', 'Follow up')
    ) AS JSON_RESPONSE,
    JSON_RESPONSE:label::string AS CLASSIFCIATION
FROM
    LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT
WHERE
    FILE_NAME = 'audiofile11.pdf';

在这个例子中,CLASSIFY_TEXT 函数将记录文本分类为 “Incident”、“Complaint” 或 “Follow up” 中的一个类别。 ARRAY_CONSTRUCT 函数定义了分类的类别列表。通过自动分类记录,可以快速识别不同类型的问题,并将其分配给相应的团队进行处理。

高级用法可以提供更精细的分类,例如,可以提供每个类别的描述和示例,以提高分类的准确性。

SELECT
    SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
        TRANSCRIPT,
        ARRAY_CONSTRUCT(
            OBJECT_CONSTRUCT(
                'label', 'Tone of voice',
                'description', 'How the speaker sounds during the call (e.g., calm, angry)',
                'examples', ARRAY_CONSTRUCT('The agent was calm and professional')
            ),
            OBJECT_CONSTRUCT(
                'label', 'Issue Resolved',
                'description', 'Whether the customer''s problem was resolved',
                'examples', ARRAY_CONSTRUCT('The issue with my account was fixed')
            ),
            OBJECT_CONSTRUCT(
                'label', 'Follow up action',
                'description', 'Actions promised or required after the call',
                'examples', ARRAY_CONSTRUCT('The support team will call me tomorrow')
            )
        )
    ) AS JSON_RESPONSE,
    JSON_RESPONSE:label::string AS CLASSIFCIATION
FROM
    LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT
WHERE
    FILE_NAME = 'audiofile11.pdf';

通过为每个类别提供更详细的上下文信息, Snowflake Cortex LLM 可以更准确地对文本进行分类。这对于需要高精度分类的场景非常有用。

文本翻译:打破语言障碍,拓展国际市场

文本翻译 是将文本从一种语言转换成另一种语言的过程。 Snowflake Cortex LLM 提供了强大的文本翻译功能,可以帮助你打破语言障碍,拓展国际市场。

SELECT
    SNOWFLAKE.CORTEX.TRANSLATE(TRANSCRIPT,'en_XX','fr_FR') AS "TRANSLATION"
FROM
    LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT
WHERE
    FILE_NAME = 'audiofile11.pdf';

这个查询使用 SNOWFLAKE.CORTEX.TRANSLATE 函数将记录文本从英语(en_XX)翻译成法语(fr_FR)。 通过自动翻译记录,可以轻松地与来自不同国家和地区的客户进行沟通,拓展国际市场。

假设一家跨国公司需要分析来自全球各地的客户反馈。使用 Snowflake Cortex LLM 的翻译功能,可以将所有反馈翻译成同一种语言,然后进行统一分析。这可以帮助公司更好地了解全球客户的需求,并提供更个性化的服务。

文本生成:COMPLETE函数赋能无限可能

COMPLETE 函数是 Snowflake Cortex LLM 中最强大的功能之一,它支持通用文本生成,可以用于摘要、提取、重写、问答和转换文本等多种自然语言处理任务。

SELECT
    SNOWFLAKE.CORTEX.COMPLETE(
        'snowflake-arctic',
        'Identify the name of the caller in the transcript: ' || TRANSCRIPT
    ) AS COMPLETION
FROM LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT
WHERE FILE_NAME = 'audiofile11.pdf';

这个例子使用 COMPLETE 函数从记录文本中提取呼叫者的姓名。 'snowflake-arctic' 参数指定要使用的模型。通过提供不同的提示,你可以使用 COMPLETE 函数执行各种文本生成任务。

高级用法可以使用结构化的、基于角色的提示来创建类似聊天的体验。

SELECT
    SNOWFLAKE.CORTEX.COMPLETE(
        'snowflake-arctic',
        [
            {
                'role': 'system',
                'content': 'You are a professional summarizer. Extract key information clearly and concisely.'
            },
            {
                'role': 'user',
                'content': 'Summarize this transcript in 1-2 sentences: ' || TRANSCRIPT
            }
        ],
        {
            'temperature': 0.3,
            'top_p': 0.9,
            'max_tokens': 200
        }
    ) AS JSON_RESPONSE,
    JSON_RESPONSE:choices[0]:messages::string As "MESSAGE",
    JSON_RESPONSE:model::string AS "MODEL",
    JSON_RESPONSE:usage:completion_tokens::number AS "COMPLETION_TOKENS",
    JSON_RESPONSE:usage:prompt_tokens::number AS "PROMPT_TOKENS",
    JSON_RESPONSE:usage:total_tokens::number AS "TOTAL_TOKENS"
FROM
    LLM_CORTEX_DEMO_DB.STAGE.TRANSCRIPT
WHERE
    FILE_NAME = 'audiofile11.pdf';

在这个例子中,我们定义了一个系统角色,指示模型作为一个专业的摘要器。 然后,我们定义了一个用户角色,提供要摘要的记录文本。 temperature 参数控制随机性,较低的值使响应更确定。 top_p 参数控制多样性,通过将token选择范围缩小到最高概率值。 max_tokens 参数指定生成的响应的最大长度。通过调整这些参数,你可以控制 COMPLETE 函数的行为,并获得最佳结果。

总结:SQL赋能,AI洞察触手可及

通过 Snowflake Cortex LLM 和简单的SQL语句,你可以轻松地:

  • 解析非结构化的PDF文档
  • 分析情感并对主题进行分类
  • 翻译、总结和提取关键信息
  • 自动生成文本

所有这些都无需外部API或额外的工具,只需 Snowflake Cortex LLM 。它真正实现了 SQL驱动的AI洞察 ,让数据分析变得更加简单、高效和安全。

下一步:

  • 从 GitHub 下载代码
  • 在 docs.snowflake.com 了解更多信息
  • 注册 Snowflake 试用版

希望本文能帮助你更好地理解和使用 Snowflake Cortex LLM 。 借助 Snowflake Cortex LLM, AI驱动的洞察不再遥不可及,它已经触手可及!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注