メインコンテンツまでスキップ

SQLの今

· 約3分
大友内装(粒)

このごろAIが流行っていて、ビックデータの処理にリレーショナルDBを用いるのはあるあるで、なんでかって言ったら昔から使ってるからです。

最近の流行りであるRAGではベクトルでデータの類似度を算出して生成AIにデータを突っ込める、ファインチューニングよりも少ないデータでファインチューニングと同じようなパフォーマンスが得られる(ということもある)。

AI時代のSQL

生成AIやRAG、データの分析用途で用いられるDBにPostgreSQL というDBがある。 今まではMySQLPostgreSQLで二分化していた(と言われている)が、近頃はPostgreSQLが流行っている。

PostgreSQLの何がいいのか

まず、PostgreSQLはリレーショナルデータベースでありながら、JSON形式を扱える。これにより、データの見やすさを担保するだけではなく、実際に分析に用いる際に便利にある。

そしてベクトル検索をサポートする拡張機能が存在している。RAGでベクトルDBとして扱えるので普通のDBとして使いつつ、ベクトル用のカラムを作ることが可能。

PostgreSQLとSupabase

SupabaseはPostgreSQLを使って、Firebaseに類似した機能を提供してくれるもので、Supabaseでベクトル用の拡張機能を使うことももちろん可能で、サービス自体も個人での利用なら無料で十分なのが助かる。

MySQLはベクトルが扱えないのか

広い目で見たらNoといえる。なぜならベクトルは極論数値から成る配列だから。そして一応コサイン類似度を求める構文もサポートされている(なおハチャメチャに処理速度が遅いことは留意されたし。)。ただ、ベクトル検索用のエンジンを外部で用意できるなら話は別で、ベクトル算出用の数字さえあればいいので確かに遅いっちゃ遅いけど実用はギリギリできるレベルまで使えるようになる。よかったー