Snowflake Cortex LLM Functionsとは
Snowflake Cortex LLM FunctionsはSQLでLLMを呼び出すことができる1Snowflake独自の関数です。
シンプルな呼び出し
SELECT SNOWFLAKE.CORTEX.COMPLETE('snowflake-arctic', 'こんにちは');
テーブル内のフィールドを引数にした呼び出し
SQLからは単純に関数として扱えるので、当然、テーブルに対するSELECT文の中に入れ込むこともできます。
SELECT SNOWFLAKE.CORTEX.COMPLETE('snowflake-arctic', 'こんにちは') FROM SOME_TABLE LIMIT 10;
まったく意味のないSQLですが、LLMが行数と同じ回数だけ呼び出されました。
CONCAT関数を使うことで文字列を結合することができます。これを使ってフィールドを結合したプロンプトを各行ごとに組み立てることで、意味のある処理が実現できます。
以下のSQLはお店の店名からそのジャンルを分類しようという試みです。
-- Snowflake Cortexでテーブルの各行に対してLLMを呼び出す
-- https://docs.snowflake.com/en/sql-reference/functions/complete-snowflake-cortex#responses-from-table-column
SELECT
STORE_NAME,
SNOWFLAKE.CORTEX.COMPLETE(
'snowflake-arctic',
CONCAT('nameタグで囲まれた文字列は飲食店の店名です。この店名が本格イタリアンであると推定されるときは1、そうでなければ0を出力してください。: <name>', STORE_NAME, '</name>')
) AS RESPONSE
FROM SHIBUYA LIMIT 500;
精度については検討の余地がありますが、それらしく動くことが確認できました!
なお、LLMなので想定と異なる出力をしてくれることもあります。後処理が大事。
-
Snowparkと呼ばれるPythonライブラリから呼び出すことも可能 ↩