RediSearch:Redisデータベースの効率的な検索とインデックスエンジン

開発者は Redis データベースで複雑なクエリを処理する際、主キーインデックスが不足している、全文検索やベクトル類似度比較をサポートしていないという課題にしばしば直面します。特に大規模なアプリケーションではリアルタイムでデータを集約する必要があります。RediSearch は Redis のために設計されたクエリおよびインデックスエンジンで、二次インデックス、全文検索、ベクトル類似度検索、集約機能を提供し、バックエンドエンジニアやデータサイエンティストが単一の Redis インスタンス内で高性能な検索システムを実現できるようにし、Elasticsearch などの独立したサービスを追加で展開する必要がありません。

二次インデックスが Redis の非主キー検索速度を向上

Redis は元々主キーの迅速なアクセスのみをサポートしていますが、アプリケーションシナリオの多くはユーザー ID、タイムスタンプ、またはタグなどの他のフィールドに基づいてフィルタリングする必要があります。RediSearch は二次インデックスメカニズムを導入し、直接 Redis 内にツリー状またはハッシュインデックス構造を構築し、数値範囲、地理的位置、タグフィルタリングクエリをサポートします。この設計により、クエリの遅延が大幅に短縮され、高い同時実行環境下でも優れたパフォーマンスを発揮します。例えば、EC プラットフォームでは価格範囲やカテゴリに基づいて商品をリアルタイムでフィルタリングでき、全データセットをスキャンする必要がありません。

従来の Redis コマンドである SCAN と比較して、RediSearch のインデックスクエリ速度は数桁速く、特にデータを頻繁に更新する必要がある動的システムに適しています。エンジニアは FT.CREATE コマンドを使用してインデックススキーマを定義するだけで、以降の INSERT および UPDATE 操作を自動的に処理し、開発プロセスを簡素化します。

GitHub - RediSearch/RediSearch: A query and indexing engine for Redis, providing secondary indexing, full-text search, vector similarity search and aggregations. · GitHub インターフェーススクリーンショット
GitHub – RediSearch/RediSearch: A query and indexing engine for Redis, providing secondary indexing, full-text search, vector similarity search and aggregations. · GitHub 公式ページのスクリーンショット

全文検索は多言語および複雑な文法マッチングをサポート

Redis 内で全文検索を実現することは、開発者にとって常に挑戦でした。なぜなら、ネイティブの STRING および HASH は逆インデックスをサポートしていないからです。RediSearch は内蔵の全文検索エンジンを持ち、曖昧マッチング、ステム抽出、そして多言語のトークン化をサポートし、ユーザーは FT.SEARCH コマンドを使用して Google のようなキーワード検索を実行できます。例えば、「Redis パフォーマンス最適化」を検索すると、自動的に関連するドキュメントがマッチします。事前にデータを処理する必要はありません。

この機能はコンテンツ管理システムやログ分析アプリケーションで特に便利で、重み付けスコアのソートや結果のハイライト表示をサポートします。RediSearch はまた、ストップワードリストや同義語辞典を提供し、高いカスタマイズ性を持ち、アジア言語である中国語の処理にも適しています。

ベクトル類似度検索が AI レコメンデーションシステムを加速

AI アプリケーションの台頭に伴い、ベクトルデータの Redis 内でのアクセスおよび類似度計算が重要になっています。RediSearch はベクトルインデックスおよび近似最近傍(ANN)アルゴリズム、例えば HNSW をサポートし、埋め込みベクトルを保存し、コサインまたはユークリッド距離を迅速に計算することを可能にします。開発者は FT.SEARCH にベクトルパラメータを持たせることで、画像の類似検索や意味的なレコメンデーションを実現できます。例えば、EC プラットフォームで視覚的に近い商品を推薦することができます。

外部のベクトルデータベースと比較して、RediSearch は Redis の低遅延の利点を保持し、インデックス構築とクエリが単一のモジュールで完了します。この点は機械学習エンジニアにとって、OpenAI の埋め込みモデルを簡単に統合し、リアルタイムのレコメンデーションエンジンを構築できることを意味します。

集約機能がリアルタイムデータレポート生成を実現

従来の Redis は GROUP BY および集約操作が不足しており、レポートクエリは外部ツールに依存していました。RediSearch は SQL に似た集約パイプラインを提供し、GROUPBY、REDUCE、APPLY、SORTBY を含み、ユーザーが膨大なデータから平均値、カウント、またはグループ合計などの統計を抽出できるようにします。例えば、ユーザー行動データを分析する際、1 コマンドで日次アクティブユーザー数を計算できます。

集約結果はフィルタリングおよびページネーションをサポートし、パフォーマンスは毎秒数百万リクエストを処理できるように最適化されています。この機能により、Redis は単なるキャッシュから完全な分析データベースに拡張され、リアルタイムのダッシュボードや BI ツールとの統合に適しています。

総括すると、RediSearch は Redis を多機能な検索プラットフォームにアップグレードし、基本的なインデックスから高度な AI 検索までのニーズをカバーし、特にマイクロサービスアーキテクチャや高トラフィックアプリケーションに適しています。

製品名:RediSearch
公式ウェブサイト:https://github.com/RediSearch/RediSearch

Nakumura
Nakumura
関連サイト:中文版 / TechRitualThe Base Principle