ChatGPTの現在の時代では、ベクトルデータベースには大規模モデル用のスーパーブレインが搭載されています

ChatGPTの現在の時代では、ベクトルデータベースには大規模モデル用のスーパーブレインが搭載されています

次のような経験をしたことはありませんか。インターネットで壁紙を見て、写真に写っている雪をかぶった山や湖が魅力的で、この美しい景色がどこの国なのか知りたいと思っても、検索方法がわかりません。または、記事を読んでいるときに、そのトピックについてもっと知り、より多くの意見や情報を見つけたいと思っても、それを正確に説明する方法がわかりません。または、曲を聴いているときに、同じスタイルや感情を持つ曲をもっと見つけたいと思っても、それらをどのように分類すればよいかわかりません。このとき必要なのは、ユーザーの意図を理解し、最も関連性の高い結果を提供し、必要な情報を簡単に見つけることができるツールです。

これは、これらの問題を解決するのに役立つスーパーブレインのようなベクトルデータベース (VectorDB) です

Vector DB の用途はこれだけではありません。ChatGPT のようなインテリジェント システムが大量のデータから最も適切な回答を迅速に取得し、精度と効率を向上させるのにも役立ちます。一般的にコンピューティング能力が不足し、大規模言語モデルの微調整が困難になっている現在、大規模言語モデルに知識ベース(スーパーブレイン)を装備することが特に重要です。これは、大きな言語モデルのチートシートのようなもので、より優れたサービスを提供できるようになります。

ベクトルとは何か? - コンピュータが世界を理解するための出発点

Vector DB の詳細に入る前に、まずは Vector とは何かを簡単に理解 (または復習) しましょう。実は、高校や大学の数学で習ったベクトルと同じですが、当時の直交座標系の 2 次元よりも少し次元が多くなります (最大 512 次元)。多くの学術論文では、別名「埋め込み」の方が馴染みがあるかもしれません。先ほど述べたスーパーブレインを実現するためには、まずこの脳にさまざまな情報を理解させる必要があり、これが埋め込みの役割です。

埋め込みとは何ですか? と疑問に思うかもしれません。映画を観ていて、映画の登場人物、あらすじ、会話などの情報を脳が自動的に理解できる形に変換するところを想像してください。これは埋め込みプロセスです。すごいですね、私たちの脳はそういう風に理解するんです。同様に、コンピューターに同様の処理を行わせることもできます。さまざまな種類のデータをコンピューターが理解できる形式に変換しますが、コンピューターが受け入れるのは数値、つまりベクトルです。高校の数学を復習してください。2 次元ベクトルは、直交座標系のすべての点を表すことができます。つまり、この直交座標系のすべての情報を表すことになります。次元を無限に拡張すると、無限の情報を表すことができます。いくつかの SF 映画で、高等生命体は私たちのような三次元の肉体ではなく、より高次元に存在するかもしれないと見たことがあるかもしれません。たとえば、時間は 4 次元であり、そこから飛び出すと、4 次元の生き物になります。これは実際に、埋め込みが世界をよりよく理解するのに役立つ理由を説明しています。なぜなら、3 次元は私たちの肉体しか収容できませんが、私たちの魂はより高次元の世界に存在するからです

数字の文字列がコンピューターが世界を理解するのに役立つ理由を理解した後、次のより実用的な質問、つまりデータをベクトルに変換する方法について考えてみましょう。これは、AI 分野での私たちの進歩によります。私たちは、あらゆる種類のデータを高次元空間にマッピングし、データの埋め込み表現であるベクトルを生成できるモデルを数多く開発してきました。

埋め込み方法には、テキストをベクトルに変換できるテキスト埋め込み、画像をベクトルに変換できる画像埋め込み、音声をベクトルに変換できるオーディオ埋め込み、動画をベクトルに変換できるビデオ埋め込み、さらには異なる種類のデータを同じ空間でベクトルに変換できるマルチモーダル埋め込みなど、さまざまなものがあります。たとえば、映画には音と画像が含まれています。映画をより包括的に表現したい場合は、マルチモーダル埋め込みであるオーディオ埋め込みとビデオ埋め込みを組み合わせる必要があります。図 1 は、テキスト埋め込みのいくつかのセットを示しています。最も単純な例は、キング - マン + ウーマン = クイーンで、これは単純な小学校の足し算と引き算です。

図 1. 3 次元のベクトル図。

埋め込み方式により、さまざまなデータをベクトルに変換し、Vector DB に保存することができます。特定の種類のデータを検索する場合、検索したい情報や基準を表すことができれば、同じ種類でも異なる種類のデータでも構いません。クエリ ベクトルを指定するだけで済みます。次に、Vector DB は類似度測定を使用して、クエリ ベクトルと保存されているベクトル間の距離または類似度を計算し、最も類似または関連するベクトルのリストを返します。このリストから必要なデータを検索したり、範囲をさらに絞り込んだりすることができます。もちろん、近年のベクトル検索の人気は、大規模モデル機能の向上と密接に関係しています。大規模モデルは一般に、より高次元で複雑なデータ表現を理解して生成する能力に優れており、ベクトル検索のためのより正確で豊富なセマンティック情報を提供します。逆に、ベクトル検索では、大規模なモデルに追加情報と長いコンテキストを処理する機能を提供することもできるため、モデルのパフォーマンスがさらに向上します。さらに、ベクトル検索は、大規模モデルのトレーニングとアプリケーションにおいて重要な役割を果たします。ベクター データベースはベクター検索を実行する唯一の方法ではありませんが、すべての方法の中で最も効率的で便利です。

今後の記事では、ベクター データベースが将来の AI システムの構築に不可欠な要素である理由をさらに詳しく説明します。

Vector DBとは?データベースに特化した知恵の薬

