🌃

EvaDBで非構造化データを検索しよう - DBにもAIの力を -

2024/11/20に公開

https://github.com/georgia-tech-db/evadb

何ができるのか

画像動画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";

詳しくは公式ドキュメントに。
https://evadb.readthedocs.io/en/latest/index.html

今後への期待

まだバージョンが0.3.10となっているため正式リリースとはなっていないようですが、今後のロードマップとして多様なデータソースへの対応やSKLearnとの連携などデータサイエンス分野連携も予定されているようです。

HuggingFaceにある学習モデルを使用したり、トレーニングをさせることなどもできるようなので次世代のDBとして期待できるように思いました。

Discussion