🚀 Zilliz Cloudを無料で試す、完全管理型のMilvus—10倍の高速パフォーマンスを体験しよう!今すぐ試す>>

milvus-logo
LFAI
  • Home
  • Blog
  • Milvusのおかげで、誰でも10億枚以上の画像のベクターデータベースを構築できるようになった

Milvusのおかげで、誰でも10億枚以上の画像のベクターデータベースを構築できるようになった

  • Scenarios
November 11, 2020
milvus

コンピュートパワーの向上とコンピュートコストの低下により、マシンスケールのアナリティクスと人工知能(AI)がかつてないほど身近になった。これは、たった1台のサーバーと10行のコードで、10億枚以上の画像をリアルタイムで検索できる逆引き画像検索エンジンを構築できることを意味する。この記事では、オープンソースのベクトルデータ管理プラットフォームであるMilvusを使用して、非構造化データの処理と分析のための強力なシステムを構築する方法と、これを可能にする基盤技術について説明する。

戻る

AIはどのように非構造化データ分析を可能にするのか?

よく言われる統計によると、世界のデータの80%は非構造化データですが、分析されたことがあるのはわずか1%です。画像、動画、音声、自然言語などの非構造化データは、あらかじめ定義されたモデルや整理方法に従わない。そのため、大規模な非構造化データセットの処理と分析は困難である。スマートフォンやその他の接続デバイスの普及が非構造化データの生産を新たな高みへと押し上げる中、企業はこの漠然とした情報から得られる洞察がいかに重要であるかをますます認識するようになっている。

何十年もの間、コンピューター科学者たちは、特定のデータタイプの整理、検索、分析に合わせたインデックス作成アルゴリズムを開発してきた。構造化データには、ビットマップ、ハッシュテーブル、B-treeがあり、これらはオラクルやIBMのような巨大企業が開発したリレーショナル・データベースでよく使われている。半構造化データに対しては、転置インデックスアルゴリズムが標準的で、Solrや ElasticSearchのような一般的な検索エンジンで見ることができる。しかし、非構造化データのインデックス作成アルゴリズムは、ここ10年でようやく広く利用できるようになった、計算集約的な人工知能に依存している。

ニューラルネットワークは、非構造化データをコンピュータフレンドリーな特徴ベクトルに変換する。

ニューラルネットワーク(CNNRNNBERTなど)を使用すると、非構造化データを、整数または浮動小数点数の文字列である特徴ベクトル(別名エンベッディング)に変換することができる。この数値データ形式は、機械による処理と分析がはるかに容易である。非構造化データを特徴ベクトルに埋め込み、ユークリッド距離や余弦類似度などの尺度を使ってベクトル間の類似性を計算することで、逆画像検索、動画検索、自然言語処理(NLP)などにまたがるアプリケーションを構築することができる。

Blog_Thanks to AI, Anyone Can Build a Search Engine for 1+ Billion Images_2.jpeg ブログ_AIのおかげで、誰でも10億枚以上の画像の検索エンジンを構築できる_2.jpeg

ベクトルの類似性を計算するのは、確立されたアルゴリズムに依存する比較的単純なプロセスである。しかし、非構造化データセットは、特徴ベクトルに変換された後であっても、従来の構造化データセットや半構造化データセットに比べ、一般的に数桁大きい。ベクトル類似性検索は、大規模な非構造化データを効率的かつ正確にクエリするために必要な膨大なストレージスペースと計算能力によって複雑なものとなっている。 しかし、ある程度の精度を犠牲にできるのであれば、高次元の大規模データセットに対するクエリ効率を劇的に改善できる様々な近似最近傍(ANN)検索アルゴリズムが存在する。これらのANNアルゴリズムは、類似したベクトルをクラスタリングすることでストレージ要件と計算負荷を減らし、ベクトル検索を高速化する。一般的に使用されるアルゴリズムには、ツリーベース、グラフベース、複合ANNなどがあります。

ベクトルデータ管理プラットフォームとは?

ベクトルデータ管理プラットフォームは、膨大なベクトルデータセットを保存、処理、分析するための専用アプリケーションです。これらのツールは、大量のデータを簡単に扱えるように設計されており、ベクトルデータ管理を効率化する機能を備えています。残念ながら、現代のビッグデータの課題を解決するのに十分な柔軟性とパワーを兼ね備えたシステムはほとんど存在しない。Milvusは、2019年にオープンソースライセンスの下でリリースされた、Zillizによって始められたベクターデータ管理プラットフォームであり、この空白を埋めようとしている。

ベクターデータ管理に対する既存のアプローチの限界とは?