VectorDB に何が保存されるかを理解した後、はじめにで説明した内容と組み合わせると、VectorDB の真の性質が明らかになります。これは新しいタイプのデータベースであり、その新しさは埋め込みを保存する点にあります。この新しさは、単に新しいというだけの理由ではありません。従来のコンテンツの直接保存からストレージ ベクトルへの切り替えは、データベースに知恵の薬の瓶を与えるようなもので、データベースをよりスマートで強力なものにします。


  • Vector DB は、タグやキーワードではなく、コンテンツや意味に基づいてデータを検索できるスーパー探偵のようなものです。整理されていない図書館で本を探しているようなものです。本の ISBN 番号を知る必要はありません。Vector DB に欲しい本のコンテンツを伝えるだけで、検索を手伝ってくれます。
  • Vector DB はスーパー トランスレータとしても機能し、ある種類のデータを使用して別の種類のデータを検索することができます。曲のメロディーだけは知っているけれどタイトルがわからないという場合、Vector DB を使用すると曲の情報を検索できます。
  • Vector DB は、大量かつ複雑なデータを迅速かつ正確に検索できるスーパー検索エンジンとも言えます。まるで巨大な迷路の中にいるようなもので、Vector DB がナビゲーションとなり、出口を素早く見つけるのに役立ちます。

冒頭で述べたように、VectorDB には上記の利点があるだけでなく、LLM と組み合わせるという非常に重要かつ人気のあるアプリケーション シナリオもあります。 LLM は、大規模言語モデルの略で、自然言語のテキストを生成したり、自然言語の質問を理解して回答したりできるスーパーライターのようなものです。しかし、LLM には、ドメイン知識の欠如、長期記憶の欠如、事実の一貫性の欠如などの課題もあります。

これらの課題に対処するために、Vector DB は LLM に百科事典を提供するようなもので、LLM がユーザーのクエリに基づいて Vector DB 内の関連データを取得し、データの内容とセマンティクスに基づいてコンテキストを更新して、より関連性が高く正確なテキストを生成できるようにします。このようにして、LLM は、常に最新かつ最も包括的な情報にアクセスできる長期記憶を持つことができ、事実の一貫性と論理の一貫性も維持できます。

Vector DB と LLM の組み合わせの具体的な例はたくさんあります。LLM ベースのチャットボットを使用していて、「最近、良い映画はありますか?」と質問したとします。ChatGPT 自体は、データセット (2021 年以前) に含まれる情報にしか答えられません。外部の知識ベースを使用すると、ロボットは Vector DB で最近の映画レビュー ベクトルを検索し、評価の高い映画をいくつか返すことができます。友人に映画を勧めるように頼むと、友人は自分の記憶とあなたの好みに基づいてお勧めを教えてくれます。

ChatGPT自体は、情報がまだ若いままの80代の老人のようなものです。しかし、外部のナレッジベースが追加されたことで、ChatGPTはあなたと同じ年齢の友人に変身しました。あなたは常に時事問題を把握しており、いつでもソーシャルプラットフォームをチェックする(ナレッジベースを更新する)だけで済みます

例えば、[1]ではChatGPTにNumpyの背景知識(中央値や平均値の求め方など、さまざまな演算を実行する方法)を与えたいのですが、そのドキュメントは20ページ以上あり、ChatGPTへの知識入力として直接使用することはできません(長すぎる)。ただし、簡単にクエリできるvectorDBを構築するには、次のコード行だけが必要です。

次に、このドキュメントの質問をしたい場合、必要なコードは依然としてシンプルです。

最終的に、次の結果が得られます。

既存の大規模言語モデルの理解能力があれば、微調整は不要になります。外部の知識ベースに接続して、最新の知識を素早く取得するだけで済みます。

シンプルで使いやすい

Vector DBの開発 - ハリウッドヒーローの成長史

Vector DB のストーリーは、無名から大成功へと上り詰めたハリウッド大作の感動的なヒーローのようなものです。その起源はバイオテクノロジーと遺伝子研究の分野の台頭にまで遡ります。 1970 年代後半、DNA 配列解析は新たな研究分野として注目を集め始めました。大量の DNA 鎖データを保存するには、科学者は高次元ベクトルを処理できる新しいアプローチを必要としていました。こうして、あらゆるデータをベクトルに変換し、データ間の類似性を計算することで、データの分類、クラスタリング、検索などの機能を実現できるデータベース「Vector DB」が誕生しました。

しかし、当時の Vector DB はまだかなり初歩的なものでした。テキスト データしか処理できず、画像、音声、ビデオなどの他の種類のデータは処理できませんでした。データの表面的な類似性しか計算できず、データの深い類似性は計算できませんでした。静的データしか処理できず、動的データは処理できませんでした。それにもかかわらず、それは独自の可能性と魅力を示しました。

Vector DB が登場する前は、MySQL や Oracle などのリレーショナル データベースが一般的に使用されていました。これらのデータベースは、テーブル形式でデータを保存します。これは、構造化データの保存には適していますが、テキスト、画像、オーディオなどの非構造化データの処理は比較的困難です。さらに、リレーショナル データベースは大規模なデータを処理する際にパフォーマンスが低下するため、ビッグ データ処理には適していません。それは混雑した図書館で本を探すようなものです。どの棚に本があるのか​​は分かっていても、見つけるのにかなりの時間がかかります。しかし、当時はそれで十分でした。

時間の経過とともに、Vector DB はさまざまなドメインやアプリケーションにわたって成長し、進化し続けています。 1990年代後半から2000年代初頭にかけて、国立衛生研究所とスタンフォード大学はVector DBを使い始めました。彼らはVector DBを使用して一連の遺伝学研究を実施し、多くの高品質の論文を発表しました[2]。 2005年から2015年にかけて遺伝子研究が深まり加速するにつれ、Vector DBも並行して成長しました。UniVecデータベースなどのツールは2017年にはすでに広く使用されており[5]、遺伝子配列アライメントやゲノムアノテーションなどの分野で重要な役割を果たしました[3, 4]。

現在、データの種類や規模の多様化に伴い、リレーショナルデータベースの限界が徐々に露呈しつつあります。まず、リレーショナルデータベースは主に構造化データに適しており、テキスト、画像、音声などの非構造化データを処理するのは比較的困難です。第二に、リレーショナル データベースは大規模データを処理する際にパフォーマンスが低下するため、ビッグ データ処理には適さなくなります。最後に、リレーショナル データベースのクエリ言語 (SQL など) は強力ですが、複雑なクエリおよび分析タスクでは複雑な SQL ステートメントを記述する必要がある場合があり、これは専門家以外のユーザーにとっては難しい場合があります。

2017年から2019年にかけて、自然言語処理、コンピュータービジョン、推奨システムなどの分野で応用され始めたVector DBの爆発的な成長を目の当たりにしました。これらの分野では、大量の多様なデータを処理し、そこから貴重な情報を抽出する必要があります。ベクトルDBは、コサイン類似度、ユークリッド距離、ジャカード類似度[6]などの指標や、転置インデックス、局所性敏感ハッシュ、積量子化[18]などのインデックス技術を使用して、効率的で正確なベクトル検索を実現します。皆さんは、レコメンデーションシステム、画像検索(タオバオの画像検索製品)、ハミングによる歌の検索、質疑応答ロボットなどについて聞いたことがあるか、使ったことがあると思います。これらの中核となるのが Vector DB です。

物語がクライマックスに達したと思った矢先、Vector DB がまた驚きをもたらしました。今年、Vector DB は大規模な言語モデルと組み合わせたアプリケーションで使用され始めました。ビッグ言語モデルに外部知識ベースを提供することで、ビッグ言語モデルはユーザーのクエリに応じて Vector DB 内の関連データを取得し、データの内容と意味に応じてコンテキストを更新し、より関連性の高い正確なテキストを生成できます。これらの大規模な言語モデルは通常、ディープ ニューラル ネットワークを使用してテキスト データに暗黙的に含まれるパターンと構造を学習し、流暢で一貫性のあるテキストを生成することができます。 Vector DB は、BERT や GPT などの事前トレーニング済みモデルを使用してテキストをベクトルに変換し、FAISS や Milvus などのオープンソース プラットフォームを使用してベクトル データベースを構築および管理します。

Vector DB は多くの課題を解決し、人々に多くの価値をもたらします。ベクトルを効果的に保存および検索し、検索の精度と効率を確保し、大規模で複雑なデータを処理できる新しいデータ構造とアルゴリズムを採用しています。他のツールやプラットフォームと組み合わせて、より多くの機能やサービスを提供することもできます。人々により良い情報取得とコミュニケーション体験を提供する、欠かせないツールとなっています。他の DB に勝っただけでなく、ユーザーの心も掴みました。

しかし、この大ヒット作はまだ完成しておらず、Vector DB にはまだ改善の余地があります。たとえば、大規模なデータを処理する場合は、底なしの海で真珠を探すような、ストレージとコンピューティング リソースの課題に直面する可能性があります。複雑なクエリを処理する場合は、複雑な迷路で出口を探すような、パフォーマンスと精度の課題に直面する可能性があります。動的なデータを処理する場合は、常に変化する砂漠で固定されたランドマークを探すような、データの更新と同期の課題に直面する可能性があります。

しかし、技術の継続的な発展と進歩により、Vector DB はますます強力で完璧になり、私たちの生活にさらなる利便性と価値をもたらすと信じる理由があります。私たちの心に響く英雄たちと同じように、彼らはどんなに困難や課題に直面しても、前進し続け、成長し続け、最終的に目標を達成します。この大ヒット映画はまだ終わっておらず、Vector DB は苦労して勝ち取ったこの成功を維持するために今も懸命に取り組んでいます。

Vector DB の最近の取り組みを紹介する前に、 Vector DB とリレーショナル データベースにはそれぞれ独自の利点があり、どのデータベースを選択するかは特定のアプリケーション要件によって決まるということを述べておく必要があります。構造化されたデータを処理する必要があり、データ サイズが大きくない場合は、リレーショナル データベースが適切な選択肢となる可能性があります。ただし、非構造化データを処理する必要がある場合や、大規模なデータを処理する必要がある場合は、Vector DB の方が適している可能性があります。

Vector DB のテクノロジー コア - スーパーヒーローの武器

スーパーヒーローをもっとよく知るために、まずはスーパーヒーローの日常生活から始めましょう。あなたがスーパーヒーローであり、膨大な量の情報を理解して処理することがあなたの仕事だと想像してください。このツールは、埋め込みを保存および処理できる Vector DB と呼ばれる新しいタイプのデータベースです。かっこいいですね。しかし、それは簡単な作業ではありません。対処する必要がある問題には、データをベクトルに変換する方法 (ベクトル埋め込み)、ベクトル間の類似性を測定する方法 (類似性測定)、ベクトルをインデックス付けして取得する方法 (ベクトルのインデックス付けと取得)、およびベクトルを圧縮してストレージスペースを節約する方法 (ベクトル圧縮) が含まれます。これらは Vector DB のコア技術であり、スーパーブレインとしてのあなたの主な悩みでもあります。

それでは、Vector DB の技術的な核心を探り、このスーパーヒーローが毎日どのように働いているかを見てみましょう。これらの手順を理解しやすくするために、例を使用しましょう。スーパーヒーローとして、巨大な図書館を管理する任務を負っているとします。この図書館には、小説、詩、科学論文、歴史書など、さまざまな本が揃っています。あなたの目標は、読者が探している本を迅速かつ正確に見つけられるようにすることです。

まず、各書籍をベクターに変換する必要があります。それは、本の内容、スタイル、テーマなどの重要な情報を反映した、各本に固有の指紋を作成するようなものです。このプロセスはベクトル埋め込みと呼ばれます。これはこの記事では詳しく取り上げないほど大きなトピックですが、AIの発展により、埋め込みは意図したデータをより適切に表現できるようになりました[7]。

適切な表現が得られていると仮定したら、次にベクトル間の類似性を測定する必要があります。それは、2 冊の本の指紋を比較して、どれほど類似しているかを確認するようなものです。このプロセスは類似性測定と呼ばれます。初期段階では、類似度を測定するためにユークリッド距離またはコサイン類似度を使用する場合があります。しかし、時間が経つにつれて、これらの方法では高次元データを扱う際に困難が生じる可能性があることがわかりました。

そのため、最近接探索や局所性感知ハッシュなどの現代的な類似性指標が開発されました[8]。これらの方法は、高次元データをより効率的に処理し、より正確な類似度測定を提供できます。次に、ベクトルにインデックスを付けて取得する必要があります。これは、読者が自分のニーズに基づいて欲しい本をすぐに見つけられるように、図書館のカタログを作成するようなものです。このプロセスは、ベクトルのインデックス作成と検索と呼ばれます。初期段階では、線形検索またはツリー構造を使用してベクトルをインデックス付けして取得する場合があります。ただし、データ量が増えると、これらの方法は非効率になる可能性があります。そのため、転置索引や積量子化などの現代的なベクトル索引作成・検索手法が開発されました[9]。これらの方法により、大規模なデータをより効率的に処理し、インデックス作成と検索を高速化できます。

最後に、ストレージスペースを節約するためにベクトルを圧縮する必要があります。それは、本の内容を圧縮して、より少ないスペースを占めるようなものです。このプロセスはベクトル圧縮と呼ばれます。初期の頃は、ハフマン符号化やランレングス符号化などの単純な圧縮アルゴリズムを使用してベクトルを圧縮していました。ただし、データ量が増加すると、これらの方法では圧縮要件を満たせなくなる可能性があります。そのため、積量子化や最適化積量子化などの現代的なベクトル圧縮手法が開発されました[10]。これらの方法はベクトルをより効率的に圧縮し、より高い圧縮率を実現します。

AI の専門家であれば、ベクトルの埋め込みと類似度の測定は重要な問題ではあるものの、Vector DB の開発においては、AI の発達により、埋め込みがもはや最大の問題ではなくなったことに気付いたかもしれません。現時点で解決すべき最も重要な問題は、実際にはベクトルのインデックス作成とベクトルの検索です。これは、データ量が増加するにつれて、ベクトルを効果的にインデックス付けして取得する方法が大きな課題となるためです。

インデックス作成、検索、圧縮 - スーパーヒーローの悩み

非技術者避難警報

でも、スーパーヒーローになったとしても、自分自身の問題は抱えているものです。スーパーヒーローたちのストーリーが終わったので、VectorDB がどのような取り組みを行ってきたかを見てみましょう。まず、このプロセスを正式に定義しましょう (図 2)。

  • まず、埋め込みモデルを使用して、インデックスを作成するデータをベクトル埋め込みに変換します。
  • 次に、ベクトル埋め込みは、対応する元のデータへの参照を保持したまま、ベクトル データベースに保存されます。
  • 最後に、アプリケーションがクエリを発行すると、同じ埋め込みモデルを使用してクエリをベクトル埋め込みに変換し、それを使用してデータベースで最も類似したベクトル埋め込みを検索します。前述したように、これらの類似したベクトル埋め込みは、生成された元のデータの意味を反映しています。

図 2. VectotDB アプリケーション プロセス。画像ソース: https://www.pinecone.io/learn/vector-database/

ここでの Vector DB の主なボトルネックは、依然としてインデックス作成、検索、圧縮の 2 番目と 3 番目のステップです。これは、Vector DB の目標と利点が、大規模データをより適切に処理することであるためです。

  • ベクトルのインデックス作成と検索は、スーパーヒーローの重要な武器の 1 つとも言えるもので、Vector DB による大規模データ処理の鍵となります。ベクトル インデックスのタスクは、多数のベクトルの中からクエリ ベクトルに最も類似するベクトルをすばやく見つけることです。まるで巨大なスーパーマーケットにいて、欲しい商品をすぐに見つけられるような感じです。スーパーマーケットの商品が分類されラベル付けされていなかったら、欲しいものを見つけるのにかなりの時間がかかるかもしれません。ベクトルインデックスは、このスーパーマーケットの分類ラベルであり、必要な商品をすばやく見つけるのに役立ちます。
  • スーパーヒーローの武器庫にあるもう一つの武器はベクトル圧縮です。これは基本的に、ベクトルをエンコードして保存スペースと転送時間を削減するプロセスを指します。このプロセスには通常、圧縮率と歪み率という 2 つの側面が関係します。圧縮率は、圧縮されたベクトルと元のベクトルのサイズ比を指し、歪み率は、圧縮されたベクトルと元のベクトルの類似性の差を指します。一般的に言えば、圧縮率を上げると歪み率は低下し、逆もまた同様です。したがって、さまざまなアプリケーション シナリオでは、要件に応じて適切な圧縮方法とパラメータを選択する必要があります。ベクトル圧縮はスーパーマーケットで商品を包装するようなものです。たとえば、スーパーマーケットでは、一般的に使用されるキッチン用品(塩、砂糖、酢、油など)をセットメニューとして販売することで、顧客の買い物時間を節約し、スーパーマーケットの棚スペースを節約することができます。圧縮のようなもので、パッケージで販売することで、商品の保管スペースとお客様の買い物時間を削減することができます。しかし、パッケージ販売にはいくつかの問題も伴う可能性があります。たとえば、顧客は商品の一部しか必要としないのに、パッケージ全体を購入しなければならない場合があります。あるいは、梱包された品物が、顧客が当初要求したものと若干異なる場合もあります。バンドル販売することで、製品の満足度が低下する可能性があるという歪曲率のようなものです。したがって、スーパーマーケットは顧客のニーズと棚スペースに基づいて適切な包装方法とパラメータを選択する必要があります。同様に、ベクター圧縮でも、アプリケーションの要件とストレージ容量に基づいて適切な圧縮方法とパラメータを選択する必要があります。

スーパーヒーローの武器の開発プロセスも、このハリウッド映画の重要な部分です。初期の線形スキャンから現在の複雑な構造まで、各ステップは問題を解決し、効率を向上させ、ユーザーにより良いサービスを提供するためのものです。

最も初期の頃は、線形スキャンが使用されていました。それはカテゴリーのないスーパーマーケットにいるようなもので、欲しいものが見つかるまで各商品を一つずつ見ていく必要があります。この方法はシンプルで直感的ですが、特にデータ量が非常に多い場合には非常に非効率的です。まるで巨大なスーパーマーケットで商品を探すようなもので、丸一日かかるかもしれません。

線形スキャンの効率性の問題を解決するために、ハッシュベースまたはツリーベースの方法が登場しました。ハッシュ法は、高次元ベクトルを低次元空間またはバイナリエンコーディングにマッピングし、ハッシュテーブルまたは逆インデックスを使用して保存および検索する[12]。ツリー法は、高次元空間をいくつかのサブスペースまたはクラスター中心に分割し、ツリー構造を使用して保存および検索します[13]。これらの方法はすべて、正確な距離計算または近似距離計算に基づいています。それはスーパーマーケットのようなもので、商品は複数のエリアに分かれており、各エリアには 1 つのカテゴリの商品が含まれています。こうすることで、すべてのアイテムを確認することなく、必要なアイテムのあるセクションに直接移動できます。これにより効率が大幅に向上します。

しかし、高次元のデータを処理する場合、これらの方法の効率は低下します。多種多様な商品が並び、非常に細かくエリアが区切られた超大型スーパーマーケットにいるようなものです。異なるエリア間を行き来するのに多くの時間を費やす必要があるかもしれません。

図 3. ツリー (ツリーベース)画像ソース: https://www.displayr.com/how-is-splitting-decided-for-decision-trees/

この問題を解決するために、積量子化(PQ)に基づくベクトルインデックスアルゴリズムも提案されている[14]。 PQ 法は、高次元ベクトルを複数のサブベクトルに分割し、各サブベクトルに対して独立したスカラー量子化 (SQ) を実行します。つまり、各サブベクトルを有限セット内の最も近い値で近似します。そうすることで、保存スペースと計算時間を大幅に削減でき、元の距離を積距離 (PD) で近似することができます。まるでスーパーマーケットにいるかのように、商品がエリアだけでなくブランドごとに分類されており、すべてのエリア間を行き来することなく、お気に入りのブランドのエリアに直接行くことができます。これにより効率が大幅に向上します。

図 4. 積量子化 (PQ) 出典: https://www.displayr.com/how-is-splitting-decided-for-decision-trees/

そこで、高次元データを処理するツリーの問題を解決するために、 BBF(Best Bin First)アルゴリズム[15]が提案されました。 BBF アルゴリズムは、KD ツリー内で最も近い近傍をより速く見つけることができる、優先キュー ベースの検索アルゴリズムです。 KD ツリー (ツリー構造の一種) の検索プロセスによると、検索時に最初に kd ツリーに沿ってリーフ ノードを見つけ、次に順番にバックトラックすることがわかります。バックトラック パスは、以前にリーフ ノードを検索したときの逆の順序であるため、バックトラック時にこれらのポイントの情報は使用されません。 BBF はこの情報を使用して、バックトラック時にバックトラックする必要がある各ノードに優先順位を付け、最も近い隣接ノードをより速く見つけられるようにします。

実際、BBF アルゴリズムの考え方は比較的単純です。バックトラックに必要になる可能性のあるノードをキューに追加し、検索ポイントからノードによって決定される超平面までの距離に従ってそれらを並べ替えます。次に、キューが空になってアルゴリズムが終了するまで、優先度が最も高い (つまり、距離が最も短い) ノードが毎回最初にトラバースされます。同時に、bbf アルゴリズムは時間制限も設定します。アルゴリズムの実行時間が制限を超えると、空かどうかに関係なく実行が停止し、現在の最近傍点が結果として返されます。 BBF を適用すると、まるでスーパーマーケットにいるような気分になります。各商品のエリアがわかるだけでなく、各エリアで人気の商品もわかります。エリア内の商品を 1 つ 1 つ確認しなくても、直接これらの人気商品を探しに行くことができます。これにより効率がさらに向上します。しかし、BBF アルゴリズムは、大規模データの処理にはまだ効率的ではありません。まるで超大型スーパーマーケットにいるようなもので、各エリアの人気商品を知っていても、多数のエリア間を行き来する必要があります。

同時に、1910年代半ばには、PQ法の改良版である逆マルチインデックス法(IMI) [11]が登場しました。 IMI 法は、高次元ベクトルを 2 つのサブベクトルに分割し、各サブベクトルに対して独立した PQ を実行して 2 つのサブコードブックを取得します。次に、すべてのベクトルを最初のサブコードブックのインデックスに従ってグループ化して複数のリストを取得し、各リスト内のベクトルは最初のサブコードブックの同じインデックスを持ちます。これにより、高次元空間をより細かい粒度のサブスペースに分割し、転置インデックスを使用して保存および取得できるようになります。たとえば、 2014 年に CVPR で提案されたIMI ベースの最近傍検索法は、数百万項目の高次元データセットの処理に使用できます。 IMI 法は、高次元ベクトルを 2 つのサブベクトルに分割し、各サブベクトルに対して独立した PQ を実行して 2 つのサブコードブックを取得します。スーパーマーケットと同じように、商品の種類(食品、飲料、日用品など)別に分類するだけでなく、さらにブランド別に分類します。これにより、顧客は必要な商品をより正確に見つけることができ、ショッピングの効率が向上します。

同時に、データ次元の高さに加え、データ量が大きいという問題もあります。大規模データ処理の問題を解決するために、局所性敏感ハッシュ (LSH)が提案されました。 LSH は、類似のベクトルを同じバケットにハッシュするハッシュベースのインデックス作成方法です。大型スーパーマーケットと同じように、商品の種類やブランドだけでなく、価格帯によっても分類しています。このようにして、顧客は目的の製品をより早く見つけることができます。しかし、スーパーマーケットが非常に大きくなると、そのような分類システムがあっても、顧客は依然として多数の商品の中から選択する必要があり、買い物の複雑さが増します。同様に、高次元データを扱う場合、LSH の効率性は依然として課題に直面しています。

この時、IMIに基づいて、異方性ベクトル量子化(AVQ) [17]と呼ばれるより高度なベクトルインデックスアルゴリズムが登場しました。 AVQ 法は、高次元ベクトルを複数のサブスペースに分割し、各サブスペースに対して独立した PQ を実行して、複数のサブコードブックを取得します。次に、すべてのベクトルをサブコードブックの組み合わせに従ってグループ化して複数のリストを取得し、各リスト内のベクトルは同じサブコードブックの組み合わせを持ちます。これにより、高次元の空間をデータの分布に従って適応的に分割でき、複数の反転インデックスを保存と検索に使用できます。それはスーパーマーケットにいるようなもので、商品はエリアだけでなくブランドと価格によって分類されているようなものであり、すべてのエリアの間でシャトルすることなく、お気に入りのブランドと価格のエリアに直接行くことができます。これにより、効率が大幅に向上します。

この武器は進化していますが、それはまだ比較的大きな問題を抱えています。つまり、リコールの精度が十分ではないため、リコールの精度は低くなります。したがって、現在、最新のベクトルインデックスは、グラフベースまたはディープラーニングベースの方法に基づいています

グラフベースの方法は、上記のアルゴリズムとは異なります。グラフメソッドは、高次元空間をグラフと見なします。各ノードはベクトルであり、各エッジは距離または類似性です。次に、いくつかのヒューリスティックまたは最適化されたアルゴリズムを使用して、このグラフを構築およびトラバースして、最も類似したベクトルを見つけます。たとえば、2018年にNIPSで公開された論文「階層操作の航行可能な小さな世界グラフ」では、著者は、階層型ナビゲーションスモールワールド(HNSW)グラフに基づいて最近近隣検索方法を提案しました。 HNSWメソッドは、高次元ベクトルを階層的にグラフに編成します。各ノードはベクトルであり、各エッジは距離または類似性です。各レイヤーは、航行可能な小さな世界(NSW)グラフ、つまり短いパスとローカル接続を備えたグラフです。各層のノードの数はランダムに減少し、ピラミッド様構造を形成します。これにより、さまざまなレベルのエッジを使用して検索プロセスをスピードアップでき、貪欲なアルゴリズムを使用してグラフを通過できます。それは、スーパーマーケットにいて、各製品の場所をマークして、すべてのエリア間を移動することなく必要な製品を見つけることができるようなものです。これにより、効率が大幅に向上します。

最後に、ディープラーニング方法は、ニューラルネットワークを使用してマッピング関数を学習し、高次元のベクトルを低次元空間またはバイナリエンコードにマッピングし、保存および検索にハッシュテーブルまたは反転インデックスを使用します。それは、スーパーマーケットにいて、自分自身を探す必要なく、あなたのニーズに基づいてあなたが望む製品をすばやく見つけることができるインテリジェントなアシスタントを持っているようなものです。このスマートアシスタントは、あなたのニーズを学び、理解し、あなたが望む製品を見つけるのに役立つニューラルネットワークです。具体的な例[16]は、グラフニューラルネットワーク(GNN)に基づいた最近傍検索方法を提案しました。これは、任意のグラフ構造化データの表現を学習するために使用できます。 GNNメソッドは、ニューラルネットワークを使用してマッピング関数を学習し、高次元ベクトルを低次元空間にマッピングし、グラフ構造情報を保持します。次に、ストレージと検索のためにハッシュテーブルまたは反転インデックスを使用します。そうすることで、ニューラルネットワークの強力な表現力を活用して複雑なグラフ機能をキャプチャし、ハッシュまたは反転した選別技術を使用して検索プロセスを高速化できます。

ベクトルインデックスに直面している問題は、さまざまなタイプとフィールドのデータに適応する方法、および検索の品質と効率を確保しながら、さまざまなシナリオと要件のアプリケーションに適応する方法です。データが異なる場合があり、分布、寸法、密度、ノイズ、その他の特性が異なり、アプリケーションが異なる場合があります。したがって、すべての状況を満たすことができる一般的なベクトルインデックスアルゴリズムはありませんが、特定の状況に応じて適切なベクトルインデックスアルゴリズムを選択または設計する必要があります。スーパーマーケットのように、顧客が異なる場合があり、さまざまな製品が必要な場合があるため、スーパーマーケットはさまざまな顧客のニーズを満たすためにさまざまな製品を提供する必要があります。

これらの現在の問題に基づいて、私たちはまだ将来探求する多くの方向を持っています。

  • 動的ベクトルインデックス:ほとんどの既存のベクトルインデックスアルゴリズムは、静的データセット用に設計されています。つまり、インデックス作成後にデータセットは変更されません。ただし、実際のアプリケーションでは、データセットが動的に変更されることがよくあります。つまり、新しいデータが追加されるか、古いデータが削除されます。効率的な検索パフォーマンスを維持しながらデータセットの動的更新をサポートする方法は、重要で困難な問題です。それは、新製品が棚に置かれ、古い製品が売り切れ、棚から削除されるようなものです。
  • 分散ベクトルインデックス作成:データサイズと寸法が大きくなるにつれて、スタンドアロンのメモリとコンピューティングパワーは、ベクターのインデックス作成と検索のニーズを満たしていない場合があります。複数のマシンにデータセットとインデックス構造を配布し、効率的な並列検索を実現する方法は、もう1つの重要かつ困難な問題です。それはスーパーマーケットのようなものです。品物の多様性と量が増えるにつれて、単一のスーパーマーケットは顧客のニーズを満たすことができず、複数の支店を開設して効率的な並行サービスを達成する必要があります。
  • マルチモーダルベクトルインデックス:実際のアプリケーションでは、データは多くの場合マルチモーダルです。つまり、テキスト、画像、オーディオ、ビデオなどのさまざまなタイプまたはソースからの情報で構成されています。さまざまなモードから統合または互換性のあるベクトル空間にデータをマッピングし、クロスモーダルまたはジョイントモーダルの検索を実装する方法は、興味深い挑戦的な問題です。スーパーマーケットでは、さまざまな種類の食品、飲み物、必需品、電化製品などが含まれるだけでなく、中国語、英語、日本、韓国語などのさまざまなソースからのラベルも含まれています。

一般に、ベクターインデックスはスーパーマーケット分類ラベルのようなものであり、必要な製品、つまり最も類似したベクターをすばやく見つけるのに役立ちます。既存のベクトルインデックスアルゴリズムは大きな進歩を遂げていますが、解決すべき多くの問題がまだあり、探索すべき多くの方向があります。

ベクターDB製品ショーケース

Vector DBのテクノロジーを読んだ後、Vectorデータベース製品ディスプレイへようこそ!ここでは、Milvus、Pinecone、Chroma、Weaviate、Zillizなどのオープンソースや商用ベクターDBを含む5つの主要なベクターデータベース製品の世界に連れて行きます。それらの機能、パフォーマンス、およびアプリケーションシナリオを比較します。さらに、各製品といつどの製品を選択するかの違いを簡単に取得するのに役立ちます。それでは、始めましょう!

ミルバス

まず、Milvusを見てみましょう。 Milvusは、Open Source Vector Databaseスーパーマーケットのようなもので、IVF-FLAT、IVF-SQ8、HNSWなどのさまざまなベクトルインデックスアルゴリズム、およびL2、IP、ハミングなどのさまざまな類似性メトリックを提供します。これは、多言語の世界市民のようなもので、Python、Java、Goなどの複数の言語でクライアントインターフェイスを提供し、TensorflowやPytorchなどの深い学習フレームワークとの統合を提供します。画像取得、ビデオ検索、音声認識、自然言語処理などのベクトル検索ベースのシナリオのファンである場合、Milvusが最良の選択です。さらに、Milvus Insightと呼ばれる視覚化ツールもあります。これにより、アミューズメントパークにいるのと同じくらい簡単にベクトルデータを表示および管理できます。

松ぼっくり

次に、Pineconeを見てみましょう。 Pineconeはプレミアムベクターデータベースレストランのようなもので、ベクターデータベースをすばやく作成および展開できるシンプルで使いやすいAPIメニューを提供します。そのシェフは、階層ナビゲーションスモールワールド(HNSW)と呼ばれるグラフベースのベクトルインデックスアルゴリズムを使用しています。推奨システム、パーソナライズされた広告、コンテンツマッチング、リアルタイムで正確な類似性検索を必要とするその他のシナリオのダイナーである場合、Pineconeが理想的な選択です。さらに、ベクトルデータベースのステータスとパフォーマンスをステージバックグラウンドと同じくらい簡単に監視および管理できるコンソールもあります。

彩度

次に、クロマを見てみましょう。 Chromaは、高性能で高い信頼性のベクター検索および分析機能を提供することに焦点を当てたプロフェッショナルベクターデータベースラボのようなものです。その科学者は、最適化された製品量子化(OPQ)と呼ばれる製品の量子化に基づいたベクトル圧縮アルゴリズムを使用します。あなたがバイオインフォマティクス、医療イメージング、金融リスク管理、および大規模で高次元のベクターデータを処理する必要があるその他のシナリオの研究者である場合、Chromaが最良の選択です。さらに、ライブラリにいるのと同じくらい簡単に複雑で柔軟なクエリ条件を構築できるクエリ言語もあります。

織ります

次に、Weaviateを見てみましょう。 Weaviateは、ベクターデータを保存してクエリするだけでなく、あらゆるタイプのデータのベクトル表現を自動的に生成する革新的なベクターデータベースファクトリーのようなものです。そのエンジニアは、テキスト、画像、オーディオ、その他のデータをセマンティック関連のベクトルに変換するUniversal Sente Encoder(使用)と呼ばれるディープラーニングベースのベクトル埋め込みアルゴリズムを使用します。知識グラフ、質疑応答システム、インテリジェント検索などのシナリオの革新者である場合、複雑なデータとマルチモーダルデータのセマンティックな理解とマッチングを必要とする場合、Weaviateが最初の選択肢です。さらに、Design Studioのような複雑で柔軟なクエリ条件を簡単に構築できるGraphQLスタイルのクエリ言語もあります。

Zilliz

Zillizをもう一度見てみましょう。 Zillizは、ベクターの検索と分析の速度を改善するために、GPU、TPUなどのさまざまなハードウェアアクセラレーション技術をサポートする強力なベクターデータベーススポーツフィールドのようなものです。そのコーチは、顔認識、製品の検索、テキスト分類など、さまざまなアプリケーションシナリオのソリューションを提供します。あなたが強力なコンピューティングリソースを使用して大規模で高品質のベクターデータを処理する必要があるアスリートである場合、Zillizはあなたのチャンピオンです。さらに、Zilliz Insightと呼ばれる視覚化ツールもあります。これにより、ジムにいるのと同じくらい簡単にベクトルデータを表示および管理できます。

Tencent Cloud Vectordb

最後に、中国のTencent CloudがリリースしたAIネイティブVectorデータベースTencent Cloud Vectordbを見てみましょう。このデータベースは、大規模なモデルのトレーニング、推論、ナレッジベースのサプリメントなどのシナリオで広く使用できます。 Tencent Cloud VectordBは、最大10億ベクトル検索スケールをサポートし、ミリ秒単位で遅延制御を備えており、従来のスタンドアロンプ​​ラグインデータベース検索スケールの10倍高く、1秒あたりの100万レベルのクエリ(QPS)のピーク機能もあります。

次に、これがベクターデータベース製品のプレゼンテーションです。ベクターのデータ管理と分析をより簡単かつ効率的にするために、ここで理想的な選択を見つけることができれば幸いです。各製品の現在の好みをタイムリーに確認したい場合、DB-Enginesは毎月ランキングを更新します。

図5。現在のvectordbランキング結果(2023.07)

あなたに合ったベクターDB製品をより適切に選択するために、私たちはあなたのためにこのチートシートを持っています。ここでは、各製品の主な機能と適用可能なシナリオをすばやく比較できます。

VectordB-続く

Vector DBの現在の状況を掘り下げた後、未来に注意を向け、研究者として注意を払うことができるいくつかの研究の方向性を探りましょう。

まず第一に、ベクターアルゴリズムの最適化と革新は、重要な研究方向になります。データのサイズと寸法が増加するにつれて、より効率的で正確なベクトルインデックスと圧縮アルゴリズムを開発する必要があります。さらに、ディープラーニングテクノロジーの開発は、新しい機会を提供します。深い学習を使用して、より良いベクター表現を生成することができます。

第二に、ベクターデータベースの機能的強化も注意に値する研究方向です。ユーザーのニーズとアプリケーションシナリオの多様化により、より豊かでより完全なベクター関数を提供する方法を研究する必要があります。たとえば、ベクターデータを簡単にインポートおよびエクスポートするためのさまざまなデータソースとデータ形式をサポートする方法。

次に、ベクトルデータベースのアプリケーション拡張も重要な研究方向です。人工知能およびビッグデータテクノロジーの開発により、ベクターDBを使用して、類似性の検索とマッチングに基づいてより多くのアプリケーションシナリオを実現する方法を研究できます。たとえば、ユーザーの関心や製品の特性に基づいてパーソナライズされた推奨事項を実現するために、ベクターDBを使用する方法を研究することができます。

詳細なベクター研究は、長期的かつ広範囲にわたる研究の方向性にもなります。ベクターDBテクノロジーの成熟度と人気により、より詳細な理論的探索と実用的な探索が必要です。たとえば、理論的には、ベクター空間の類似性の問題をよりよく理解し、測定し、最適化する必要があります。

研究者として、ベクターアルゴリズムの最適化と革新、ベクターデータベースの機能強化、ベクターデータベースのアプリケーション拡張、および詳細なベクター研究など、調査と研究ができる多くの方向性があります。ベクターDBの未来を一緒に楽しみにして、ベクターデータの無限の可能性を一緒に探索しましょう!

<<:  北京交通大学がソースの交通モデル TransGPT·Zhiyuan をオープン、商用利用は無料

>>:  注意メカニズムにバグがあり、ソフトマックスが犯人であり、すべてのトランスフォーマーに影響を与えている

ブログ    
ブログ    

推薦する

Redis に基づく分散ロックと Redlock アルゴリズム

[[414221]]この記事はWeChatの公開アカウント「UP Technology Contro...

AIと機械学習の品質保証

[51CTO.com クイック翻訳]人工知能はここ数年間、人々の注目を集めてきました。 「あなたのた...

アダプティブコンピューティングがAI製品化の課題にどのように対処するか

[[389356]]今日、人工知能技術は急速に発展しており、イノベーションのペースは加速しています。...

新しい機械学習システムがロボットに社会的なスキルを与える

ロボットは大学のキャンパスに食べ物を配達したり、ゴルフコースでホールインワンを達成したりすることがで...

Vision Pro を着用せずに買い物に行く人がいるでしょうか? ? ?

頭に貼るビジョンプロは人から人へと広がっています。これがロンドンの街の最新風景です。 「刺激が欲しけ...

...

...

チャットボットをよりエレガントに設計する方法

AI アルゴリズムの人気により、近年会話型ロボットの人気が高まり、あらゆる分野で推進され、使用されて...

モザイクから高精細画像まで、AIの画像作成能力は強化されてきましたが、美しさと歪みのバランスをどう実現するのでしょうか。

サスペンスやSF作品では、ぼやけた写真がコンピューターの画面に表示され、捜査官が画像を強調するように...

...

OpenAIのアルトマン氏、Nvidiaへの依存を減らすため中東の投資家とチップ協力について協議

1月20日、フィナンシャル・タイムズによると、OpenAIのCEOサム・アルトマン氏は、TSMCを含...

中国と米国の差を縮め、人工知能開発の主導権を徐々に握る

60年以上の発展を経て、人工知能は人々の仕事や日常生活に入り込み、影響を与えており、新たな一般技術と...

...

...