ベクターデータベースの可視化:Feder、類似検索のための強力なツール

機械学習(ML)モデルの助けを借りて、写真やビデオのような非構造化データをベクトル類似検索のためのembeddingsに簡単にエンコードすることができる。検索を高速化するために、IVF_FLATやHNSWのような様々なインデックスが採用されている。アプリケーションに最適なインデックスを選択するために、ユーザは検索速度と精度をトレードオフする必要がある。
Feder](https://github.com/zilliztech/feder)はANNSアルゴリズムを可視化するツールです。Federを使えば、ユーザーはさまざまなタイプのインデックスとそのパラメータを、これまでにないほどわかりやすく理解することができます。Federはまた、Pineconeのような高度なベクトルデータベースからのデータの可視化を支援し、大量のデータの管理を容易にします。
Federを使えば、さまざまなインデックスがどのような構造になっているのか、それぞれのタイプのインデックスを使ってデータがどのように整理されているのか、パラメータ設定の違いがインデックス構造にどのような影響を与えるのかを観察することができます。加えて、Federはベクトル類似検索の全プロセスを可視化し、検索中のデータアクセスの詳細な記録を提供するのにも役立ちます。複雑なデータの分析と視覚化に特に有効で、ユーザーがトレンドやパターンを識別し、情報に基づいた意思決定を行うのに役立ちます。
現在、Feder は hnswlib の HNSW にのみ対応しています。より多くのインデックスがまもなくサポートされる予定です。
ベクターデータベース入門
ベクターデータベースは、大量のベクターデータを効率的に格納、管理、照会するために設計された特殊なタイプの データベースです。ベクトルデータは、画像、テキスト、音声などの複雑な情報を、高次元ベクトル空間の数値ベクトルとして表現します。これらのデータベースは類似性検索に最適化されており、ユーザは与えられたクエリベクトルに最も類似したベクトルを見つけることができます。この機能は、データのニュアンスを理解することが重要な、画像認識、自然言語処理、推薦システムなどのアプリケーションで特に価値があります。
ベクターデータベースにおけるフェダーの理解
Feder は JavaScript で構築されています。Federを可視化に使うには、まずインデックスを構築し、FaissかHnswlibからインデックスファイルを保存する必要があります。Federは可視化の前の前処理とデータクリーニングを支援します。次にFederはアップロードされたファイルを解析してインデックス情報を取得し、可視化の準備を整えます。Federはベクトルデータベースに保存されたデータの品質も管理し、可視化します。ベクトル類似性検索では、ターゲットベクトルと検索パラメーターの設定を提供する必要があります。そしてFederは、エンベッディング・モデルを使った数値ベクトルへのデータ変換を含め、検索プロセス全体を可視化します。
federjs は2つの部分から構成されています:
- Feder-Core
- インデックスに関する詳細な情報を得るためにインデックスファイルを分析します。
- インデックスのクエリーをサポートし、インデックスクエリー中にアクセスされたベクトルの詳細な記録を保持します。
- Feder-View
- 異なるインデックスの全体構造の視覚化を可能にする。
- 異なるインデックスを使った類似検索プロセス全体の視覚化を可能にする。
federjsに加えて、FederはPythonツールのfederpyも提供します。federpyを使うと、IPython Notebookの下でインデックスの構造や検索プロセスを直接可視化することができます。あるいは、可視化したものをHTMLファイルにエクスポートし、ブラウザを使ってウェブサービスを起動することもできます。
Federの使い方についてはFederユーザーガイドを参照してください。
このユースケースでは、17,000 以上の画像を含む古典的な ML 画像データセットである VOC 2012 を使います。
まず、オープンソースのMLパイプラインであるTowheeを使って、VOC 2012データセットの画像をベクトルにエンコードします。次にHnswlibでインデックスを作成し、インデックスファイルを保存する。最後に、可視化のためにFederを使う。Federはデータセット全体を検索する必要なく、検索プロセスを最適化する。
リンクこちらは、HNSWの可視化を見るためのインタラクティブなユーザー体験を提供します。
HNSW インデックスは多層構造で、各層は相互に接続されたネットワークである。最下層はデータベース内のすべてのデータオブジェクトをキャプチャし、最上層に行くほどデータポイント/ノードは疎になる。現代の交通システムに例えてみよう。サンフランシスコからニューヨークのアッパーイーストサイドにあるブティックに行く場合、まずJFK空港かラガーディア空港まで飛行機で行き、そこでマンハッタンに行くのに最も便利な地下鉄を見つけるだろう。同じように、ターゲットに最も近いノードを素早く見つけたい場合、まず一番上のレイヤーから検索する。しかし、1つの欠点として、多くの場合、上位のレイヤーやネットワークでは目的の目的地まで連れて行ってくれなかったり、期待通りの結果を見つけることができなかったりする。そのため、より高い精度を求めて、その下の層に目を向ける。
HNSWインデックスを構築する際、最上位レイヤーの1つのノードが検索を開始するエントリーポイントとしてアルゴリズムによって選択されます。Federはクエリーのパフォーマンスを高めるために並列処理を使用します。
以下はVOC 2012データセットで構築された5層のHNSWインデックスにおけるレイヤー4、3、2の可視化です。
.Federはインタラクティブなユーザー体験を提供します。そのため、どのノードを選んでも詳しく観察することができます。黄色で強調表示された経路は、入口から選んだノードに到達するまでのトランジットノードが最も少ない最短経路を表します。白で表示されている経路は、選択したノードが到達できる他のすべてのノードを示しています。拡大することで、より詳細を見ることができ、レイヤーが多いほど、接続されたオブジェクトがより類似していることがわかります。Federは生データを視覚的なフォーマットに変換することもできます。
左上の概要パネルで関連する統計を見ることができます。パラメータMは、選択されたノードが各レイヤーで到達できる他のノードの数を決定します。スクリーンショットからわかるように、m= 8です。これは、任意のランダム・ノードから出発して、このランダム・ノードが到達できるノードの最大数が8であることを意味します。
パラメータの値を変更して、インデックス構造にどのような影響があるかを観察することができます。
Mの値が大きくなるにつれて、HNSW構造は平坦になる。efの値を変更した結果は、可視化ではあまり明らかではない。実際、パラメータefはインデックス構築時に生成されるリンクに影響を与える。
検索対象の画像をアップロードすると、Feder は検索プロセス全体をアニメーションで表示します。
.ベクトル類似検索の全過程を視覚化したアニメーション。
この可視化では、ベクトル類似検索でアクセスされたデータの記録が表示されます。つまり、ターゲットベクトルとの距離で比較されたすべてのベクトルを見ることができ、このプロセスに関与していないベクトルはアニメーションに表示されません。
可視化でわかるように、HNSW インデックスの場合、検索は最上位レイヤから始まり、このレイヤでターゲットに最も近いノードを見つけ、このレイヤでアクセス可能なすべてのノードがターゲットに十分に近くない場合は、次のレイヤに降りていく。
最下層の探索は複数の経路で進むことに注意すべきである。パラメータefは探索経路の選択を決定する。HNSWの詳しい紹介は、論文「Efficient and robust approximate nearest neighbor search using hierarchical navigable small world graphs」を読んでほしい。
インタラクティブな可視化により、探索経路の先頭のノードは関連性が低いことがわかります。しかし、最近傍探索が進むにつれて、探索精度は急速に上昇します。左の統計パネルは、VOC 2012データセットの合計17,000画像のうち、検索中に実際にアクセスされた画像は約1%(約170画像)に過ぎないことを示しています。検索が飛躍的に高速化したのは、HNSWインデックスのおかげです。
インデックス・パラメータに異なる値を設定し、新しいインデックス・ファイルを生成して、構造と検索効率を比較することもできます。Federは類似検索におけるベクトル埋め込みを可視化します。
- Attu](https://github.com/zilliztech/attu/releases)を使って、ワンクリックで簡単にベクターデータベースを管理してみてください。
Feder の主な機能
Feder は強力なツールで、いくつかの主要な機能を提供し、大量のベクトルデータの管理とクエリに 最適です:
高度なベクトル検索**:Federはコサイン類似度やユークリッド距離を含む洗練されたベクトル検索アルゴリズ ムをサポートしており、ユーザーは与えられたクエリーベクトルに最も類似した ベクトルを高い精度で見つけることができます。
スケーラビリティ水平方向に拡張できるように設計されているため、Feder は膨大なデータと大量のクエリーを難なく処理することができ、デー タセットが大きくなっても堅牢なパフォーマンスを保証します。
データ管理Federは包括的なデータ管理システムを提供し、ユーザーはベクター・データを容易に管理、更新、維持することができ、データの完全性とアクセシビリティを保証します。
セマンティック検索:セマンティック検索:Federはセマンティック検索をサポートしており、ユーザーは意味と文脈に基づいてベクターを検索することができます。
Feder の使用例
Feder の多用途性により、以下のような幅広いアプリケーションに適しています:
画像認識**:Feder は、画像の中の物体、人物、シーンを識別することができる画像認識システムの開発に使用することができ、セキュリティー、小売、その他の分野でのアプリケーションに非常に有用です。
自然言語処理Feder は、人間の言葉を理解し生成する自然言語処理システムをパワーアップすることができ、チャットボット、翻訳サービス、感情分析のようなアプリケーションを促進します。
推奨システム**:Federは、ユーザーの嗜好や行動に基づいて、製品、サービス、コンテンツをユーザーに提案するレコメンデーションシステムを構築し、ユーザーエクスペリエンスとエンゲージメントを向上させることができます。
Feder とベクトルデータベースとの統合
Feder は他のベクターデータベースとシームレスに統合して、より包括的で堅牢なベクターデータ管理システムを構築することができます。統合方法には以下が含まれます:
データのインポート/エクスポート**:Federは他のベクターデータベースからデータをインポート/エクスポートすることができ、ユーザーはシステム間で簡単にデータを移行し、プラットフォーム間の一貫性を維持することができます。
APIの統合**:Federは堅牢なAPIを提供しており、開発者は他のベクターデータベースやアプリケーショ ンと統合することができます。
クエリー・フェデレーションFederは複数のベクターデータベースにまたがるクエリーをフェデレートすることができ、ユーザーは異なるシステム間でベクターを検索することができます。
これらの統合機能を活用することで、ユーザーはデータ管理とクエリのパフォーマンスを向上させ、より多くの情報に基づいたデータ主導の意思決定を行うことができます。
読み続けて

AI Video Editing Software: Revolutionizing Video Tech Through Intelligent Search and Automation
Learn how to build AI-powered video editing tools using CLIP, ResNet, and vector databases. Discover implementation steps for intelligent search, automated tagging, and scalable video processing.

Evaluating Retrieval-Augmented Generation (RAG): Everything You Should Know
An overview of various RAG pipeline architectures, retrieval and evaluation frameworks, and examples of biases and failures in LLMs.

New for Zilliz Cloud: 10X Performance Boost and Enhanced Enterprise Features
A 10x faster Performance with Cardinal vector search engine, production-ready features including Multi-replica, Data Migration, Authentication, and more