非構造化データ分析システムを構築する一般的な方法は、ANNのようなアルゴリズムと、Facebook AI Similarity Search(Faiss)のようなオープンソースの実装ライブラリを組み合わせることだ。いくつかの制限があるため、これらのアルゴリズムとライブラリの組み合わせは、milvusのような本格的なベクトルデータ管理システムには相当しません。ベクトルデータを管理するために使用される既存の技術は、以下の問題に直面している:

  1. 柔軟性:柔軟性: 既存のシステムは通常、すべてのデータをメインメモリに保存するため、複数のマシンにまたがって実行することができず、巨大なデータセットの処理には適していない。
  2. 動的なデータ処理:既存のシステムに入力されたデータは静的であると想定されることが多いため、動的データの処理が複雑になり、リアルタイムに近い検索が不可能になる。
  3. 高度なクエリー処理:ほとんどのツールは、有用な類似検索エンジンを構築するために不可欠な高度なクエリ処理(属性フィルタリングやマルチベクタークエリなど)をサポートしていない。
  4. ヘテロジニアス・コンピューティングの最適化:CPUとGPU(Faissを除く)の両方における異種システムアーキテクチャの最適化を提供するプラットフォームはほとんどなく、効率の低下を招いている。

Milvusはこれらの制限をすべて克服しようとしています。様々なアプリケーションインターフェース(Python、Java、Go、C++、RESTful APIのSDKを含む)、複数のベクトルインデックスタイプ(量子化ベースのインデックスやグラフベースのインデックスなど)、高度なクエリ処理をサポートすることで、柔軟性を高めています。Milvusは、ログ構造化マージツリー(LSMツリー)を使用して動的なベクトルデータを処理し、データの挿入と削除を効率的に行い、検索をリアルタイムに実行します。Milvusはまた、最新のCPUとGPUの異種混在コンピューティングアーキテクチャのための最適化も提供しており、開発者は特定のシナリオ、データセット、アプリケーション環境に合わせてシステムを調整することができます。

Blog_Thanks to AI, Anyone Can Build a Search Engine for 1+ Billion Images_3.png ブログ_AIのおかげで、誰でも10億枚以上の画像の検索エンジンを構築できる_3.png

Milvusは、様々なANNインデックス作成技術を用いて、トップ5の想起率99%を達成している。また、1分間に100万件以上のデータを読み込むことができる。この結果、10億枚の画像に対して逆引き検索を実行した場合、クエリ時間は1秒未満となります。Milvusは、複数のノードに分散配置されたシステムとして動作するクラウドネイティブアプリケーションであるため、100億枚、あるいは1000億枚の画像を含むデータセットでも、同様のパフォーマンスを簡単かつ確実に達成することができる。さらに、このシステムは画像データに限らず、コンピュータ・ビジョン、会話AI、推薦システム、新薬発見などに応用できる。

上述したように、Milvusのような有能なベクトルデータ管理プラットフォームと近似最近傍アルゴリズムの組み合わせにより、膨大な量の非構造化データの類似性検索が可能になる。この技術は、多様な分野にまたがるアプリケーションの開発に利用することができます。以下では、ベクトルデータ管理ツールとベクトル類似検索の一般的な使用例を簡単に説明します。

Googleのような大手検索エンジンは、すでに画像による検索オプションをユーザーに提供している。さらに、eコマースプラットフォームは、この機能がオンライン買い物客にもたらす利点に気づいており、Amazonはスマートフォンアプリケーションに画像検索を組み込んでいます。

Blog_Thanks to AI, Anyone Can Build a Search Engine for 1+ Billion Images_4.png ブログ_AIのおかげで、誰でも10億枚以上の画像の検索エンジンを構築できる_4.png

Milvusのようなオープンソースソフトウェアを使えば、どんな企業でも独自の逆引き画像検索システムを構築することが可能になり、ますます需要が高まっているこの機能への参入障壁が低くなる。開発者は、事前に訓練されたAIモデルを使用して、独自の画像データセットをベクトルに変換し、Milvusを活用することで、画像から類似商品を検索することができる。

動画推薦システム

YouTubeのような主要なオンライン・ビデオ・プラットフォームは、毎分500時間のユーザー生成コンテンツを受信しており、コンテンツ推薦に関してはユニークな要求がある。新しいアップロードを考慮した適切なリアルタイム推薦を行うために、動画推薦システムは、高速クエリ時間と効率的な動的データ処理を提供する必要があります。キーフレームをベクトルに変換し、その結果をMilvusに入力することで、何十億もの動画をほぼリアルタイムで検索し、推薦することができます。

自然言語処理(NLP)

自然言語処理は、人間の言語を解釈できるシステムを構築することを目的とした人工知能の一分野である。Milvusは、テキストデータをベクトルに変換した後、重複テキストの迅速な識別と削除、セマンティック検索、またはインテリジェントなライティングアシスタントの構築に使用することができます。効果的なベクトルデータ管理プラットフォームは、あらゆるNLPシステムの実用性を最大化するのに役立ちます。

Milvusについてもっと知る

Milvusについてもっとお知りになりたい方は、当社のウェブサイトをご覧ください。また、ブートキャンプでは、Milvusのセットアップ、ベンチマークテスト、様々なアプリケーションの構築などのチュートリアルをご用意しております。ベクターデータ管理、人工知能、ビッグデータの課題に興味がある方は、GitHubのオープンソースコミュニティに参加し、Slackでチャットしてください。

画像検索システムの構築についてもっと知りたいですか?こちらのケーススタディをご覧ください:

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    続けて読む