Snowflake 的 Cortex AI 将强大的人工智能能力直接带入您的 Snowflake 环境。借助 Cortex 对行业领先大语言模型(LLM)的访问,我们可以构建使用企业内部数据的 AI 聊天机器人等工具,而不会牺牲敏感数据的安全性。
这些集成使对话从传统的基于规则的聊天与自动化,转向更灵活的 AI 驱动聊天,更好地理解用户输入并提供更全面的答案。
在本教程中,我将带您高层次了解如何使用 Snowflake Cortex 创建聊天机器人。您将学习如何准备数据、配置 Cortex Search、使用 Document AI 处理非结构化数据、在 Streamlit 中构建聊天机器人界面,并获得一些与外部应用集成的思路。完成后,您将同时具备在 Snowflake 上设计对话式 AI 所需的实践技能与概念理解。
如果您刚接触 Snowflake,建议先学习 Snowflake Foundations 技能路径 以快速入门。您也可以申请Snowflake 免费试用 来动手实践。
什么是 Snowflake Cortex?
从本质上讲,Snowflake Cortex 将 AI 与 LLM 驱动的服务引入 Snowflake 生态系统。本教程将介绍如何将 Cortex 与您的 Snowflake 数据集成,使用 Cortex 的 Search Service 与 Document AI 解析文档文件,通过 Cortex 的检索增强生成(RAG)为现有 LLM 模型提供更多上下文,从而创建一个简单的 Streamlit 聊天机器人应用。
本教程将涵盖:
为构建 Cortex Search 聊天机器人准备整体 Snowflake 环境
利用 Cortex 的 LLM 函数与 Document AI 从文档中提取见解
在 Snowflake 中使用 Streamlit 构建聊天机器人与分析应用
使用 Cortex 的成本结构与注意事项
使用 Cortex 的优势在于其在向量、关键词与语义重排上的原生混合方法,以及基于 RAG 的响应生成,从而提升准确性与针对性。
在 Snowflake 中使用 Streamlit 构建聊天机器人与分析应用,可以利用 Python 开发的灵活性,同时通过将敏感数据保留在安全的 Snowflake 环境中,强化数据安全与治理。
若您想了解 Snowflake Cortex AI 的能力,请查看这篇 关于使用 Cortex AI 处理基础 NLP 任务 (如摘要与情感分析)的教程。
先决条件
在开始构建前,先准备好您的 Snowflake 账号。在该账号中,您需要以下权限:
创建仓库的权限以及 USAGE 权限
数据库权限:USAGE
架构权限:USAGE、CREATE STREAMLIT、CREATE STAGE、CREATE CORTEX SEARCH SERVICE 或 OWNERSHIP
能够在具备相应账号级权限的前提下使用 Document AI。多数情况下,您将使用 Snowflake 的内置角色(例如 ACCOUNTADMIN、SYSADMIN)或具备以下权限的自定义角色:
USAGE(数据库与架构级)
CREATE CORTEX SEARCH SERVICE
在搜索服务对象创建后对其拥有 OPERATE 权限
对于 Cortex,通常需要 CORTEX_USER 角色,并结合对象级授权(USAGE、OPERATE)以与服务交互。
理想情况下,您应熟悉 SQL、Python 与基础 AI 概念。理解 SQL 有助于在 Snowflake 环境与数据中导航;熟悉 Python 则用于构建 Streamlit 应用;掌握 AI 基础概念有助于理解我们在 Cortex Search Service 中用到的组件。
工具方面,我们将主要使用 Snowflake 的 Snowsight(其网页端)。如需本地构建,您需要自备 IDE/文本编辑器。
虽然我们会尽量提供一些数据样例,但理想情况下,您应准备好想要处理的测试语料与数据集。若没有,建议在本教程中使用联邦公开市场委员会(FOMC)会议纪要(来源:Snowflake): FOMC 会议纪要样本 。
如何在 Snowflake Cortex 中构建聊天机器人
好了,开始动手!为了适配更广泛的场景,部分说明会稍显通用。
步骤 1:设置 Snowflake 数据库、架构与仓库
首先为我们的聊天机器人项目创建必要的环境。
CREATE OR REPLACE WAREHOUSE cortex_wh
WITH WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE ;
CREATE OR REPLACE DATABASE cortex_chatbot_db;
CREATE OR REPLACE STAGE cortex_chatbot_db. public . chatbot_stage;
USE DATABASE cortex_chatbot_db;
USE WAREHOUSE cortex_wh; 技术支持
这样可以确保资源隔离并便于成本管理。
步骤 2:加载并准备数据
聊天机器人需要数据来回答问题,数据形式可以是:
结构化数据 :客户信息、交易日志、产品目录。
非结构化数据 :PDF、常见问题、政策文档、知识库。
如果您需要更多关于数据摄取及如何将数据导入 Snowflake 的信息,请查看这篇 数据摄取指南 。
示例:暂存并加载 CSV 文件。
CREATE OR REPLACE TABLE cortex_chatbot_db. public . chatbot_stage. product_faq (
question STRING,
answer STRING
) ;
COPY INTO product_faq
FROM @chatbot_stage / product_faq. csv
FILE_FORMAT = ( TYPE = CSV FIELD_OPTIONALLY_ENCLOSED_BY= '"' ) ; 技术支持
对于非结构化数据(例如 PDF),您可以使用 Cortex Document AI 进行处理。我们将在下一步中介绍如何通过 Cortex Document AI 从非结构化数据源提取数据。
我们要将结构化与非结构化数据都切分为块(chunks),并按需附加元数据,以提升 RAG 的效率。
步骤 3:Document AI 配置与文档解析
接下来介绍如何使用 Document AI 配置用于文档解析的模型。请注意,这一步是可选的,我也鼓励您先尝试用于解析的 Snowflake 默认模型,这些模型已达生产可用,支持 OCR、版面提取与表格检测。目前您并不会在 Cortex Document AI 中直接“训练”自定义模型,但可以按需配置提取模式(如实体提取、表格提取)以适配您的数据。
先从默认解析器开始,只有当您的文档格式复杂或不规则时,再逐步增加高级配置。
在 Snowsight 中打开导航菜单,进入 AI & ML。选择我们的 cortex_wh,然后点击“Build”,接着选择“Create”。
创建构建后,上传文档进行处理。处理完成后,您可以选择使用实体提取或表格提取来抽取数据。实体提取允许您就文档提出问题并获取数据;表格提取则基于文档中定义的字段解析数据。
模型构建后,我们要评估其准确性,并按需进行训练。训练会让模型更贴合您特定文档的结构。完成后,您可以使用该模型或默认模型进行文档解析。此处我们先使用 Snowflake 的默认 AI 解析器。
CREATE OR REPLACE TABLE cortex_chatbot_db. public . chatbot_stage. doc_data AS
SELECT
RELATIVE_PATH,
TO_VARCHAR (
SNOWFLAKE. CORTEX. PARSE_DOCUMENT (
'@cortex_chatbot.public.chatbot_stage' ,
RELATIVE_PATH,
{'mode' : 'LAYOUT' } ) :content
) AS EXTRACTED_LAYOUT
FROM
DIRECTORY( '@cortex_chatbot.public.chatbot_stage' )
WHERE
RELATIVE_PATH LIKE '%.pdf' ; 技术支持
现在数据已进入表中,准备好进行转换。
步骤 4:数据转换与特征提取
为适配聊天交互,需要将文档切分并丰富元数据。切分能提升 Cortex Search 的准确度。
CREATE OR REPLACE TABLE cortex_chatbot_db. public . chatbot_stage. doc_chunks AS
SELECT
relative_path,
BUILD_SCOPED_FILE_URL( @cortex_chatbot.public.chatbot_stage , relative_path) AS file_url,
(
relative_path || ':\n'
|| coalesce ( 'Header 1: ' || c. value [ 'headers' ] [ 'header_1' ] || '\n' , '' )
|| coalesce ( 'Header 2: ' || c. value [ 'headers' ] [ 'header_2' ] || '\n' , '' )
|| c. value [ 'chunk' ]
) AS chunk,
'English' AS language
FROM
cortex_chatbot_db. public . chatbot_stage. doc_data
LATERAL FLATTEN( SNOWFLAKE. CORTEX. SPLIT_TEXT_MARKDOWN_HEADER(
EXTRACTED_LAYOUT,
OBJECT_CONSTRUCT( '#' , 'header_1' , '##' , 'header_2' ) ,
2000 ,
300
) ) c; 技术支持
这段 SQL 做了不少事情,简单概括一下:它将每个文件的文本展平为长度为 2000 个字符的块。
将文本切分为更小部分有助于提升搜索效率。同时,它会将一些标题信息(如标题)加入到块内的数据中,以便模型了解这些数据的来源上下文。
这样,您的数据就具备可搜索性,并已为检索增强生成(RAG)做好准备。
步骤 5:创建并配置 Cortex Search 或 Agent
我们来构建 Cortex Search Agent,它是搜索文本块并提取响应上下文的核心服务。
CREATE OR REPLACE CORTEX SEARCH SERVICE cortex_chatbot_db. public . chatbot_stage. cortex_serv
ON chunk
ATTRIBUTES category
WAREHOUSE = cortex_wh
TARGET_LAG = '1 hour'
AS (
SELECT
chunk,
relative_path,
file_url,
category
FROM cortex_chatbot_db. public . chatbot_stage. doc_chunks
) ; 技术支持
这将创建一个初始服务,同时定义 attributes 字段,用于选择要用于搜索结果筛选的列。这里我选择了“category”,以便理论上可以按不同产品类别进行筛选。本例中我选择了包含我们切分文本的 chunk 列等。
Cortex Search 默认采用向量 + 关键词的混合搜索,提升聊天机器人的准确性。在此基础上,我们还能通过语义模型添加进一步的上下文。如果您预期会出现独特表述或技术缩写,可以使用 Cortex Analyst 的语义模型生成器配置语义模型 YAML 文件。这将允许您向模型提供上下文与同义词,使其能够识别诸如“CUST”也可能表示“customer”。
这使得 RAG 工作流成为可能:聊天机器人在生成回答前先检索相关上下文。
步骤 6:使用 Streamlit 构建聊天机器人应用
现在我们在 Snowflake 内使用 Streamlit 构建一个非常简单的聊天机器人前端。您可以在 Snowsight 中找到“Streamlit in Snowflake”应用来创建聊天机器人应用。这将使用 Snowpark 连接到您的 Snowflake。
如果您想先了解通用的聊天机器人构建方法,建议先学习这门关于 用 Python 构建聊天机器人 的课程。
首先,我们让用户通过 Session.builder 连接到 Snowflake。然后,根据特定输入,将其作为查询提交给 SNOWFLAKE.CORTEX.SEARCH。
import streamlit as st
import snowflake. connector
from snowflake. snowpark import Session
session = Session. builder. configs( {
"account" : "<account_id>" ,
"user" : "<username>" ,
"password" : "<password>" ,
"role" : "SYSADMIN" ,
"warehouse" : "CORTEX_WH" ,
"database" : "CORTEX_CHATBOT" ,
"schema" : "PUBLIC"
} ) . create( )
st. title( "Snowflake Cortex Chatbot" )
user_input = st. text_input( "Ask me a question:" )
if user_input:
result = session. sql( f"""
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH(
chatbot_serv',
' {
"query" : "{user_input}" ,
"columns" : [
"col1" ,
"col2"
] ,
"filter" : { "@eq" : { "col1" : "filter value" } }
} '
)
)[‘results’] AS results
""" ) . collect( )
st. write( "**Chatbot:**" , result[ 0 ] [ 'RESPONSE' ] ) 技术支持
这个基础版聊天机器人会从 Cortex Search 索引中检索相关信息并实时返回答案。您也可以通过将会话聊天记录存入内存,创建多轮(对话式)聊天机器人。这可以在 Streamlit 中基于现有搜索服务原生实现。
步骤 7:通过 REST API 端点进行集成
要将聊天机器人集成到外部应用(如网站、Slack 机器人),请使用 Snowflake REST API。通常,URL 类似于:https://<account_url>/api/v2/databases/<db_name>/schemas/<schema_name>/cortex-search-services/<service_name>:query。
这些 API 出于安全考虑需要身份验证,这意味着仅限有权访问您 Snowflake 环境的用户使用。以 API 为先的方式,可以更灵活地嵌入聊天机器人的能力,并触达更广的受众。
一个用例是构建内部工具并部署在 Web 服务器上,允许用户就季度财报或会议记录等文档提问。这类集成需要开发能够发起 API 请求的工具。
步骤 8:测试与验证
在大范围部署前,请针对以下方面测试聊天机器人:
准确性 ——是否检索到正确答案?
速度 ——时延是否可接受?
可用性 ——界面是否直观易用?
您可以记录查询,并与已知标准答案进行对比来做基准测试。常见做法是准备一组问题及其规定答案,并使用其他模型进行准确性对比评估。
步骤 9:清理(可选)
为管理成本并维持治理,请删除未使用的资源。
DROP WAREHOUSE IF EXISTS cortex_wh;
DROP DATABASE IF EXISTS cortex_chatbot;
DROP STAGE IF EXISTS chatbot_stage; 技术支持
补充概念与最佳实践
让我们为聊天机器人的功能补充一些背景与最佳实践。
Snowflake Cortex 中的检索增强生成(RAG)
RAG 是许多大语言模型用于以外部知识增强原始数据的技术。
Snowflake Cortex 将您的企业数据加入聊天机器人的上下文,使其能够利用额外信息作答。通过结合向量与关键词搜索,它可以在带有上下文数据的提示上进行解析,并以语义重排选出最相关的文档,从而给出具备上下文的回答。
这也意味着,RAG 的实现被简化为单一的 Cortex Search 引擎,而无需用户手动创建向量、相似度函数与嵌入。RAG 的强大之处在于,我们可以据此构建如 面向技术文档的聊天机器人 等应用。
Snowflake 聊天机器人的提示工程
提示工程对于确保聊天机器人对用户提问给出恰当回答至关重要。对 提示工程有良好理解 ,对保证您的聊天服务返回高质量的响应至关重要。
为用户提供一份使用指南,帮助他们提出更优的问题,也有助于提升回答质量。
您还可以在将用户查询提交给 Cortex 服务前,加入提示模板。提示模板有助于为模型提供一致的上下文,使其利用正确的信息进行作答。
一个可能适用于企业数据的模板示例是:“您是公司历史数据的有用助手。仅基于公司知识库回答问题。”这会让模型专注使用企业数据来回答。
您还会偶尔遇到含糊不清的问题或用户输入。与其强行让模型作答,不如在模板中加入如下内容: “如果用户的问题含糊,请回答:我不知道该问题的答案。”这可能会促使他们提出更具体的问题。
实现方式的灵活性与选择
Snowflake Cortex 同时支持预构建 LLM(快速、生产可用)与自定义模型(面向特定领域的微调)。这些都可在创建服务时定义。此外,加入自定义语义模型可为行业/企业特定语言提供上下文,即便不喂入大规模语料,模型也能理解原本生僻的术语。这种灵活性也便于未来模型的集成。
安全、治理与合规
Cortex 遵循与 Snowflake 相同的基于角色的访问控制、审计日志与加密机制,确保符合 HIPAA、GDPR 等法规。您这边的主要责任是确保合适的人员拥有合适的角色。
成本结构
Snowflake Cortex 采用 基于消耗的定价模式 。与其他 Snowflake 产品类似,您需要为计算与存储付费,但 Cortex Search 还有一些特定的额外层面。您需要为以下内容付费:
虚拟仓库计算: 主要的计算用量,用于在 Snowflake 数据上处理查询并消耗积分
EMBED_TEXT 令牌用量:在处理文档数据时,Snowflake Cortex 会进行令牌嵌入,当文档新增或变更时会产生费用
服务计算: Cortex Search Service 自身使用服务计算以向用户提供低时延、高吞吐的服务。它独立于虚拟仓库计算,并在服务 可用 的任何时间计费,而不仅仅是使用时
存储 (用于语义索引与暂存数据)。
云服务计算: Snowflake 级别的成本,用于识别基础对象的变更。仅当该成本超过当日仓库成本的 10% 才会计费。
尝试以下方法来管理成本:
Snowflake 建议使用 MEDIUM 或更小的仓库
监控令牌使用量并设置使用配额。
归档未使用的索引,或在最新文档并非必要时放宽数据新鲜度滞后时间
在不需要时暂停服务。可考虑设置定时器,在无人使用时自动开启/关闭服务。
结语
使用 Snowflake Cortex 构建聊天机器人,可将企业特定的对话式 AI 直接带到数据云。从数据摄取到检索再到部署,您可以完全在 Snowflake 受治理的环境中完成。此类聊天机器人可帮助简化入职、解答深入的分析问题,并辅助创建技术文档。
Cortex 使 RAG 驱动的聊天机器人成为可能,将 LLM 与您的自有数据结合。在 Snowflake 中使用 Streamlit 构建聊天机器人,便于在 Snowflake 内部快速部署用户友好的界面。安全、治理与成本管理融入整个流程。借助 Cortex,组织可以从传统 BI 仪表板演进到能以对话方式与数据交互的智能助手。
想了解更多 Snowflake 及其 AI 能力,请查看以下资源:
Snowflake 的 Cortex AI 将强大的人工智能能力直接带入您的 Snowflake 环境。借助 Cortex 对行业领先大语言模型(LLM)的访问,我们可以构建使用企业内部数据的 AI 聊天机器人等工具,而不会牺牲敏感数据的安全性。
这些集成使对话从传统的基于规则的聊天与自动化,转向更灵活的 AI 驱动聊天,更好地理解用户输入并提供更全面的答案。
在本教程中,我将带您高层次了解如何使用 Snowflake Cortex 创建聊天机器人。您将学习如何准备数据、配置 Cortex Search、使用 Document AI 处理非结构化数据、在 Streamlit 中构建聊天机器人界面,并获得一些与外部应用集成的思路。完成后,您将同时具备在 Snowflake 上设计对话式 AI 所需的实践技能与概念理解。
如果您刚接触 Snowflake,建议先学习Snowflake Foundations 技能路径以快速入门。您也可以申请Snowflake 免费试用来动手实践。
什么是 Snowflake Cortex?
从本质上讲,Snowflake Cortex 将 AI 与 LLM 驱动的服务引入 Snowflake 生态系统。本教程将介绍如何将 Cortex 与您的 Snowflake 数据集成,使用 Cortex 的 Search Service 与 Document AI 解析文档文件,通过 Cortex 的检索增强生成(RAG)为现有 LLM 模型提供更多上下文,从而创建一个简单的 Streamlit 聊天机器人应用。
本教程将涵盖:
使用 Cortex 的优势在于其在向量、关键词与语义重排上的原生混合方法,以及基于 RAG 的响应生成,从而提升准确性与针对性。
在 Snowflake 中使用 Streamlit 构建聊天机器人与分析应用,可以利用 Python 开发的灵活性,同时通过将敏感数据保留在安全的 Snowflake 环境中,强化数据安全与治理。
若您想了解 Snowflake Cortex AI 的能力,请查看这篇关于使用 Cortex AI 处理基础 NLP 任务(如摘要与情感分析)的教程。
先决条件
在开始构建前,先准备好您的 Snowflake 账号。在该账号中,您需要以下权限:
USAGE权限USAGEUSAGE、CREATE STREAMLIT、CREATE STAGE、CREATE CORTEX SEARCH SERVICE或OWNERSHIPACCOUNTADMIN、SYSADMIN)或具备以下权限的自定义角色:USAGE(数据库与架构级)CREATE CORTEX SEARCH SERVICECORTEX_USER角色,并结合对象级授权(USAGE、OPERATE)以与服务交互。理想情况下,您应熟悉 SQL、Python 与基础 AI 概念。理解 SQL 有助于在 Snowflake 环境与数据中导航;熟悉 Python 则用于构建 Streamlit 应用;掌握 AI 基础概念有助于理解我们在 Cortex Search Service 中用到的组件。
工具方面,我们将主要使用 Snowflake 的 Snowsight(其网页端)。如需本地构建,您需要自备 IDE/文本编辑器。
虽然我们会尽量提供一些数据样例,但理想情况下,您应准备好想要处理的测试语料与数据集。若没有,建议在本教程中使用联邦公开市场委员会(FOMC)会议纪要(来源:Snowflake):FOMC 会议纪要样本。
如何在 Snowflake Cortex 中构建聊天机器人
好了,开始动手!为了适配更广泛的场景,部分说明会稍显通用。
步骤 1:设置 Snowflake 数据库、架构与仓库
首先为我们的聊天机器人项目创建必要的环境。
这样可以确保资源隔离并便于成本管理。
步骤 2:加载并准备数据
聊天机器人需要数据来回答问题,数据形式可以是:
如果您需要更多关于数据摄取及如何将数据导入 Snowflake 的信息,请查看这篇数据摄取指南。
示例:暂存并加载 CSV 文件。
对于非结构化数据(例如 PDF),您可以使用 Cortex Document AI 进行处理。我们将在下一步中介绍如何通过 Cortex Document AI 从非结构化数据源提取数据。
我们要将结构化与非结构化数据都切分为块(chunks),并按需附加元数据,以提升 RAG 的效率。
步骤 3:Document AI 配置与文档解析
接下来介绍如何使用 Document AI 配置用于文档解析的模型。请注意,这一步是可选的,我也鼓励您先尝试用于解析的 Snowflake 默认模型,这些模型已达生产可用,支持 OCR、版面提取与表格检测。目前您并不会在 Cortex Document AI 中直接“训练”自定义模型,但可以按需配置提取模式(如实体提取、表格提取)以适配您的数据。
先从默认解析器开始,只有当您的文档格式复杂或不规则时,再逐步增加高级配置。
在 Snowsight 中打开导航菜单,进入 AI & ML。选择我们的
cortex_wh,然后点击“Build”,接着选择“Create”。创建构建后,上传文档进行处理。处理完成后,您可以选择使用实体提取或表格提取来抽取数据。实体提取允许您就文档提出问题并获取数据;表格提取则基于文档中定义的字段解析数据。
模型构建后,我们要评估其准确性,并按需进行训练。训练会让模型更贴合您特定文档的结构。完成后,您可以使用该模型或默认模型进行文档解析。此处我们先使用 Snowflake 的默认 AI 解析器。
现在数据已进入表中,准备好进行转换。
步骤 4:数据转换与特征提取
为适配聊天交互,需要将文档切分并丰富元数据。切分能提升 Cortex Search 的准确度。
这段 SQL 做了不少事情,简单概括一下:它将每个文件的文本展平为长度为 2000 个字符的块。
将文本切分为更小部分有助于提升搜索效率。同时,它会将一些标题信息(如标题)加入到块内的数据中,以便模型了解这些数据的来源上下文。
这样,您的数据就具备可搜索性,并已为检索增强生成(RAG)做好准备。
步骤 5:创建并配置 Cortex Search 或 Agent
我们来构建 Cortex Search Agent,它是搜索文本块并提取响应上下文的核心服务。
这将创建一个初始服务,同时定义
attributes字段,用于选择要用于搜索结果筛选的列。这里我选择了“category”,以便理论上可以按不同产品类别进行筛选。本例中我选择了包含我们切分文本的chunk列等。Cortex Search 默认采用向量 + 关键词的混合搜索,提升聊天机器人的准确性。在此基础上,我们还能通过语义模型添加进一步的上下文。如果您预期会出现独特表述或技术缩写,可以使用 Cortex Analyst 的语义模型生成器配置语义模型 YAML 文件。这将允许您向模型提供上下文与同义词,使其能够识别诸如“CUST”也可能表示“customer”。
这使得 RAG 工作流成为可能:聊天机器人在生成回答前先检索相关上下文。
步骤 6:使用 Streamlit 构建聊天机器人应用
现在我们在 Snowflake 内使用 Streamlit 构建一个非常简单的聊天机器人前端。您可以在 Snowsight 中找到“Streamlit in Snowflake”应用来创建聊天机器人应用。这将使用 Snowpark 连接到您的 Snowflake。
如果您想先了解通用的聊天机器人构建方法,建议先学习这门关于用 Python 构建聊天机器人的课程。
首先,我们让用户通过
Session.builder连接到 Snowflake。然后,根据特定输入,将其作为查询提交给SNOWFLAKE.CORTEX.SEARCH。这个基础版聊天机器人会从 Cortex Search 索引中检索相关信息并实时返回答案。您也可以通过将会话聊天记录存入内存,创建多轮(对话式)聊天机器人。这可以在 Streamlit 中基于现有搜索服务原生实现。
步骤 7:通过 REST API 端点进行集成
要将聊天机器人集成到外部应用(如网站、Slack 机器人),请使用 Snowflake REST API。通常,URL 类似于:
https://<account_url>/api/v2/databases/<db_name>/schemas/<schema_name>/cortex-search-services/<service_name>:query。这些 API 出于安全考虑需要身份验证,这意味着仅限有权访问您 Snowflake 环境的用户使用。以 API 为先的方式,可以更灵活地嵌入聊天机器人的能力,并触达更广的受众。
一个用例是构建内部工具并部署在 Web 服务器上,允许用户就季度财报或会议记录等文档提问。这类集成需要开发能够发起 API 请求的工具。
步骤 8:测试与验证
在大范围部署前,请针对以下方面测试聊天机器人:
您可以记录查询,并与已知标准答案进行对比来做基准测试。常见做法是准备一组问题及其规定答案,并使用其他模型进行准确性对比评估。
步骤 9:清理(可选)
为管理成本并维持治理,请删除未使用的资源。
补充概念与最佳实践
让我们为聊天机器人的功能补充一些背景与最佳实践。
Snowflake Cortex 中的检索增强生成(RAG)
RAG 是许多大语言模型用于以外部知识增强原始数据的技术。
Snowflake Cortex 将您的企业数据加入聊天机器人的上下文,使其能够利用额外信息作答。通过结合向量与关键词搜索,它可以在带有上下文数据的提示上进行解析,并以语义重排选出最相关的文档,从而给出具备上下文的回答。
这也意味着,RAG 的实现被简化为单一的 Cortex Search 引擎,而无需用户手动创建向量、相似度函数与嵌入。RAG 的强大之处在于,我们可以据此构建如面向技术文档的聊天机器人等应用。
Snowflake 聊天机器人的提示工程
提示工程对于确保聊天机器人对用户提问给出恰当回答至关重要。对提示工程有良好理解,对保证您的聊天服务返回高质量的响应至关重要。
为用户提供一份使用指南,帮助他们提出更优的问题,也有助于提升回答质量。
您还可以在将用户查询提交给 Cortex 服务前,加入提示模板。提示模板有助于为模型提供一致的上下文,使其利用正确的信息进行作答。
一个可能适用于企业数据的模板示例是:“您是公司历史数据的有用助手。仅基于公司知识库回答问题。”这会让模型专注使用企业数据来回答。
您还会偶尔遇到含糊不清的问题或用户输入。与其强行让模型作答,不如在模板中加入如下内容:“如果用户的问题含糊,请回答:我不知道该问题的答案。”这可能会促使他们提出更具体的问题。
实现方式的灵活性与选择
Snowflake Cortex 同时支持预构建 LLM(快速、生产可用)与自定义模型(面向特定领域的微调)。这些都可在创建服务时定义。此外,加入自定义语义模型可为行业/企业特定语言提供上下文,即便不喂入大规模语料,模型也能理解原本生僻的术语。这种灵活性也便于未来模型的集成。
安全、治理与合规
Cortex 遵循与 Snowflake 相同的基于角色的访问控制、审计日志与加密机制,确保符合 HIPAA、GDPR 等法规。您这边的主要责任是确保合适的人员拥有合适的角色。
成本结构
Snowflake Cortex 采用基于消耗的定价模式。与其他 Snowflake 产品类似,您需要为计算与存储付费,但 Cortex Search 还有一些特定的额外层面。您需要为以下内容付费:
EMBED_TEXT令牌用量:在处理文档数据时,Snowflake Cortex 会进行令牌嵌入,当文档新增或变更时会产生费用尝试以下方法来管理成本:
结语
使用 Snowflake Cortex 构建聊天机器人,可将企业特定的对话式 AI 直接带到数据云。从数据摄取到检索再到部署,您可以完全在 Snowflake 受治理的环境中完成。此类聊天机器人可帮助简化入职、解答深入的分析问题,并辅助创建技术文档。
Cortex 使 RAG 驱动的聊天机器人成为可能,将 LLM 与您的自有数据结合。在 Snowflake 中使用 Streamlit 构建聊天机器人,便于在 Snowflake 内部快速部署用户友好的界面。安全、治理与成本管理融入整个流程。借助 Cortex,组织可以从传统 BI 仪表板演进到能以对话方式与数据交互的智能助手。
想了解更多 Snowflake 及其 AI 能力,请查看以下资源: