Redisで実現するベクトル類似性検索(VSS)のすべて:基礎知識から活用事例、始め方まで
Redisの新時代:ベクトル類似性検索(VSS)とは
RedisDays NY 2022において、Redisは新しい「ベクトル類似性検索(Vector Similarity Search:VSS)」機能のパブリックプレビューを発表しました。VSSはRediSearch 2.4の一部として提供されており、Docker、Redis Stack、そしてRedis Enterprise Cloudの無料プランおよび固定サブスクリプションで利用できます。
本記事では、ベクトル類似性の基本概念からその応用例までをわかりやすく解説し、Redis VSSを始めるためのリソースをご紹介します。
ベクトル類似性とは何か?
簡単に言えば、ベクトル類似性とは、2つ以上のベクトルがどれだけ異なる(または類似している)かを測る尺度のことです。ベクトルは「数値のリスト」と考えてください。
なぜ今、ベクトル類似性検索が注目されているのか?
ベクトル検索の中核的な価値は、音声、自然言語、画像、動画クリップ、録音データなど、さまざまな種類のデータに基づいて情報を取得できる点にあります。非構造化データを対象に検索できることから、VSSは高度な類似性検索体験を構築するための基盤技術となっています。
自分のデータからベクトルはどうやって生成されるのか?
AI技術の進歩により、データサイエンティストはほぼあらゆるデータ「エンティティ」をベクトル表現へ変換するモデルを構築できるようになりました。ここでいうエンティティとは、トランザクション、ユーザープロファイル、画像、音声、長文テキスト(文や段落)、時系列データ、グラフなど多岐にわたります。これらはいずれも「特徴ベクトル(feature vector)」、いわゆる「埋め込み(embedding)」へと変換できます。
埋め込み(embedding)にはどんな意味があるのか?
ベクトル埋め込みはデータの数値表現であり、コンピュータやデータベースが容易に比較できる形で、エンティティの最も本質的な特徴を捉えます。興味深いのは、あるモデルが2つのエンティティに対して類似した埋め込み(ベクトル)を生成した場合、元の2つのエンティティが何らかの根本的な意味で類似していると推測できるという点です。
埋め込みの生成にデータサイエンティストである必要はある?
まったくその必要はありません。テキスト、画像、時系列データから埋め込みを生成できる、無料で利用可能なAIモデルやライブラリが多数存在します。たとえば、文章の埋め込みにはHuggingFace Sentence Transformers、画像にはImg2Vec、時系列データにはFacebook Katsを使用できます。AI/MLの実務者にとって、データエンティティの「密な(dense)」特徴表現(いわゆる埋め込み)を生成するという概念はおなじみのものでしょう。これらの特徴ベクトルをRedisに保存し、類似性検索を実行できるようになったのです。
ベクトル類似性検索で構築できるアプリケーション
私たちが日常的に接しているアプリケーションの多くが、ベクトル類似性検索に支えられています。Eコマースサイトのビジュアル検索から、自動チャットボット/Q&Aシステム、各種レコメンデーションシステムまで、その活用範囲は幅広く、リアルタイムでの類似性の発見が価値創出の鍵となるあらゆるアプリでVSSは役立ちます。主なユースケースは以下の通りです。
- Eコマースのレコメンデーション: ビジュアル類似性やセマンティック類似性を活用し、高度な検索体験と商品レコメンデーションを実現
- セマンティック類似性: 高度な検索体験、チャットボット、さらにはQ&Aシステムの構築
- 時系列データの類似性: 疾病の感染パターン類似の発見や、過去のパターン類似に基づく取引機会の特定
- グラフデータの類似性: 一見無関係なアクターやネットワーク間の接続パターン類似の発見
- トランザクションの類似性: 過去に検出された不正・脅威との類似性に基づく潜在的な不正や脅威の検知
- ユーザープロファイルや商品の類似性: パーソナライズされたレコメンデーションの生成や、埋め込みデータから明らかになったパターンに基づく顧客セグメンテーションの精緻化
Redisはベクトル類似性検索をどう実装しているのか?
RediSearchは、RedisハッシュまたはJSON形式で保存されたRedisデータに対して、クエリ機能、セカンダリインデックス、全文検索を提供するRedisモジュールです。RediSearch 2.4では、ベクトル類似性検索のサポートが導入されました。
RediSearch 2.4により、Redis開発者は以下のことが可能になります。
- Redisハッシュ内にBLOBとして保存されたベクトルデータのインデックス化とクエリ
- FLATとHNSWという2つの代表的なインデックス方式の利用
- コサイン距離、内積、ユークリッド距離という3つの一般的なベクトル距離メトリクスの利用
- GEO、NUMERIC、TAG、TEXTデータに対する従来のRediSearchフィルタリング機能とベクトル類似性を組み合わせたハイブリッドクエリの実行。Eコマースにおける典型的な例としては、「指定した画像に視覚的に類似したアイテムを、特定の地域で入手可能かつ価格帯の範囲内に限定して検索する」といったクエリが挙げられます。
試せるデモはある?
Pythonをお使いの方は、以下のデモを試してみてください。
- 公開されているAmazonデータセットを使ったビジュアル・セマンティック類似性検索
- 金融ニュース記事の感情分析とセマンティック類似性
Javaの場合は、インデックスの作成、データのロード、クエリの実行方法を示す基本的なデモが用意されています。
さらに学ぶには?
RedisDays 2022の以下の2つのセッションのアーカイブ映像をご覧ください。
- 基調講演(Keynote): 「金融サービス」アプリケーションへのリアルタイムAIの組み込み
- Behind the Scenes: AIによる企業提出書類に埋もれたトレーディングシグナルの発掘
セッションはオンデマンドで視聴可能です。また、RediSearchドキュメントの「Working with Vectors」も随時参照できます。
始め方は?
RediSearch 2.4を備えたRedisデータベースを作成する方法は3つあります。ターミナルから、以下のいずれかの方法で導入できます。
- Docker: 「docker run -p 6379:6379 redislabs/redisearch:2.4.5」
- Redis Stack: 「brew install redis-stack」(Mac OSの場合)。その他のOSについては「Getting started with Redis Stack」を参照してください。
- Redis Enterprise Cloud: 無料サブスクリプションを作成する
Redis Enterprise Cloudのサブスクリプションを選択する場合は、RediSearch 2.4が含まれている「Redis Stack」オプションを必ず選択してください。
-
StrapiにUpstash Redisでサーバーレスキャッシングを導入する方法
プロジェクトを期限内に納品するには、既存の技術をできる限り活用することが重要です。独自実装につながる判断をするたびに、そのソリューションを自前でメンテナンスし続けるコストも考慮しなければなりません。だからこそ、Strapiのようなオープンソースツールは、次のプロジェクトのREST API構築に最適な選択肢となるのです。 Strapiは最先端のヘッドレスCMSです。グラフィカルなインターフェースでスキーマを定義できるため、技術者以外の人でもデータモデリングが可能です。開発チームはバックエンドの実装を気にすることなく、Web・モバイルアプリの構築や新機能の提供に集中できます。何しろ、大規模なオープ
-
Redis(REmote DIctionary Server)とは?基本概念と主な特徴を徹底解説【初心者向けチュートリアル】
Redisは、BSDライセンスのオープンソースNoSQLデータベースです。データをメインメモリ(RAM)上に格納するインメモリデータベースであり、キーバリューストアという仕組みに基づいて設計されています。また、データ構造ストア(Data Structure Store)とも呼ばれています。 それでは、それぞれの用語をひとつずつ詳しく見ていきましょう。 1. キーバリューストア(Key-Value Store) キーバリューストアとは、データを「キー」と「値」のペアとして保存・取得するデータストレージの方式です。各キーは、データベース内に保存された値を一意に識別する役割を持ちます。Redisは、