🌃
EvaDBで非構造化データを検索しよう - DBにもAIの力を -
何ができるのか
画像や動画、PDFなどの非構造化データを
DBレコードと同じようにSQLクエリで扱うことができます。
すごい便利そうですね!
非構造化データ置き場所としての接続先は下記などが可能です。
- ローカルファイルストレージ
- AWS S3バケット
どのように使用するのか
まずEvaDBを使用するにはPythonインタプリタが3.9以上であることが必要です。
pythonにて下記のようにインストールします。
# Python仮想環境を作成します。
python -m venv evadb-venv
# 仮想環境の立ち上げ:MacOSの場合
source evadb-venv/bin/activate
# 仮想環境の立ち上げ:Windowsの場合
evadb-venv\Scripts\activate.bat
# 関連ライブラリの更新とEvaDBの最新化
pip install --upgrade pip setuptools wheel
pip install --upgrade evadb
EvaDBは既存のDBに接続してINDEXを作成し、そこにデータソースを読み込んで使用します。
接続は下記のようにDBカーソルを取得します。
import evadb
cursor = evadb.connect().cursor()
# クエリの実行
cursor.query("SHOW FUNCTIONS;").df()
ストレージから検索先のデータをどうロードするかというと下記のクエリを実行
# 動画かつS3の場合の例:AWS S3上のmnist.mp4という動画をMNISTVidというテーブルへ保存
LOAD VIDEO 's3://bucket/eva_videos/mnist.mp4' INTO MNISTVid;
# 画像かつローカルの場合の例:
LOAD IMAGE 'reddit-images/*.jpg' INTO reddit_dataset;
これ、どこに保存されているかというと、デフォルトではevadb_dataというローカルフォルダに保存されているそうです。このフォルダ管理が運用時の肝になりそうですね。
公式に記載されているサンプルですが、例えばあるサイトのレビューとして画像やPDF、動画データからネガティブなレビューがあるかを下記で検索しています。
#
SELECT
ChatGPT("Respond to the review with a solution to address the reviewer's concern",
review)
FROM
postgres_data.review_table
WHERE
ChatGPT("Is the review positive or negative?", review) = "negative";
詳しくは公式ドキュメントに。
今後への期待
まだバージョンが0.3.10となっているため正式リリースとはなっていないようですが、今後のロードマップとして多様なデータソースへの対応やSKLearnとの連携などデータサイエンス分野連携も予定されているようです。
HuggingFaceにある学習モデルを使用したり、トレーニングをさせることなどもできるようなので次世代のDBとして期待できるように思いました。
Discussion