こちらでウォークスルーしている際に気になった関数の一つがai_extract
関数でした。
テキストデータそのままですと、検索するくらいしか使い道がなかったのですが、この関数を使うことで色々な観点から構造化データを作り出すことができます。
早速トライしてみます。使うデータは自分のQiita記事です。
select * from `takaakiyayoi_catalog`.`qiita_2023`.`taka_qiita_2023` limit 100;
こちらのbody
列にai_extract
を適用します。ai_extractの結果はSTRUCT型なので要素を取り出して列にしています。CTE(Common Table Expression)を使ってます。
CREATE OR REPLACE TABLE takaakiyayoi_catalog.qiita_2023.taka_qiita_llm AS
WITH extracted_data AS (
SELECT
title,
body,
ai_extract(body, array("製品名", "機能名", "ジャンル")) AS extracted
FROM
qiita_2023.taka_qiita_2023
LIMIT
10
)
SELECT
title,
body,
extracted.`製品名` AS product,
extracted.`機能名` AS feature,
extracted.`ジャンル` AS genre
FROM
extracted_data;
テーブルを確認します。
SELECT
title,
product,
feature,
genre
FROM
takaakiyayoi_catalog.qiita_2023.taka_qiita_llm;
これまでは、テーブルを設計する際にどのようなメタデータを管理するか(ある意味構造化)を考えるのが普通でしたが、LLMを活用することでとりあえずテキストを登録しておいて、後からメタデータを抽出して構造化することができるようになりました。興味深い。