46.5kデモを予約するログイン無料で始める

リアルベクターデータベースとは?

Aug 04, 20230 min read

この記事はThe New Stackに掲載されたもので、許可を得てここに再掲載している。

ChatGPTの登場は、人工知能(AI)の新たな時代の幕開けを告げるものだ。AIはあらゆるものに革命をもたらしつつあり、ベクトル・データベースは新時代の不可欠なインフラとなりつつある。AIを活用したアプリケーションの需要が高まっていることを考えれば、この傾向は驚くべきことではない。

前回の記事](https://zilliz.com/learn/introduction-to-unstructured-data)では、非構造化データとその処理、分析、クエリについて紹介した。この投稿では、ベクトル・データベース、従来のベクトル検索手法との違い、そしてプロジェクトに最適なベクトル・データベースの選び方について掘り下げます。

ベクターデータベースとは?

という質問にお答えします:ベクトルデータベースとは何かという問いに答えるには、従来のリレーショナルデータベースの役割を知っておく必要があります。リレーショナルデータベースは、あらかじめ定義されたフォーマットでデータをテーブルに格納・処理し、通常は正確な検索を行います。

これに対して、ベクトルデータベースは、画像、音声、動画、テキストなどの非構造化データを、埋め込みと呼ばれる高次元の値を通して格納・検索します。ベクトルデータベースは、近似最近傍(ANN)アルゴリズムを使った類似検索によく使われる。このアルゴリズムは、空間的な関係に基づいてデータを整理し、点からなる大規模なデータセットにおいて、与えられたクエリ点の最近傍を見つけることを可能にする。

ChatGPT](https://zilliz.com/learn/ChatGPT-Vector-Database-Prompt-as-code)の台頭により、ベクトルデータベースは大規模言語モデル(LLM)が直面する問題に対処するためにさらに不可欠なものとなった。

ベクトルデータベース vs. ベクトル検索ライブラリ

ベクターデータベースは、類似検索のための唯一のスタックではない。ベクトルデータベースの登場以前には、FAISS、ScaNN、HNSWといったベクトル検索用のライブラリが数多く存在した。どちらのスタックもベクトルを照会することができますが、どのような違いがあるのでしょうか?

ベクトル検索ライブラリの機能は限られている。少量のデータしか扱えず、より大きなデータセットや高いユーザー要求に対して拡張するのに苦労する。また、インデックスデータを変更することができず、データのインポート中にクエリを実行することもできません。

対照的に、MilvusやZilliz Cloudのようなベクトルデータベースは、非構造化データの保存と検索にとってより最適なソリューションである。これらのデータベースは、数百万から数十億のベクトルを保存し、同時にリアルタイムの応答を提供することができます。

専門のベクターデータベースは、CRUD(作成、読み取り、更新、削除)のサポート、ディザスタリカバリ、ロールベースのアクセス制御、マルチテナンシーなど、多くのユーザーフレンドリーな機能を提供します。Zilliz](https://zilliz.com/)のような多くのベクターデータベースプロバイダーは、フルマネージドクラウドサービスも提供しており、ユーザーはメンテナンス作業の負担を軽減し、ビジネスに集中することができます。

さらに、ベクトルデータベースは、ベクトル検索ライブラリとは異なる抽象化レイヤーで動作し、統合のためのコンポーネントではなく、本格的なサービスとして機能する。この抽象化の意義を説明するために、Milvusのようなベクトルデータベースに非構造化データ要素を追加するプロセスを見てみよう。

from pymilvus import Collectioncollection = Collection('book')mr = collection.insert(データ)

ご覧の通り、Milvusへの非構造化データの挿入はたった3行のコードで超簡単です。しかし、FAISSやScaNNのようなライブラリを使う場合は複雑です。これらのライブラリでは、チェックポイントごとにインデックス全体を手動で再作成する必要があります。

ベクターデータベースとベクター検索プラグインの比較

ベクターデータベースが注目されるにつれ、Clickhouse、Elasticsearch、MongoDB、Databricks などの従来のデータベースや検索システムの多くがベクター検索プラグインの組み込みを急いでいる。例えば、Elasticsearch 8.0では、RESTful APIエンドポイントからアクセスできるベクトル挿入やANN検索などの機能がアップデートされている。

しかし、ベクトル検索プラグインはエンベッディング管理とベクトル検索に対する包括的なアプローチを提供するものではないことに注意する必要がある。それらは既存のシステムのアドオンに過ぎず、レイテンシ、キャパシティ、スループットの面でパフォーマンスが制限される可能性がある。従来のデータベースの上に非構造化データアプリケーションを構築しようとするのは、ガスエンジンフレームの車の中にリチウム電池と電気モーターをはめ込むようなもので、あまり良いアイデアとは言えない。

ベクターデータベースはLLMの増強に不可欠である。

LLMとAIアプリケーションの隆盛により、ベクトル・データベースはAI関連の技術スタックにとって不可欠なインフラになりつつある。

LLMはコンテンツ生成において印象的だが、多くの制限がある。例えば、最新かつドメイン固有の知識がないため、幻覚を見やすい。さらに悪いことに、LLMのトークン制限により、クエリーを行う際にプロンプトに広範な文脈情報を追加することができない。

ベクターデータベースはLLMの長期記憶として機能し、LLMの知識ベースを拡張することができる。これはLLMの外部にプライベートデータやドメイン固有の情報をエンベッディングとして保存する。ユーザが質問をすると、ベクトル・データベースはその質問に最も関連する上位k個の結果を検索する。そして、その結果は元のクエリと組み合わされ、LLMがより正確な回答を生成するための包括的なコンテキストを提供するプロンプトを作成する。このソリューションは、CVP stack (ChatGPT/LLMs + vector database + prompt-as-code)としても知られている。

LLMはクエリのトークンごとに課金します。そのため、ユーザーが同じような質問や繰り返しの質問をすると、何度も課金されることになり、結果的に高いコストになります。ピーク時には、レスポンスが非常に遅くなることもある。時間と労力を節約するために、開発者はベクターデータベースを、LLMの応答を保存するオープンソースのセマンティックキャッシュであるGPTCacheと統合することができる。そうすれば、LLMが以前に回答した質問をユーザが質問したとき、ベクターデータベースはGPTCacheから回答を取得し、LLMを呼び出すことなく、ユーザに素早く返します。

OSSチャットアーキテクチャ](https://assets.zilliz.com/OSS_Chat_architecture_d041f65ce2.png)

上図は、Zilliz CloudとGPTCacheを活用したAIチャットボットOSS Chatのアーキテクチャです。

LLM補強](https://zilliz.com/learn/Retrieval-Augmented-Generation)に加え、ベクトルデータベースは、レコメンダーシステム、画像/音声/動画/テキストの類似検索、異常検知、質問応答システム、分子類似検索など、多くのユースケースで利用価値がある。

あなたのプロジェクトに最適なベクトルデータベースを選ぶには?

プロジェクトに適したベクターデータベースを選ぶのに苦労していませんか?数多くの選択肢があるため、圧倒されてしまうかもしれません。幸いなことに、十分な情報に基づいた決定を下すのに役立つソリューションがあります。

VectorDBBenchは、オープンソースのベクターデータベースのベンチマークツールです。QPS、レイテンシ、キャパシティ、その他のメトリクスに関して、様々なベクトルデータベースシステムを評価する。Pythonで書かれており、MITオープンソースライセンスの下でライセンスされているので、誰でも自由に使用、変更、配布することができます。

VectorDBBenchを使えば、マーケティング上の主張ではなく、実際のパフォーマンスに基づいて最適なベクトルデータベースを選択することができます。始めるには、このチュートリアルを参照してください。

要約

この投稿ではベクトルデータベースの概要を説明し、従来のリレーショナルデータベース上のベクトル検索ライブラリやベクトル検索プラグインとの違いを説明しました。最も重要なのは、ユーザーが十分な情報を得た上で選択するためのオープンソースのベンチマークツールであるVectorDBBenchを紹介することである。

次の記事では、世界初で最も広く使われているオープンソースのベクターデータベースであるMilvusを紹介し、Milvusを使い始める方法を説明します。

Updated on Jul 09, 2026