TiDBとDeep Lake AIアプリケーションに適したベクターデータベースの選択
ベクターデータベースとは?
TiDBとDeep Lakeを比較する前に、まずベクターデータベースの概念について説明しよう;
ベクトルデータベース](https://zilliz.com/learn/what-is-vector-database)は、特に高次元のベクトルを格納し、クエリするために設計されています。ベクトルは非構造化データの数値表現です。これらのベクトルは、テキストの意味、画像の視覚的特徴、または製品の属性などの複雑な情報をエンコードします。効率的な類似検索を可能にすることで、ベクトルデータベースはAIアプリケーションにおいて極めて重要な役割を果たし、より高度なデータ分析と検索を可能にしている。
ベクトルデータベースの一般的なユースケースには、電子商取引の商品推奨、コンテンツ発見プラットフォーム、サイバーセキュリティにおける異常検知、医療画像分析、自然言語処理(NLP)タスクなどがある。また、AI幻覚のような問題を軽減するために、外部知識を提供することによって大規模言語モデル(LLM)の性能を向上させる技術であるRAG(Retrieval Augmented Generation)でも重要な役割を果たしている。
市場には、以下のような多くの種類のベクトル・データベースがある:
- Milvus](https://zilliz.com/what-is-milvus)、Zilliz Cloud(フルマネージドMilvus)など。
- Faiss](https://zilliz.com/learn/faiss)やAnnoyのようなベクトル検索ライブラリ。
- Chroma](https://zilliz.com/blog/milvus-vs-chroma)やMilvus Liteのような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
TiDBは従来のデータベースにベクトル検索をアドオンしたものであり、Deep Lakeはベクトル埋め込みに最適化されたデータレイクである。この記事では、両者のベクトル検索機能を比較する。
TiDB: 概要とコアテクノロジー
PingCAP社によって開発されたTiDBは、オープンソースの分散型SQLデータベースであり、ハイブリッドトランザクションと分析処理(HTAP)機能を提供する。MySQLと互換性があるため、MySQLのエコシステムに慣れ親しんでいるチームでも簡単に導入することができます。TiDBの分散SQLアーキテクチャは、SQLデータベースのリレーショナルモデルを維持しながら、NoSQLデータベースのような水平スケーラビリティを提供し、トランザクションと分析の両方のワークロードを処理するための高い柔軟性を実現しています。
TiDBの中核的な強みの1つはHTAPアーキテクチャであり、トランザクション(OLTP)と分析(OLAP)のワークロードを単一のデータベースで処理できるため、別々のシステムを用意する必要がありません。さらに、TiDBはMySQLと互換性があるため、アプリケーションコードを大幅に変更することなく、MySQLに依存している既存の環境に簡単に統合することができます。また、このデータベースは自動シャーディング機能を備えており、ノード間でデータを自動的に分散することで、強力な一貫性を維持しながら読み取りと書き込みのパフォーマンスを向上させます。
TiDBは外部ライブラリやプラグインとの統合によりベクトル検索をサポートし、ベクトル化されたデータの効率的な管理とクエリを可能にします。この機能とTiDBのHTAPアーキテクチャを組み合わせることで、トランザクションや分析ワークロードに加えてベクトル検索機能を必要とするビジネスにとって、TiDBは汎用性の高い選択肢となります。TiDBの分散アーキテクチャにより、必要な構成が整えば、大規模なベクタークエリを処理することができます。
TiDBにベクトル検索機能を組み込むには追加の設定が必要ですが、TiDBはSQLと互換性があるため、開発者はベクトル検索と従来のリレーショナルクエリを組み合わせることができます。この柔軟性により、TiDBはベクトル検索とリレーショナルデータベースの両方の機能を必要とする複雑なアプリケーションに適しており、多様なデータ管理ニーズに対する包括的なソリューションを提供します。
DeepLake概要とコアテクノロジー
ディープレイク](https://github.com/activeloopai/deeplake)は、AIや機械学習で広く使用される画像、音声、動画、その他の非構造化データなどのベクトルデータやマルチメディアデータを扱うために構築された特殊なデータベースである。データレイクとしてもベクターストアとしても機能する:
- データレイクとして**:Deep Lakeは、非構造化データ(画像、音声、動画、テキスト、医療画像用のNIfTIのようなフォーマット)をバージョン管理された形式で保存・整理することをサポートします。このセットアップにより、深層学習タスクのパフォーマンスが向上する。データセットの高速な照会と視覚化が可能になり、AIモデル用の高品質なトレーニングセットの作成が容易になる。
- ベクターストアとして**:Deep Lakeは、vector embeddingsと関連するメタデータ(テキスト、JSON、画像など)の保存と検索のために設計されています。データはローカル、クラウド環境、または Deep Lake のマネージドストレージに保存できます。LangChainやLlamaIndexのようなツールとシームレスに統合され、RAG(Retrieval Augmented Generation)アプリケーションの開発を簡素化します。
Deep Lakeは、Hnswlibパッケージをベースに最適化を加えたHNSW(Hierarchical Navigable Small World)インデックスを、近似最近傍(ANN)検索に使用しています。これにより、3,500万以上の埋め込みデータを1秒未満で検索することができます。独自の機能として、より高速にインデックスを作成するためのマルチスレッディングや、RAM使用量を削減するためのメモリ効率的な管理があります。
デフォルトでは、Deep Lakeは10万行までのデータセットに対して線形埋め込み検索を使用します。それ以上のデータセットでは、精度とパフォーマンスのバランスを取るためにANNに切り替わる。APIにより、ユーザーは必要に応じてこの閾値を調整できる。
Deep Lakeのインデックスは、属性検索とベクトル検索を組み合わせた検索(現在は線形検索に依存している)には使用されないが、今後のアップデートでこの制限に対処し、機能をさらに向上させる予定だ。
ベクターストアとしての Deep Lake: Deep Lake は、vector embeddings と、テキスト、JSON、画像、音声、動画ファイルなどの関連メタデータを保存・検索するための堅牢なソリューションを提供します。ローカル、お好みのクラウド環境、またはDeep Lakeのマネージドストレージにデータを保存できます。また、Deep LakeはLangChainやLlamaIndexのようなツールとのシームレスな統合も提供しており、開発者は検索拡張世代(RAG)アプリケーションを簡単に構築することができます。
主な違い
検索方法
TiDB: TiDBは外部ライブラリやプラグインによるベクトル検索をサポートしている。HnswlibやFaissのようなライブラリを使った近似最近傍(ANN)検索をサポートしています。しかし、これはネイティブの機能ではないため、プラグアンドプレイのソリューションを求めるユーザーには適さないかもしれません。
ディープレイクDeep Lakeは、ANN検索にHNSWインデックスを使用し、大規模な埋め込みを高速にクエリできるように最適化されています。ベクトルベースのアプリケーションにネイティブなので、3,500万を超える埋め込みデータセットでも、最小限のセットアップで検索が可能です。
データ
TiDB: TiDBは構造化データや半構造化データを得意とする。ハイブリッド・トランザクション&アナリティカル・ワークロード(HTAP)をサポートしているので、OLTPとOLAPを同時に実行できる。TiDBはプラグインによってベクトルデータを管理することができるが、主な対象はリレーショナルデータだ。
Deep Lake:Deep Lakeは非構造化データ、マルチメディアデータ、画像、動画、テキストに最適化されている。バージョン管理とベクターデータベースを組み合わせることで、多様で複雑なデータを扱うディープラーニングやAIアプリケーションに適している。
スケーラビリティ
TiDB:TiDBの分散アーキテクチャと自動シャーディングは、ノード間で水平方向に拡張でき、大きなデータとワークロードを効率的に処理できる。しかし、ベクトル検索のスケーリングは、使用する外部ライブラリに依存する。
Deep Lake:Deep Lakeは、非構造化データに対して高いパフォーマンスを発揮するように設計されている。ANNの実装は高度に最適化されており、マルチスレッドやメモリ効率の高いインデックス作成などの機能により、スケール時のパフォーマンスを保証する。
柔軟性とカスタマイズ
TiDB: TiDBのSQL互換性により、従来のSQL操作とベクトル検索を組み合わせて、リレーショナルクエリによる多くのカスタマイズが可能です。これは、構造化データとベクトルデータが混在する複雑なアプリケーションに有用である。
Deep Lake:Deep Lakeは、検索、可視化、データセットのバージョン管理のための組み込み可能なAPIを持っている。属性検索とベクトル検索を組み合わせた機能はまだないが、現在開発中だ。
統合とエコシステム
TiDB: TiDBはMySQLベースのエコシステムや多くのデータツールとうまく統合できる。MySQLとの互換性があるため、従来のRDBMSに慣れ親しんだ開発者でも簡単に利用できる。
Deep Lake:Deep Lakeは、PyTorchやTensorFlowのような機械学習フレームワークや、LangChainやLlamaIndexのようなツールと統合されている。これらの統合により、AIやRAGのワークフローに非常に適している。
使いやすさ
TiDB: MySQLに精通していれば、TiDBのセットアップは比較的簡単である。しかし、ベクトル検索機能を追加するには、外部プラグインの追加設定が必要で、デプロイが複雑になる可能性がある。
Deep Lake:Deep LakeのAPIは開発者に優しく、明確なドキュメントが用意されている。機械学習ワークフローにフォーカスしているため、ベクトル検索を始めるのに必要な設定は最小限だ。
価格
TiDB: TiDBのコストは、実行するインフラとデプロイの規模に依存します。ベクター検索プラグインには追加費用がかかる場合があります。
Deep Lake:Deep Lakeはマネージド・ストレージと検索を提供しており、コスト計画を簡素化できる。しかし、ローカルまたはクラウド環境で実行する場合は、ストレージと計算要件に応じたコストが発生する。
セキュリティ
TiDB: TiDBには、暗号化、認証、アクセス制御など、企業に適した強固なセキュリティ機能があります。
Deep Lake:Deep Lakeはデータストレージの暗号化とロールベースのアクセス制御を備えています。マネージドサービスにはデフォルトのセキュリティ設定が含まれていますが、ローカルの導入状況によって異なる場合があります。
TiDBを選択するタイミング
TiDBは、強力なSQLを備えたハイブリッド・トランザクション&アナリティカル・プロセッシング(HTAP)データベースを必要とするチームに適している。MySQLと互換性があるため、すでにMySQLベースのシステムを使用しているチームにとっては自然な選択です。TiDBは、大規模な構造化データまたは半構造化データをベクトル検索で処理する場合、特にリレーショナルクエリとベクトル検索を統合する必要がある場合に使用します。TiDBの分散アーキテクチャと自動シャーディングは、水平にスケールされたシステム全体でトランザクションおよび分析アプリケーションのパフォーマンスを保証します。
ディープレイクを選ぶとき
Deep Lakeは、画像、音声、動画などの非構造化データが多いAIや機械学習プロジェクトに適している。ベクトル埋め込みをネイティブでサポートし、PyTorchやTensorFlowのようなMLフレームワークと統合されているため、検索拡張世代(RAG)アプリケーションの構築やマルチメディアデータセットの管理に適しています。最小限の設定で高速な近似最近傍(ANN)検索を必要とし、複雑なバージョン管理されたデータセットをサポートするなら、Deep Lakeは最もシンプルで効率的なソリューションです。
結論
TiDBは、構造化データ用の分散型SQL互換データベースで、リレーショナルクエリとベクトル検索を組み合わせており、企業のハイブリッドワークロードに適している。Deep Lakeは非構造化データ向けで、AI/MLワークフローやベクトルベースのアプリケーション向けの開発者フレンドリーなプラットフォームだ。ユースケース、データの種類、アプリケーションのパフォーマンス要件に基づいて、どちらかを選択する。それぞれに強みがあるので、プロジェクトのコア・ニーズに合ったものを選ぼう。
TiDBとDeep Lakeの概要についてはこちらをお読みいただきたいが、これらを評価するには、ユースケースに基づいて評価する必要がある。それに役立つツールのひとつが、ベクターデータベースを比較するためのオープンソースのベンチマークツールであるVectorDBBenchだ。最終的には、独自のデータセットとクエリパターンで徹底的なベンチマークを行うことが、分散データベースシステムにおけるベクトル検索に対する、強力だが異なるこの2つのアプローチのどちらを選ぶかを決める鍵となるだろう。
オープンソースのVectorDBBenchを使ってベクトルデータベースを評価・比較する
VectorDBBenchは、高性能なデータ保存・検索システム、特にベクトルデータベースを必要とするユーザーのためのオープンソースのベンチマークツールです。このツールにより、ユーザはMilvusやZilliz Cloud(マネージドMilvus)のような異なるベクトルデータベースシステムを独自のデータセットを使ってテストし比較し、自分のユースケースに合うものを見つけることができます。VectorDBBenchを使えば、ユーザーはマーケティング上の主張や伝聞ではなく、実際のベクターデータベースのパフォーマンスに基づいて決定を下すことができます。
VectorDBBenchはPythonで書かれており、MITオープンソースライセンスの下でライセンスされています。VectorDBBenchは、その機能と性能の改善に取り組む開発者のコミュニティによって活発にメンテナンスされています。
VectorDBBenchをGitHubリポジトリ**からダウンロードして、我々のベンチマーク結果を再現したり、あなた自身のデータセットでパフォーマンス結果を得てください。
VectorDBBench Leaderboard](https://zilliz.com/vector-database-benchmark-tool?database=ZillizCloud%2CMilvus%2CElasticCloud%2CPgVector%2CPinecone%2CQdrantCloud%2CWeaviateCloud&dataset=medium&filter=none%2Clow%2Chigh&tab=1)で、主流のベクトルデータベースのパフォーマンスを簡単に見てみましょう。
ベクターデータベースの評価については、以下のブログをお読みください。
- ベンチマーク・ベクター・データベースのパフォーマンス:テクニックと洞察](https://zilliz.com/learn/benchmark-vector-database-performance-techniques-and-insights)
- VectorDBBench: オープンソースベクターデータベースベンチマークツール](https://zilliz.com/learn/open-source-vector-database-benchmarking-your-way)
- ベクターデータベースを他のデータベースと比較する](https://zilliz.com/comparison)
VectorDB、GenAI、MLに関するその他のリソース
- ジェネレーティブAIリソースハブ|Zilliz](https://zilliz.com/learn/generative-ai)
- あなたのGenAIアプリのためのトップパフォーマンスAIモデル|Zilliz](https://zilliz.com/ai-models)
- RAGとは](https://zilliz.com/learn/Retrieval-Augmented-Generation)
- 大規模言語モデル(LLM)を学ぶ](https://zilliz.com/learn/ChatGPT-Vector-Database-Prompt-as-code)
- ベクトルデータベース101](https://zilliz.com/learn/what-is-vector-database)
- 自然言語処理(NLP)](https://zilliz.com/learn/introduction-to-natural-language-processing-tokens-ngrams-bag-of-words-models)
読み続けて

Will Amazon S3 Vectors Kill Vector Databases—or Save Them?
AWS S3 Vectors aims for 90% cost savings for vector storage. But will it kill vectordbs like Milvus? A deep dive into costs, limits, and the future of tiered storage.
Milvus/Zilliz + Surveillance: How Vector Databases Transform Multi-Camera Tracking
See how Milvus vector database enhances multi-camera tracking with similarity-based matching for better surveillance in retail, warehouses and transport hubs.

OpenAI o1: What Developers Need to Know
In this article, we will talk about the o1 series from a developer's perspective, exploring how these models can be implemented for sophisticated use cases.
The Definitive Guide to Choosing a Vector Database
Overwhelmed by all the options? Learn key features to look for & how to evaluate with your own data. Choose with confidence.


