はじめに
この記事では「SUQL: Conversational Search over Structured and Unstructured Data with Large Language Models」という論文でLLMを利用して構造化データと非構造化データを検索できるSUQLという技術について書かれていたので概要と活用できそうなことを考えた内容を書いてみました。
原論文は以下のリンクから読めますのでそちらをご参照ください。
- 論文名: SUQL: Conversational Search over Structured and Unstructured Data with Large Language Models
- 著者:Shicheng Liu, Jialiang Xu, Wesley Tjangnaka, Sina J. Semnani, Chen Jie Yu, Gui Dávid, Monica S. Lam
- 公開日:2023年11月16日
- URL:https://arxiv.org/abs/2311.09818
SUQLとは?
構造化データと非構造化データからなるデータの両方にまたがる会話形式の検索に焦点を当てた技術。
例えば数値で表されるようなデータとテキストを持つようなデータを同時に持っている場合、SUQLを使用することで解析を行うことができるようになるとのことです。
SUQLは、テキストを処理するための機能をSQLをもとに追加しています。
githubでインストールの仕方や使い方などがREADMEに記載されていますが、中身を見てみるとPythonで書いたユーザー定義関数をPostgreSQLで使えるようにしているようです。
https://github.com/stanford-oval/suql/tree/main
SUQLで拡張されている機能
SUQLではSQLのテキスト型を使って新しいテキストの型を導入しています。
新たな型をもとにしてSUQL特有の機能を拡張しているようです。
それぞれの関数や機能はLLMを活用することで実現されています。
answer関数
answer関数は、例えば、reviewsというレストランのレビューの内容が記載されているカラムがある場合、answer(reviews, 'このレストランは家族向けですか?')と書くことで、レビューの内容からレストランが家族向けかどうかを判定できます。
Where句の条件文として記載することができます。
summary関数
Summary関数は、テキスト情報の概要が必要な場合に使用されます。例えば「レストランAのレビューを要約する」はSELECT summary(reviews) FROM Restaurants WHERE name = 'A';として表現できます。
=演算子のオーバーロード
SUQLでは、例えば、料理の傾向を持つcuisinesというカラムがあったときに'coffee' = ANY(cuisines)という式は、料理属性が'コーヒー'である場合だけでなく、関連する他の料理の値(例: 'コーヒー&ティー'、'カフェ')に対してもTrueと評価されます。
活用できそうな場面
論文を読んでみて業務に活かせそうなことがないかと考えてみました。
不具合分析
- 目的:検証中に記録されたバグレポートの分析
- データの種類:
- 構造化データ:バグランクなど。
- 非構造化データ:事象や機能名など。
- 類似している事象や機能からバグランクなどの構造化データに紐づけた分析を行い、傾向を分析する。
研修用のアンケートの分析
- 目的:研修後のアンケート結果を分析する。
- データの種類:
- 構造化データ:数値による研修の評価。
- 非構造化データ:研修に対してのコメントや感想。
- 特定のキーワードや感情が含まれるアンケートが高評価か低評価かといった分析。
進捗分析
- 目的:タスクの進捗状況を分析する。
- データの種類:
- 構造化データ:タスクの完了率。
- 非構造化データ:進捗報告のテキスト
- 進捗報告と完了率からのボトルネックの発見。
感想
論文の中では金融や法律などの分野固有の応用などについて触れられていましたが、
汎用的に使うことができれば分析という作業において様々な現場で使うことができそうだと感じました。
現状だとGithubに記載されている使い方はPostgreSQLを使っていましたが、他のDBでも応用ができれば使う場面が増やすといったこともできそうです。
使用するデータのテーブル情報などについてはプロンプトで指示していくことが必要となりますが、この点などもカスタマイズしていけば応用する幅が広がりそうです。
論文を読んでみただけの感想にはなりますので、Githubにある説明をもとに年末年始にもし空き時間があれば触ってみて業務に応用することができないかを動作させてみた内容をもってさらに検討してみたいと思います。
参考