Cortex AI của Snowflake mang các khả năng AI mạnh mẽ trực tiếp vào môi trường Snowflake của bạn. Chẳng hạn, bằng cách sử dụng quyền truy cập của Cortex vào các Mô hình ngôn ngữ lớn (LLM) hàng đầu ngành, chúng ta có thể xây dựng các công cụ như chatbot AI sử dụng dữ liệu nội bộ của doanh nghiệp mà không làm ảnh hưởng đến bảo mật dữ liệu nhạy cảm.
Những tích hợp này đã tạo ra sự chuyển dịch từ các cuộc hội thoại và tự động hóa dựa trên quy tắc truyền thống sang các cuộc hội thoại do AI hỗ trợ linh hoạt hơn, có khả năng hiểu rõ đầu vào của người dùng để cung cấp câu trả lời đầy đủ và toàn diện hơn.
Trong hướng dẫn này, tôi sẽ dẫn bạn qua các bước ở mức độ khái quát để tạo một chatbot bằng Snowflake Cortex. Bạn sẽ học cách chuẩn bị dữ liệu, cấu hình Cortex Search, sử dụng Document AI cho dữ liệu phi cấu trúc, xây dựng giao diện chatbot trong Streamlit, và tôi sẽ gợi ý cách tích hợp nó với các ứng dụng bên ngoài. Cuối cùng, bạn sẽ có cả kỹ năng thực hành và hiểu biết khái niệm cần thiết để thiết kế AI hội thoại trên Snowflake.
Cốt lõi của Snowflake Cortex là mang các dịch vụ do AI và LLM hỗ trợ vào hệ sinh thái Snowflake. Hướng dẫn này sẽ đề cập việc tích hợp Cortex với dữ liệu Snowflake của bạn để tạo một ứng dụng chatbot Streamlit đơn giản bằng cách sử dụng Dịch vụ Tìm kiếm (Search Service) của Cortex và Document AI để phân tích tệp tài liệu, hỗ trợ cung cấp ngữ cảnh bổ sung cho các mô hình LLM hiện có thông qua mô hình tạo sinh tăng cường truy xuất (RAG) của Cortex.
Hướng dẫn này sẽ bao gồm:
Thiết lập tổng thể môi trường Snowflake để chuẩn bị xây dựng một chatbot Cortex Search
Khai thác các hàm LLM của Cortex và Document AI để trích xuất thông tin chi tiết từ tài liệu
Xây dựng một ứng dụng chatbot và phân tích trong Streamlit trên Snowflake
Cấu trúc chi phí và các lưu ý khi sử dụng Cortex
Lợi ích của việc dùng Cortex là cách tiếp cận lai gốc đối với vector, từ khóa và xếp hạng lại ngữ nghĩa cùng với phản hồi dựa trên RAG, giúp cải thiện độ chính xác và tính cụ thể.
Xây dựng chatbot và ứng dụng phân tích với Streamlit trên Snowflake tận dụng sự linh hoạt của phát triển Python đồng thời nhấn mạnh bảo mật dữ liệu và quy định quản trị bằng cách giữ dữ liệu nhạy cảm trong môi trường Snowflake an toàn của bạn.
Trước khi xây dựng, hãy chuẩn bị tài khoản Snowflake của bạn. Trong tài khoản này, bạn sẽ cần các quyền sau:
Quyền tạo warehouses và quyền USAGE
Quyền cơ sở dữ liệu: USAGE
Quyền schema: USAGE, CREATE STREAMLIT, CREATE STAGE, CREATE CORTEX SEARCH SERVICE hoặc OWNERSHIP
Khả năng sử dụng Document AI với các quyền cấp tài khoản phù hợp. Trong hầu hết trường hợp, bạn sẽ dùng các vai trò tích hợp sẵn của Snowflake (ví dụ, ACCOUNTADMIN, SYSADMIN) hoặc một vai trò tùy chỉnh với:
USAGE trên cơ sở dữ liệu và schema
CREATE CORTEX SEARCH SERVICE
OPERATE trên đối tượng search service sau khi được tạo
Với Cortex, bạn thường cần vai trò CORTEX_USER kết hợp với các cấp quyền ở mức đối tượng (USAGE, OPERATE) để tương tác với dịch vụ.
Lý tưởng nhất, bạn có chút quen thuộc với SQL, Python và các khái niệm AI cơ bản. Bạn sẽ cần hiểu SQL để điều hướng môi trường Snowflake và dữ liệu. Bạn sẽ cần quen thuộc Python để xây dựng ứng dụng Streamlit. Việc hiểu các khái niệm AI cơ bản sẽ giúp chúng ta nắm được các thành phần trong Cortex Search Service.
Về công cụ, chúng ta sẽ tập trung vào Snowsight của Snowflake, là trình duyệt web của họ. Nếu bạn muốn xây dựng cục bộ, bạn sẽ cần IDE/trình soạn thảo riêng.
Trong khi chúng tôi sẽ cố gắng cung cấp một số mẫu dữ liệu, lý tưởng là bạn có một tập văn bản và bộ dữ liệu thử nghiệm muốn làm việc cùng. Nếu bạn chưa có, tôi khuyến nghị biên bản họp của Ủy ban Thị trường Mở Liên bang cho hướng dẫn này (Nguồn từ Snowflake): Mẫu biên bản FOMC.
Cách xây dựng chatbot trong Snowflake Cortex
Được rồi, bắt tay vào xây dựng thôi! Một số hướng dẫn có thể hơi tổng quát để có thể bao phủ đa dạng lựa chọn.
Bước 1: Thiết lập Cơ sở dữ liệu, Schema và Warehouse của Snowflake
Trước tiên, chúng ta sẽ tạo môi trường cần thiết cho dự án chatbot.
-- Create a dedicated warehouseCREATEORREPLACE WAREHOUSE cortex_wh
WITH WAREHOUSE_SIZE ='XSMALL'
AUTO_SUSPEND =60
AUTO_RESUME =TRUE;-- Create a database and stageCREATEORREPLACEDATABASE cortex_chatbot_db;CREATEORREPLACE STAGE cortex_chatbot_db.public.chatbot_stage;-- Switch contextUSEDATABASE cortex_chatbot_db;USE WAREHOUSE cortex_wh;Được hỗ trợ bởi
Điều này đảm bảo mọi tài nguyên được tách biệt và quản lý chi phí.
Bước 2: Nạp và chuẩn bị dữ liệu
Chatbot của bạn cần dữ liệu để phản hồi truy vấn. Dữ liệu có thể là:
Dữ liệu có cấu trúc: thông tin khách hàng, nhật ký giao dịch, danh mục sản phẩm.
Dữ liệu phi cấu trúc: PDF, FAQ, chính sách, kho tri thức.
Nếu bạn cần thêm thông tin về việc nạp dữ liệu và cách đưa dữ liệu vào Snowflake, hãy xem hướng dẫn về nạp dữ liệu này.
Ví dụ: staging và nạp một tệp CSV.
-- Upload data (done via Snowsight UI or SnowSQL)-- Example: product_faq.csv-- Load into a tableCREATEORREPLACETABLE 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='"');Được hỗ trợ bởi
Với dữ liệu phi cấu trúc (ví dụ, PDF), bạn có thể xử lý bằng Cortex Document AI. Chúng ta sẽ bàn về cách trích xuất dữ liệu từ các nguồn phi cấu trúc bằng Cortex Document AI ở bước tiếp theo.
Chúng ta muốn biến cả dữ liệu có cấu trúc và phi cấu trúc thành các đoạn (chunk) và gắn kèm một số metadata khi cần để tăng hiệu quả cho RAG.
Bước 3: Huấn luyện Document AI và phân tích tài liệu
Hãy cùng xem cách xây dựng một mô hình bằng Document AI để tạo mô hình tinh chỉnh cho việc phân tích tài liệu. Lưu ý, điều này là tùy chọn và tôi khuyến khích bạn thử các mô hình mặc định của Snowflake để phân tích vì chúng đã sẵn sàng cho sản xuất và xử lý OCR, trích xuất bố cục, phát hiện bảng. Hiện tại bạn không “huấn luyện” trực tiếp các mô hình tùy chỉnh trong Cortex Document AI, nhưng bạn có thể cấu hình các chế độ trích xuất (ví dụ, trích xuất thực thể, trích xuất bảng) cho phù hợp dữ liệu.
Bắt đầu đơn giản với bộ phân tích mặc định, và chỉ thêm cấu hình nâng cao nếu tài liệu của bạn có định dạng phức tạp hoặc bất thường.
Trong Snowsight, mở menu điều hướng và đi tới AI & ML. Chọn cortex_wh của chúng ta rồi nhấp “Build”. Từ đó chọn “Create”.
Sau khi tạo build, chúng ta tải tài liệu lên build. Khi xử lý xong, ta có thể trích xuất dữ liệu bằng trích xuất thực thể hoặc trích xuất bảng. Trích xuất thực thể cho phép bạn đặt câu hỏi cho tài liệu để lấy dữ liệu ra, trích xuất bảng phân tích dữ liệu dựa trên các trường được xác định trong tài liệu.
Khi mô hình được xây dựng, chúng ta muốn đánh giá độ chính xác và sau đó huấn luyện mô hình khi cần. Huấn luyện mô hình sẽ tinh chỉnh nó theo cấu trúc tài liệu cụ thể của bạn. Giờ đây, chúng ta có thể dùng mô hình này hoặc mô hình mặc định để phân tích tài liệu. Tạm thời, chúng ta sẽ dùng bộ phân tích AI mặc định của Snowflake.
CREATEORREPLACETABLE cortex_chatbot_db.public.chatbot_stage.doc_data AS--create the tableSELECT
RELATIVE_PATH,
TO_VARCHAR (
SNOWFLAKE.CORTEX.PARSE_DOCUMENT (--using default cortex parser'@cortex_chatbot.public.chatbot_stage',
RELATIVE_PATH,
{'mode': 'LAYOUT'} ):content
)AS EXTRACTED_LAYOUT
FROM
DIRECTORY('@cortex_chatbot.public.chatbot_stage')--pull the files from the stageWHERE
RELATIVE_PATH LIKE'%.pdf';--specifically just PDFsĐược hỗ trợ bởi
Giờ dữ liệu của chúng ta sẽ nằm trong một bảng và sẵn sàng để chuyển đổi.
Bước 4: Chuyển đổi dữ liệu và trích xuất đặc trưng
Để chuẩn bị dữ liệu cho tương tác chatbot, tài liệu cần được chia nhỏ và làm giàu với metadata. Việc chia nhỏ giúp Cortex Search chính xác hơn.
Đoạn SQL này làm khá nhiều việc, nên tôi tóm tắt lại. Nó lấy từng tệp và làm phẳng văn bản thành các đoạn 2000 ký tự.
Chia nhỏ thành các phần nhỏ hơn giúp tăng hiệu quả tìm kiếm. Sau đó nó thêm một số thông tin tiêu đề (như tiêu đề chính) vào dữ liệu trong đoạn để mô hình có ngữ cảnh về nguồn gốc dữ liệu.
Điều này giúp dữ liệu của bạn có thể tìm kiếm và sẵn sàng cho RAG.
Bước 5: Tạo và cấu hình Cortex Search hoặc Agent
Hãy xây dựng Cortex Search Agent, là dịch vụ chính sẽ tìm kiếm qua các đoạn và lấy ngữ cảnh cho phản hồi.
CREATEORREPLACE 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
);Được hỗ trợ bởi
Điều này sẽ tạo dịch vụ ban đầu đồng thời định nghĩa trường attributes để chọn các cột bạn muốn dùng cho lọc kết quả tìm kiếm. Ở đây, tôi chọn “category” để về mặt lý thuyết có thể lọc theo các danh mục sản phẩm khác nhau. Với phần này, tôi đã chọn cột chunk vốn chứa văn bản đã được chia nhỏ của chúng ta.
Cortex Search mặc định là tìm kiếm lai vector + từ khóa, cải thiện độ chính xác của chatbot. Với điều này, chúng ta có thể bổ sung ngữ cảnh bằng mô hình ngữ nghĩa. Nếu bạn kỳ vọng có cách diễn đạt độc đáo hoặc viết tắt kỹ thuật, bạn có thể cấu hình tệp YAML mô hình ngữ nghĩa bằng trình tạo mô hình ngữ nghĩa Cortex Analyst. Điều này cho phép bạn cung cấp ngữ cảnh và từ đồng nghĩa cho mô hình để nó có thể hiểu “CUST” cũng có thể nghĩa là “customer”.
Điều này kích hoạt quy trình RAG, trong đó chatbot truy xuất ngữ cảnh phù hợp trước khi tạo phản hồi.
Bước 6: Xây dựng ứng dụng Chatbot với Streamlit
Giờ hãy xây dựng một giao diện chatbot siêu đơn giản bên trong Snowflake bằng Streamlit. Bạn sẽ muốn dùng Snowsight để tìm ứng dụng “Streamlit in Snowflake” nhằm tạo ứng dụng chatbot. Ứng dụng này sử dụng Snowpark để kết nối với Snowflake của bạn.
Đầu tiên, chúng ta cho phép người dùng kết nối tới Snowflake bằng Session.builder. Sau đó, với một đầu vào cụ thể, ta cung cấp nó như một truy vấn tới SNOWFLAKE.CORTEX.SEARCH
import streamlit as st
import snowflake.connector
from snowflake.snowpark import Session
# Connect to Snowflake
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:# Query Cortex Search
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'])Được hỗ trợ bởi
Chatbot cơ bản này truy xuất thông tin liên quan từ chỉ mục Cortex Search và trả lời theo thời gian thực. Bạn cũng có thể tạo chatbot đa lượt (hội thoại) bằng cách bổ sung khả năng lưu lịch sử trò chuyện của phiên vào bộ nhớ. Điều này có thể thực hiện ngay trong Streamlit dùng dịch vụ tìm kiếm hiện có.
Bước 7: Triển khai qua các endpoint REST API
Để tích hợp chatbot vào ứng dụng bên ngoài (ví dụ, website, bot Slack), hãy dùng Snowflake REST API. Nhìn chung, URL sẽ trông giống như sau: https://<account_url>/api/v2/databases/<db_name>/schemas/<schema_name>/cortex-search-services/<service_name>:query.
Các API này yêu cầu xác thực vì lý do bảo mật, nghĩa là chỉ giới hạn cho người dùng có quyền truy cập vào môi trường Snowflake của bạn. Cách tiếp cận ưu tiên API này cho phép nhúng khả năng chatbot linh hoạt hơn và đến với đối tượng rộng hơn.
Một trường hợp sử dụng là xây dựng công cụ nội bộ có thể được lưu trữ trên máy chủ web, cho phép người dùng đặt câu hỏi về các tài liệu như báo cáo tài chính hàng quý hoặc biên bản họp. Những tích hợp này sẽ cần phát triển các công cụ có thể gửi yêu cầu API.
Bước 8: Kiểm thử và xác nhận
Trước khi triển khai rộng rãi, hãy kiểm thử chatbot về:
Độ chính xác – liệu nó có truy xuất câu trả lời đúng?
Tốc độ – độ trễ có chấp nhận được?
Tính dễ dùng – giao diện có trực quan?
Bạn có thể ghi log truy vấn và so sánh đầu ra với chân lý mặt đất đã biết để làm chuẩn. Thông thường có một tập câu hỏi với câu trả lời định trước và dùng các mô hình khác để so sánh độ chính xác.
Bước 9: Dọn dẹp (Tùy chọn)
Để quản lý chi phí và duy trì quản trị, hãy xóa các tài nguyên không dùng.
DROP WAREHOUSE IFEXISTS cortex_wh;DROPDATABASEIFEXISTS cortex_chatbot;DROP STAGE IFEXISTS chatbot_stage;Được hỗ trợ bởi
Các khái niệm bổ sung & Thực hành tốt
Hãy bổ sung một chút ngữ cảnh cho chức năng chatbot và một số thực hành tốt.
Retrieval Augmented Generation (RAG) trong Snowflake Cortex
RAG là một kỹ thuật được nhiều mô hình ngôn ngữ lớn sử dụng để tăng cường dữ liệu gốc bằng tri thức bên ngoài.
Snowflake Cortex thêm dữ liệu doanh nghiệp của bạn vào ngữ cảnh của chatbot, nhờ đó có thể cung cấp câu trả lời sử dụng ngữ cảnh bổ sung. Bằng cách kết hợp tìm kiếm vector và từ khóa, nó có thể phân tích prompt kèm dữ liệu ngữ cảnh và dùng xếp hạng lại ngữ nghĩa để chọn tài liệu phù hợp nhất nhằm tạo phản hồi có ngữ cảnh.
Điều này cũng đơn giản hóa việc triển khai RAG thông qua một công cụ Cortex Search duy nhất thay vì để người dùng tự tạo vector, hàm tương đồng và embedding. Sức mạnh của RAG cho phép chúng ta xây dựng những thứ như chatbot hướng tới tài liệu kỹ thuật.
Kỹ thuật prompt cho chatbot Snowflake
Kỹ thuật prompt quan trọng để đảm bảo bất kỳ chatbot nào cũng đưa ra phản hồi phù hợp với câu hỏi của người dùng. Có hiểu biết tốt về kỹ thuật prompt là điều then chốt để đảm bảo dịch vụ chat trả về câu trả lời tốt.
Một điều giúp phản hồi tốt hơn là cung cấp cho người dùng hướng dẫn sử dụng để họ đặt câu hỏi hay hơn.
Bạn cũng có thể thêm mẫu prompt vào truy vấn của người dùng trước khi gửi tới dịch vụ Cortex. Mẫu prompt giúp cung cấp ngữ cảnh nhất quán cho mô hình để nó dùng đúng thông tin khi đưa ra câu trả lời.
Một mẫu hữu ích cho dữ liệu doanh nghiệp có thể là: "Bạn là một trợ lý hữu ích cho dữ liệu lịch sử của công ty. Trả lời chỉ dựa trên kho tri thức của công ty." Điều này sẽ giúp mô hình tập trung dùng dữ liệu doanh nghiệp để trả lời.
Bạn cũng sẽ đôi khi gặp câu hỏi hoặc đầu vào mơ hồ. Thay vì buộc mô hình phải trả lời, bạn có thể thêm vào mẫu điều gì đó như: "Nếu người dùng hỏi một câu mơ hồ, hãy cung cấp câu trả lời: Tôi không biết câu trả lời cho việc đó." Điều này có thể khuyến khích họ đặt câu hỏi cụ thể hơn.
Tính linh hoạt và lựa chọn trong triển khai
Snowflake Cortex hỗ trợ các LLM dựng sẵn (nhanh, sẵn sàng sản xuất) và mô hình tùy chỉnh (được tinh chỉnh cho từng lĩnh vực). Chúng có thể được định nghĩa khi tạo dịch vụ. Ngoài ra, thêm các mô hình ngữ nghĩa tùy chỉnh của bạn bổ sung ngữ cảnh theo ngành/doanh nghiệp cho ngôn ngữ vốn có thể khó hiểu với mô hình nếu không cần nạp một tập văn bản lớn. Tính linh hoạt này cho phép tích hợp mô hình trong tương lai.
Bảo mật, quản trị và tuân thủ
Cortex tuân theo cùng kiểm soát truy cập dựa trên vai trò, ghi log kiểm toán và mã hóa như Snowflake cung cấp. Điều này đảm bảo tuân thủ HIPAA, GDPR và các quy định khác. Trách nhiệm chính của bạn là đảm bảo đúng người có đúng vai trò.
Cấu trúc chi phí
Snowflake Cortex sử dụng mô hình định giá theo mức tiêu thụ. Giống các sản phẩm Snowflake khác, bạn bị tính phí cho compute và lưu trữ, nhưng có một vài lớp bổ sung dành riêng cho Cortex Search. Bạn sẽ chi trả cho:
Compute của Virtual Warehouse: Đây là compute chính, xử lý truy vấn đối với dữ liệu Snowflake và tiêu tốn credits
EMBED_TEXT cho token: Trong quá trình xử lý tài liệu, Snowflake Cortex đảm nhiệm nhúng token, và bạn bị tính phí khi tài liệu được thêm hoặc thay đổi
Compute phục vụ (Serving Compute): Bản thân Cortex Search Service sử dụng compute phục vụ để thiết lập dịch vụ độ trễ thấp và thông lượng cao cho người dùng. Điều này tách biệt với compute của virtual warehouse và tính phí bất cứ khi nào dịch vụ sẵn sàng chứ không chỉ khi được sử dụng
Lưu trữ cho chỉ mục ngữ nghĩa và dữ liệu đã staging.
Compute Dịch vụ Đám mây (Cloud Service Compute): Đây là chi phí cấp Snowflake cho phép Snowflake nhận diện thay đổi trong các đối tượng gốc. Chỉ tính phí nếu chi phí này lớn hơn 10% chi phí warehouse hàng ngày.
Hãy thử các kỹ thuật sau để quản lý chi phí:
Snowflake khuyến nghị dùng warehouse cỡ MEDIUM hoặc nhỏ hơn
Theo dõi mức sử dụng token và đặt hạn ngạch sử dụng.
Lưu trữ (archive) các chỉ mục không dùng hoặc cho phép độ trễ làm mới dữ liệu dài hơn nếu không cần tài liệu mới nhất
Tạm dừng dịch vụ khi không cần thiết. Có thể hữu ích nếu đặt lịch để dịch vụ bật/tắt khi không được dùng.
Kết luận
Xây dựng chatbot với Snowflake Cortex mở khóa AI hội thoại theo đặc thù doanh nghiệp trực tiếp trên Data Cloud. Từ nạp dữ liệu đến truy xuất rồi triển khai, bạn có thể làm việc hoàn toàn trong môi trường được quản trị của Snowflake. Những chatbot này có thể giúp tinh gọn như quy trình onboarding, trả lời các câu hỏi phân tích chuyên sâu và tạo tài liệu kỹ thuật.
Cortex cho phép chatbot dựa trên RAG kết hợp LLM với dữ liệu của chính bạn. Xây dựng chatbot trong Streamlit trên Snowflake giúp dễ dàng triển khai giao diện thân thiện ngay trong Snowflake. Bảo mật, quản trị và quản lý chi phí được tích hợp trong quy trình làm việc. Với Cortex, các tổ chức có thể tiến hóa từ các bảng điều khiển BI truyền thống sang các trợ lý thông minh tương tác hội thoại với dữ liệu.
Để biết thêm thông tin về Snowflake và khả năng AI của nó, hãy xem các tài nguyên sau:
Lợi ích chính khi dùng Snowflake Cortex cho business intelligence là gì?⌄
Cortex đơn giản hóa phân tích bằng cách cho phép người không chuyên kỹ thuật đặt câu hỏi bằng ngôn ngữ tự nhiên và nhận câu trả lời dựa trên SQL. Nó loại bỏ việc viết truy vấn thủ công, giảm điểm nghẽn BI và cho phép rút ra insight nhanh hơn. Ngoài ra, mọi kết quả đều thừa hưởng bảo mật, nguồn gốc dữ liệu và kiểm soát truy cập của Snowflake.
Snowflake Cortex Analyst có xử lý được truy vấn đa bảng phức tạp không?⌄
Có. Cortex Analyst hỗ trợ join đa bảng và có thể suy luận xuyên suốt các schema, miễn là quan hệ rõ ràng và metadata được định nghĩa tốt. Tài liệu hóa phù hợp, mô hình ngữ nghĩa và thực hành quản trị dữ liệu giúp cải thiện độ chính xác của các truy vấn phức tạp.
Snowflake đảm bảo bảo mật và quản trị dữ liệu dùng bởi Cortex Analyst như thế nào?⌄
Cortex Analyst chạy bên trong môi trường Snowflake, đảm bảo dữ liệu nhạy cảm không rời khỏi nền tảng. Nó tuân thủ kiểm soát truy cập dựa trên vai trò (RBAC), gắn thẻ đối tượng, chính sách che giấu dữ liệu và ghi log kiểm toán, vì vậy insight do AI cung cấp tuân theo cùng quy tắc tuân thủ như truy vấn truyền thống.
Hạn chế của Snowflake Cortex Analyst trong xử lý câu hỏi tiếp theo là gì?⌄
Cortex Analyst mạnh ở các truy vấn một lượt nhưng có bộ nhớ hạn chế cho hội thoại đa lượt so với các khung chatbot đầy đủ. Đối với hội thoại nâng cao hoặc các truy vấn theo ngữ cảnh, kết hợp Cortex Analyst với Cortex Search hoặc một chatbot tùy chỉnh xây dựng trên Streamlit sẽ cho kết quả tốt hơn.
Doanh nghiệp có thể tùy chỉnh hoặc tinh chỉnh các mô hình phía sau Snowflake Cortex không?⌄
Trong khi Cortex chủ yếu dùng các LLM do Snowflake quản lý, nó cho phép cấu hình thông qua mô hình ngữ nghĩa, mẫu prompt và pipeline truy xuất. Để tùy biến sâu hơn, Cortex có thể tích hợp với mô hình bên ngoài bằng Snowpark Python hoặc API, tùy nhu cầu doanh nghiệp.
Tôi là một nhà khoa học dữ liệu có kinh nghiệm về phân tích không gian, học máy và đường ống dữ liệu. Tôi đã làm việc với GCP, Hadoop, Hive, Snowflake, Airflow và các quy trình khoa học/kỹ thuật dữ liệu khác.
Hãy trải nghiệm Snowflake! Học cách truy vấn, mô hình hóa và quản lý dữ liệu trong khóa học giới thiệu tương tác này dành cho các kỹ sư dữ liệu, nhà phân tích và chuyên gia BI.
Học cách thiết kế, truy vấn và xây dựng trong Snowflake - thành thạo SQL của Snowflake để thực hiện chuyển đổi và mô hình hóa, nhằm trở thành một Kỹ sư Dữ liệu sẵn sàng cho công việc.
Cortex AI của Snowflake mang các khả năng AI mạnh mẽ trực tiếp vào môi trường Snowflake của bạn. Chẳng hạn, bằng cách sử dụng quyền truy cập của Cortex vào các Mô hình ngôn ngữ lớn (LLM) hàng đầu ngành, chúng ta có thể xây dựng các công cụ như chatbot AI sử dụng dữ liệu nội bộ của doanh nghiệp mà không làm ảnh hưởng đến bảo mật dữ liệu nhạy cảm.
Những tích hợp này đã tạo ra sự chuyển dịch từ các cuộc hội thoại và tự động hóa dựa trên quy tắc truyền thống sang các cuộc hội thoại do AI hỗ trợ linh hoạt hơn, có khả năng hiểu rõ đầu vào của người dùng để cung cấp câu trả lời đầy đủ và toàn diện hơn.
Trong hướng dẫn này, tôi sẽ dẫn bạn qua các bước ở mức độ khái quát để tạo một chatbot bằng Snowflake Cortex. Bạn sẽ học cách chuẩn bị dữ liệu, cấu hình Cortex Search, sử dụng Document AI cho dữ liệu phi cấu trúc, xây dựng giao diện chatbot trong Streamlit, và tôi sẽ gợi ý cách tích hợp nó với các ứng dụng bên ngoài. Cuối cùng, bạn sẽ có cả kỹ năng thực hành và hiểu biết khái niệm cần thiết để thiết kế AI hội thoại trên Snowflake.
Nếu bạn mới làm quen với Snowflake, tôi khuyến nghị theo dõi lộ trình kỹ năng Snowflake Foundations để bắt kịp tốc độ. Bạn cũng có thể nhận bản dùng thử Snowflake miễn phí để thực hành kỹ năng.
Snowflake Cortex là gì?
Cốt lõi của Snowflake Cortex là mang các dịch vụ do AI và LLM hỗ trợ vào hệ sinh thái Snowflake. Hướng dẫn này sẽ đề cập việc tích hợp Cortex với dữ liệu Snowflake của bạn để tạo một ứng dụng chatbot Streamlit đơn giản bằng cách sử dụng Dịch vụ Tìm kiếm (Search Service) của Cortex và Document AI để phân tích tệp tài liệu, hỗ trợ cung cấp ngữ cảnh bổ sung cho các mô hình LLM hiện có thông qua mô hình tạo sinh tăng cường truy xuất (RAG) của Cortex.
Hướng dẫn này sẽ bao gồm:
Lợi ích của việc dùng Cortex là cách tiếp cận lai gốc đối với vector, từ khóa và xếp hạng lại ngữ nghĩa cùng với phản hồi dựa trên RAG, giúp cải thiện độ chính xác và tính cụ thể.
Xây dựng chatbot và ứng dụng phân tích với Streamlit trên Snowflake tận dụng sự linh hoạt của phát triển Python đồng thời nhấn mạnh bảo mật dữ liệu và quy định quản trị bằng cách giữ dữ liệu nhạy cảm trong môi trường Snowflake an toàn của bạn.
Nếu bạn muốn hình dung khả năng của Snowflake Cortex AI, hãy xem hướng dẫn dùng Cortex AI cho các tác vụ NLP cơ bản như tóm tắt và phân tích cảm xúc.
Yêu cầu tiên quyết
Trước khi xây dựng, hãy chuẩn bị tài khoản Snowflake của bạn. Trong tài khoản này, bạn sẽ cần các quyền sau:
USAGEUSAGEUSAGE,CREATE STREAMLIT,CREATE STAGE,CREATE CORTEX SEARCH SERVICEhoặcOWNERSHIPACCOUNTADMIN,SYSADMIN) hoặc một vai trò tùy chỉnh với:USAGEtrên cơ sở dữ liệu và schemaCREATE CORTEX SEARCH SERVICECORTEX_USERkết hợp với các cấp quyền ở mức đối tượng (USAGE,OPERATE) để tương tác với dịch vụ.Lý tưởng nhất, bạn có chút quen thuộc với SQL, Python và các khái niệm AI cơ bản. Bạn sẽ cần hiểu SQL để điều hướng môi trường Snowflake và dữ liệu. Bạn sẽ cần quen thuộc Python để xây dựng ứng dụng Streamlit. Việc hiểu các khái niệm AI cơ bản sẽ giúp chúng ta nắm được các thành phần trong Cortex Search Service.
Về công cụ, chúng ta sẽ tập trung vào Snowsight của Snowflake, là trình duyệt web của họ. Nếu bạn muốn xây dựng cục bộ, bạn sẽ cần IDE/trình soạn thảo riêng.
Trong khi chúng tôi sẽ cố gắng cung cấp một số mẫu dữ liệu, lý tưởng là bạn có một tập văn bản và bộ dữ liệu thử nghiệm muốn làm việc cùng. Nếu bạn chưa có, tôi khuyến nghị biên bản họp của Ủy ban Thị trường Mở Liên bang cho hướng dẫn này (Nguồn từ Snowflake): Mẫu biên bản FOMC.
Cách xây dựng chatbot trong Snowflake Cortex
Được rồi, bắt tay vào xây dựng thôi! Một số hướng dẫn có thể hơi tổng quát để có thể bao phủ đa dạng lựa chọn.
Bước 1: Thiết lập Cơ sở dữ liệu, Schema và Warehouse của Snowflake
Trước tiên, chúng ta sẽ tạo môi trường cần thiết cho dự án chatbot.
Điều này đảm bảo mọi tài nguyên được tách biệt và quản lý chi phí.
Bước 2: Nạp và chuẩn bị dữ liệu
Chatbot của bạn cần dữ liệu để phản hồi truy vấn. Dữ liệu có thể là:
Nếu bạn cần thêm thông tin về việc nạp dữ liệu và cách đưa dữ liệu vào Snowflake, hãy xem hướng dẫn về nạp dữ liệu này.
Ví dụ: staging và nạp một tệp CSV.
Với dữ liệu phi cấu trúc (ví dụ, PDF), bạn có thể xử lý bằng Cortex Document AI. Chúng ta sẽ bàn về cách trích xuất dữ liệu từ các nguồn phi cấu trúc bằng Cortex Document AI ở bước tiếp theo.
Chúng ta muốn biến cả dữ liệu có cấu trúc và phi cấu trúc thành các đoạn (chunk) và gắn kèm một số metadata khi cần để tăng hiệu quả cho RAG.
Bước 3: Huấn luyện Document AI và phân tích tài liệu
Hãy cùng xem cách xây dựng một mô hình bằng Document AI để tạo mô hình tinh chỉnh cho việc phân tích tài liệu. Lưu ý, điều này là tùy chọn và tôi khuyến khích bạn thử các mô hình mặc định của Snowflake để phân tích vì chúng đã sẵn sàng cho sản xuất và xử lý OCR, trích xuất bố cục, phát hiện bảng. Hiện tại bạn không “huấn luyện” trực tiếp các mô hình tùy chỉnh trong Cortex Document AI, nhưng bạn có thể cấu hình các chế độ trích xuất (ví dụ, trích xuất thực thể, trích xuất bảng) cho phù hợp dữ liệu.
Bắt đầu đơn giản với bộ phân tích mặc định, và chỉ thêm cấu hình nâng cao nếu tài liệu của bạn có định dạng phức tạp hoặc bất thường.
Trong Snowsight, mở menu điều hướng và đi tới AI & ML. Chọn
cortex_whcủa chúng ta rồi nhấp “Build”. Từ đó chọn “Create”.Sau khi tạo build, chúng ta tải tài liệu lên build. Khi xử lý xong, ta có thể trích xuất dữ liệu bằng trích xuất thực thể hoặc trích xuất bảng. Trích xuất thực thể cho phép bạn đặt câu hỏi cho tài liệu để lấy dữ liệu ra, trích xuất bảng phân tích dữ liệu dựa trên các trường được xác định trong tài liệu.
Khi mô hình được xây dựng, chúng ta muốn đánh giá độ chính xác và sau đó huấn luyện mô hình khi cần. Huấn luyện mô hình sẽ tinh chỉnh nó theo cấu trúc tài liệu cụ thể của bạn. Giờ đây, chúng ta có thể dùng mô hình này hoặc mô hình mặc định để phân tích tài liệu. Tạm thời, chúng ta sẽ dùng bộ phân tích AI mặc định của Snowflake.
Giờ dữ liệu của chúng ta sẽ nằm trong một bảng và sẵn sàng để chuyển đổi.
Bước 4: Chuyển đổi dữ liệu và trích xuất đặc trưng
Để chuẩn bị dữ liệu cho tương tác chatbot, tài liệu cần được chia nhỏ và làm giàu với metadata. Việc chia nhỏ giúp Cortex Search chính xác hơn.
Đoạn SQL này làm khá nhiều việc, nên tôi tóm tắt lại. Nó lấy từng tệp và làm phẳng văn bản thành các đoạn 2000 ký tự.
Chia nhỏ thành các phần nhỏ hơn giúp tăng hiệu quả tìm kiếm. Sau đó nó thêm một số thông tin tiêu đề (như tiêu đề chính) vào dữ liệu trong đoạn để mô hình có ngữ cảnh về nguồn gốc dữ liệu.
Điều này giúp dữ liệu của bạn có thể tìm kiếm và sẵn sàng cho RAG.
Bước 5: Tạo và cấu hình Cortex Search hoặc Agent
Hãy xây dựng Cortex Search Agent, là dịch vụ chính sẽ tìm kiếm qua các đoạn và lấy ngữ cảnh cho phản hồi.
Điều này sẽ tạo dịch vụ ban đầu đồng thời định nghĩa trường
attributesđể chọn các cột bạn muốn dùng cho lọc kết quả tìm kiếm. Ở đây, tôi chọn “category” để về mặt lý thuyết có thể lọc theo các danh mục sản phẩm khác nhau. Với phần này, tôi đã chọn cộtchunkvốn chứa văn bản đã được chia nhỏ của chúng ta.Cortex Search mặc định là tìm kiếm lai vector + từ khóa, cải thiện độ chính xác của chatbot. Với điều này, chúng ta có thể bổ sung ngữ cảnh bằng mô hình ngữ nghĩa. Nếu bạn kỳ vọng có cách diễn đạt độc đáo hoặc viết tắt kỹ thuật, bạn có thể cấu hình tệp YAML mô hình ngữ nghĩa bằng trình tạo mô hình ngữ nghĩa Cortex Analyst. Điều này cho phép bạn cung cấp ngữ cảnh và từ đồng nghĩa cho mô hình để nó có thể hiểu “CUST” cũng có thể nghĩa là “customer”.
Điều này kích hoạt quy trình RAG, trong đó chatbot truy xuất ngữ cảnh phù hợp trước khi tạo phản hồi.
Bước 6: Xây dựng ứng dụng Chatbot với Streamlit
Giờ hãy xây dựng một giao diện chatbot siêu đơn giản bên trong Snowflake bằng Streamlit. Bạn sẽ muốn dùng Snowsight để tìm ứng dụng “Streamlit in Snowflake” nhằm tạo ứng dụng chatbot. Ứng dụng này sử dụng Snowpark để kết nối với Snowflake của bạn.
Nếu bạn muốn tìm hiểu chung về xây dựng chatbot, tôi khuyến nghị học trước khóa xây dựng chatbot bằng Python.
Đầu tiên, chúng ta cho phép người dùng kết nối tới Snowflake bằng
Session.builder. Sau đó, với một đầu vào cụ thể, ta cung cấp nó như một truy vấn tớiSNOWFLAKE.CORTEX.SEARCHChatbot cơ bản này truy xuất thông tin liên quan từ chỉ mục Cortex Search và trả lời theo thời gian thực. Bạn cũng có thể tạo chatbot đa lượt (hội thoại) bằng cách bổ sung khả năng lưu lịch sử trò chuyện của phiên vào bộ nhớ. Điều này có thể thực hiện ngay trong Streamlit dùng dịch vụ tìm kiếm hiện có.
Bước 7: Triển khai qua các endpoint REST API
Để tích hợp chatbot vào ứng dụng bên ngoài (ví dụ, website, bot Slack), hãy dùng Snowflake REST API. Nhìn chung, URL sẽ trông giống như sau:
https://<account_url>/api/v2/databases/<db_name>/schemas/<schema_name>/cortex-search-services/<service_name>:query.Các API này yêu cầu xác thực vì lý do bảo mật, nghĩa là chỉ giới hạn cho người dùng có quyền truy cập vào môi trường Snowflake của bạn. Cách tiếp cận ưu tiên API này cho phép nhúng khả năng chatbot linh hoạt hơn và đến với đối tượng rộng hơn.
Một trường hợp sử dụng là xây dựng công cụ nội bộ có thể được lưu trữ trên máy chủ web, cho phép người dùng đặt câu hỏi về các tài liệu như báo cáo tài chính hàng quý hoặc biên bản họp. Những tích hợp này sẽ cần phát triển các công cụ có thể gửi yêu cầu API.
Bước 8: Kiểm thử và xác nhận
Trước khi triển khai rộng rãi, hãy kiểm thử chatbot về:
Bạn có thể ghi log truy vấn và so sánh đầu ra với chân lý mặt đất đã biết để làm chuẩn. Thông thường có một tập câu hỏi với câu trả lời định trước và dùng các mô hình khác để so sánh độ chính xác.
Bước 9: Dọn dẹp (Tùy chọn)
Để quản lý chi phí và duy trì quản trị, hãy xóa các tài nguyên không dùng.
Các khái niệm bổ sung & Thực hành tốt
Hãy bổ sung một chút ngữ cảnh cho chức năng chatbot và một số thực hành tốt.
Retrieval Augmented Generation (RAG) trong Snowflake Cortex
RAG là một kỹ thuật được nhiều mô hình ngôn ngữ lớn sử dụng để tăng cường dữ liệu gốc bằng tri thức bên ngoài.
Snowflake Cortex thêm dữ liệu doanh nghiệp của bạn vào ngữ cảnh của chatbot, nhờ đó có thể cung cấp câu trả lời sử dụng ngữ cảnh bổ sung. Bằng cách kết hợp tìm kiếm vector và từ khóa, nó có thể phân tích prompt kèm dữ liệu ngữ cảnh và dùng xếp hạng lại ngữ nghĩa để chọn tài liệu phù hợp nhất nhằm tạo phản hồi có ngữ cảnh.
Điều này cũng đơn giản hóa việc triển khai RAG thông qua một công cụ Cortex Search duy nhất thay vì để người dùng tự tạo vector, hàm tương đồng và embedding. Sức mạnh của RAG cho phép chúng ta xây dựng những thứ như chatbot hướng tới tài liệu kỹ thuật.
Kỹ thuật prompt cho chatbot Snowflake
Kỹ thuật prompt quan trọng để đảm bảo bất kỳ chatbot nào cũng đưa ra phản hồi phù hợp với câu hỏi của người dùng. Có hiểu biết tốt về kỹ thuật prompt là điều then chốt để đảm bảo dịch vụ chat trả về câu trả lời tốt.
Một điều giúp phản hồi tốt hơn là cung cấp cho người dùng hướng dẫn sử dụng để họ đặt câu hỏi hay hơn.
Bạn cũng có thể thêm mẫu prompt vào truy vấn của người dùng trước khi gửi tới dịch vụ Cortex. Mẫu prompt giúp cung cấp ngữ cảnh nhất quán cho mô hình để nó dùng đúng thông tin khi đưa ra câu trả lời.
Một mẫu hữu ích cho dữ liệu doanh nghiệp có thể là: "Bạn là một trợ lý hữu ích cho dữ liệu lịch sử của công ty. Trả lời chỉ dựa trên kho tri thức của công ty." Điều này sẽ giúp mô hình tập trung dùng dữ liệu doanh nghiệp để trả lời.
Bạn cũng sẽ đôi khi gặp câu hỏi hoặc đầu vào mơ hồ. Thay vì buộc mô hình phải trả lời, bạn có thể thêm vào mẫu điều gì đó như: "Nếu người dùng hỏi một câu mơ hồ, hãy cung cấp câu trả lời: Tôi không biết câu trả lời cho việc đó." Điều này có thể khuyến khích họ đặt câu hỏi cụ thể hơn.
Tính linh hoạt và lựa chọn trong triển khai
Snowflake Cortex hỗ trợ các LLM dựng sẵn (nhanh, sẵn sàng sản xuất) và mô hình tùy chỉnh (được tinh chỉnh cho từng lĩnh vực). Chúng có thể được định nghĩa khi tạo dịch vụ. Ngoài ra, thêm các mô hình ngữ nghĩa tùy chỉnh của bạn bổ sung ngữ cảnh theo ngành/doanh nghiệp cho ngôn ngữ vốn có thể khó hiểu với mô hình nếu không cần nạp một tập văn bản lớn. Tính linh hoạt này cho phép tích hợp mô hình trong tương lai.
Bảo mật, quản trị và tuân thủ
Cortex tuân theo cùng kiểm soát truy cập dựa trên vai trò, ghi log kiểm toán và mã hóa như Snowflake cung cấp. Điều này đảm bảo tuân thủ HIPAA, GDPR và các quy định khác. Trách nhiệm chính của bạn là đảm bảo đúng người có đúng vai trò.
Cấu trúc chi phí
Snowflake Cortex sử dụng mô hình định giá theo mức tiêu thụ. Giống các sản phẩm Snowflake khác, bạn bị tính phí cho compute và lưu trữ, nhưng có một vài lớp bổ sung dành riêng cho Cortex Search. Bạn sẽ chi trả cho:
EMBED_TEXTcho token: Trong quá trình xử lý tài liệu, Snowflake Cortex đảm nhiệm nhúng token, và bạn bị tính phí khi tài liệu được thêm hoặc thay đổiHãy thử các kỹ thuật sau để quản lý chi phí:
Kết luận
Xây dựng chatbot với Snowflake Cortex mở khóa AI hội thoại theo đặc thù doanh nghiệp trực tiếp trên Data Cloud. Từ nạp dữ liệu đến truy xuất rồi triển khai, bạn có thể làm việc hoàn toàn trong môi trường được quản trị của Snowflake. Những chatbot này có thể giúp tinh gọn như quy trình onboarding, trả lời các câu hỏi phân tích chuyên sâu và tạo tài liệu kỹ thuật.
Cortex cho phép chatbot dựa trên RAG kết hợp LLM với dữ liệu của chính bạn. Xây dựng chatbot trong Streamlit trên Snowflake giúp dễ dàng triển khai giao diện thân thiện ngay trong Snowflake. Bảo mật, quản trị và quản lý chi phí được tích hợp trong quy trình làm việc. Với Cortex, các tổ chức có thể tiến hóa từ các bảng điều khiển BI truyền thống sang các trợ lý thông minh tương tác hội thoại với dữ liệu.
Để biết thêm thông tin về Snowflake và khả năng AI của nó, hãy xem các tài nguyên sau: