ベクトルデータベースとは

ベクトルデータベースは、情報の断片をベクトルとして保存します。ベクトルデータベースは、関連するアイテムをクラスタリングし、類似検索や強力なAIモデルの構築を可能にします。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • ベクトルとベクトルデータベースの説明
  • エンベッディングを理解する
  • ベクトルデータベースの用途をリストアップ

関連コンテンツ


さらに詳しく知りたいとお考えですか?

是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!

当社がお客様の個人データをどのように収集し処理するかについては、Cloudflareのプライバシーポリシーをご確認ください。

記事のリンクをコピーする

ベクトルデータベースとは

ベクトルデータベースとは、数学的表現として保存されたデータの集合体を意味します。ベクトルデータベースにより、機械学習モデルによる以前の入力の記憶が容易になり、機械学習の検索、推奨、テキスト生成でのユースケースへの活用が可能になります。データは完全一致ではなく類似性指標に基づき識別され、コンピュータモデルがデータを文脈的に理解できるようになります。

靴の販売店を訪れれば、販売員が好みの靴に似た靴を勧めてくるでしょう。同様に、eコマースストアで買い物をするとき、ストアは、「この商品を閲覧したユーザーは、こちらの商品もチェックしています」などのコーナーを設け、類似商品を提案するでしょう。ベクトルデータベースは、販売員が類似の靴を見つけ、eコマースストアが関連商品を提案できるのと同じように、機械学習モデルが類似のオブジェクトを識別することを可能にします。(実際、eコマースストアはこうした機械学習モデルを使っている可能性があります。)

要約すると、コンピュータプログラムによる比較、関係性の特定、文脈の理解を可能にするのがベクトルデータベースとなります。これにより、大規模言語モデル(LLM)ような高度な人工知能(AI)プログラムの作成が可能になります。

エンベッディング - クラスタ化されたベクトル空間の文書

この単純なベクトルデータベースでは、右上の文書は互いに類似している可能性が高くなります。

リソース
コネクティビティクラウドでコントロールを回復

ベクトルとは何か

ベクトルとは、浮動小数点の位置をいくつかの次元に沿って表現した数値の配列です。

より日常的な言葉で表現すれば、ベクトルとは12、13、19、8、9などの数字のまとまりとなります。これらの数字は、表計算ソフトで行番号や列番号が特定のセルを示すのと同じように、スペース内の位置を示しています(例:B7)。

ベクトルデータベースの仕組み

ベクトルデータベースの各ベクトルは、単語、画像、動画、映画、文書、その他あらゆるデータなど、オブジェクトやアイテムに対応しています。これらのベクトルは長く複雑なものとなる場合が多く、何十、時には何百という次元におけるそれぞれのオブジェクトの位置を表現しています。

たとえば、映画のベクトルデータベースは、上映時間、ジャンル、公開年、保護者向けレーティング、共通する俳優の数、共通する視聴者の数などの次元により映画を配置することになります。これらのベクトルが正確に作成されていれば、似たような映画はベクトルデータベースで一緒にクラスタ化される可能性が高くなります。

ベクトルデータベースの使われ方

  • 類似検索とセマンティック検索:ベクトルデータベースにより、アプリケーションが関連する項目を結びつけることができるようになります。一緒にクラスタ化されているベクトルは類似しており、互いに関連している可能性が高くなります。これにより、ユーザーによる関連情報の検索(画像検索など)の助けとなるだけでなく、アプリケーションにも役立つことになります:
    • 推奨類似商品
    • 曲、映画、番組の提案
    • 画像または動画の提案
  • 機械学習とディープラーニング:関連する情報を結びつける能力により、複雑な認知タスクをこなす機械学習(およびディープラーニング)モデルの構築が可能になります。
  • 大規模言語モデル(LLM)と生成系AI:ChatGPTやBardなどの構築基盤となっているLLMは、ベクトルデータベースによって可能になったテキストの文脈分析に依存しています。単語、文、アイデアを互いに関連付けることで、LLMは人間の自然な言語を理解し、テキストを生成することもできます。
サインアップ
信頼できるアプリケーションを構築、デプロイ、提供

エンベッディングとは

エンベッディングとは、ニューラルネットワークによって生成されるベクトルのことです。ディープラーニングモデル用の典型的なベクトルデータベースは、エンベッディングデータで構成されています。ニューラルネットワークは適切に微調整されればエンベッディングを生成できるようになるため、手動でエンベッディングを作成する必要はなくなります。上述のように、エンベッディングは類似性検索、文脈分析、生成AIなどに利用することができます。

ベクトルデータベースを使う利点

ベクトルデータベースなしで機械学習モデル自身にクエリをかけることでは、速度の速さとコスト効率のどちらも実現しません。機械学習モデルは、学習した以上のことは記憶できないのです。毎回、文脈を把握する必要があります(チャットボットの多くは、このように機能しています)。

クエリの文脈を毎回モデルに渡すのは、データが大量になりがちで非常に時間がかかります。また、データがあちこちへと移動させられなければならず、モデルが同じデータを解析するために繰り返し計算パワーを使わなければならないため、コストがかかります。そして実際には、ほとんどの機械学習APIが一度に受け入れられるデータ量には、制約があります。

この点において、ベクトルデータベースが力を発揮します。データセットがモデルを通過するのは一度だけ(あるいはデータセットが変更されるたびに定期的に)であり、そのデータに対するモデルのエンベッディングはベクトルデータベースに保存されます。

これにより、処理時間が大幅に短縮されます。モデルがデータセット全体を解析するのを待つことなく、数十ミリ秒以内に結果が返ってくるため、セマンティック検索、分類、異常検出を中心としたユーザー向けアプリの構築が可能になります。

クエリに関しては、開発者は機械学習モデルにそのクエリだけの表現(エンベッディング)を求めることになります。続いて、そのエンベッディングはベクトルデータベースに渡され、ベクトルデータベースは類似のエンベッディングを返すことができます。これらのエンベッディングは、URL、画像へのリンク、商品のSKUなどに関わらず、元のコンテンツにマッピングされます。

要約すると、ベクトルデータベースは、大規模なスケールで迅速に動作し、これを利用しない機械学習モデルでのクエリよりも費用対効果が高い、となります。

Cloudflareでのベクトルデータベースの利用可否

Vectorizeは、Cloudflareが提供するグローバルに分散されたベクトルデータベースです。Cloudflare Workers上に構築されたアプリケーションでは、VectorizeによりWorkers KVに保存されたドキュメント、R2に保存された画像、またはD1に保存されたユーザープロファイルを照会できます。Workersによって開発者がバックエンドのインフラを構築することなくアプリケーションを構築できるように、Vectorizeによって開発者は独自のベクターデータベースのインフラを構築することなく、アプリケーションにAI機能を構築できます。また、Cloudflareはエンベッディングを作成するためのWorkers AIを提供しています。

CloudflareでAI駆動型アプリケーションを構築する方法をお読みください。

よくある質問

ベクトルデータベースとは

ベクトルデータベースとは、データを「ベクトル」と呼ばれる数値のかたまりとして保存するデータベースです。関連性の高いデータ同士を自動的にまとめることができ、似ているものを素早く探す(類似検索)のに適していることから、高度なAIアプリケーションを作るための基盤技術として使用されています。

ベクトルデータベースの仕組み

単語、画像、文書など、各オブジェクトは、多くの異なる次元または特性におけるオブジェクトの位置を表わす数字の並び(ベクトル)に変換されます。データベースは、互いに近いベクトル同士をグループ化またはクラスタリングすることで、機械学習モデルが類似アイテムを迅速に検出できるようにします。

AIの文脈における「ベクトル」とは?

ベクトルとは、オブジェクトの特徴を表す数値の配列です。たとえば、{12, 13, 19, 8, 9} のような数字の並びで、さまざまな属性を基に多次元空間内でのオブジェクトの位置を示します。

ベクトルデータベースの主な用途は?

ベクトルデータベースは、類似性検索や意味研削(セマンティック検索)、機械学習、深層学習、大規模言語モデル(LLM)などに主に使用され、AIエージェントやその他の高度なAIアプリケーションを強化します。

機械学習モデルでベクトルデータベースを使用するメリットは?

ベクターデータベースを使用すると、毎回機械学習モデルを動かするよりも、はるかに高速でコスト効率が高くなるという利点があります。モデルは一度だけデータを処理して埋め込みを作成し、それをベクトルデータベースに保存します。これにより、処理時間が大幅に短縮され、結果を数ミリ秒で返すユーザー向けアプリケーションを構築できます。