SingleStore vs Chroma AIアプリケーションに適したベクターデータベースの選択
ベクターデータベースとは?
SingleStoreとChromaを比較する前に、まずベクターデータベースの概念について説明します;
ベクトルデータベース](https://zilliz.com/learn/what-is-vector-database)は、特に高次元のベクトルを格納し、クエリするように設計されています。ベクトルは非構造化データの数値表現です。これらのベクトルは、テキストの意味、画像の視覚的特徴、または製品属性などの複雑な情報を符号化する。効率的な類似検索を可能にすることで、ベクトルデータベースはAIアプリケーションにおいて極めて重要な役割を果たし、より高度なデータ分析と検索を可能にしている。
ベクトルデータベースの一般的なユースケースには、電子商取引の商品推奨、コンテンツ発見プラットフォーム、サイバーセキュリティにおける異常検知、医療画像分析、自然言語処理(NLP)タスクなどがある。また、AI幻覚のような問題を軽減するために、外部知識を提供することによって大規模言語モデル(LLMs)の性能を向上させる技術である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のような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
SingleStoreは分散型リレーショナルSQLデータベース管理システムで、ベクトル検索はアドオンとして提供されている。この記事では、両者のベクトル検索機能を比較する。
SingleStore:概要とコアテクノロジー
SingleStoreは、データベース自体にベクター検索機能を搭載することで、ベクター検索を可能にしました。ベクターは通常のデータベーステーブルに格納され、標準的なSQLクエリで検索することができます。例えば、価格帯でフィルタリングしながら類似の商品画像を検索したり、特定の部門に結果を限定しながらドキュメントの埋め込みを検索したりすることができます。システムは、ベクトルインデックスにFLAT、IVF_FLAT、IVF_PQ、IVF_PQFS、HNSW_FLAT、HNSW_PQを、類似性マッチングにドット積とユークリッド距離を使用したセマンティック検索の両方をサポートしている。これは、推薦システム、画像認識、AIチャットボットなど、類似性マッチングが高速なアプリケーションに超便利である。
SingleStoreの中核は、パフォーマンスとスケールのために構築されている。データベースは複数のノードにデータを分散させるので、大規模なベクトルデータ操作に対応できます。データが大きくなっても、ノードを追加すれば問題ありません。クエリプロセッサーはベクトル検索とSQLオペレーションを組み合わせることができるので、複数のクエリを別々に実行する必要がありません。ベクターのみのデータベースとは異なり、SingleStoreはこれらの機能を完全なデータベースの一部として提供するため、複数のシステムを管理したり、複雑なデータ転送に対応したりすることなく、AI機能を構築することができます。
SingleStoreのベクトルインデックスには2つのオプションがあります。1つ目は厳密なk-最近傍(kNN)検索で、クエリベクトルに最も近いk個の近傍集合を正確に見つけます。しかし、非常に大きなデータセットや高い同時実行性の場合、SingleStoreはベクトルインデックスを使用した近似最近傍(ANN)検索もサポートします。ANN検索は、厳密なkNN検索よりもはるかに高速にk近傍を見つけることができます。速度と精度はトレードオフの関係にあり、ANNは高速ですが、正確なk個の最近傍セットを返すとは限りません。インタラクティブな応答時間が必要で、絶対的な精度を必要としない数十億のベクトルを扱うアプリケーションには、ANN検索が適しています。
SingleStoreにおけるベクトルインデックスの技術的実装には特別な要件があります。これらのインデックスはカラムストアテーブルにのみ作成可能で、ベクトルデータを格納する単一のカラムに作成する必要があります。システムは現在Vector Type(dimensions[, F32])フォーマットをサポートしており、F32は唯一サポートされている要素タイプです。この構造化されたアプローチにより、SingleStoreは大規模な言語モデルからのベクトルを使用した意味検索、焦点を絞ったテキスト生成のためのRAG(retrieval-augmented generation)、ベクトル埋め込みに基づく画像マッチングなどのアプリケーションに最適です。これらを従来のデータベース機能と組み合わせることで、SingleStoreは開発者がパフォーマンスとスケールを維持しながら、SQL構文を使用して複雑なAIアプリケーションを構築することを可能にします。
Chroma: 概要とコアテクノロジー
Chromaは、AIアプリケーションの構築プロセスを簡素化するオープンソースのAIネイティブベクターデータベースです。大規模な言語モデル(LLM)と、それらが効果的に機能するために必要なデータとの橋渡しの役割を果たす。Chromaの主な目的は、知識、事実、スキルにLLMが簡単にアクセスできるようにすることで、AIを搭載したアプリケーションの開発を効率化することだ。Chromaの中核は、ベクターデータを管理するためのツールを提供することで、開発者はエンベッディング(データのベクター表現)を関連するメタデータとともに保存することができる。この機能は、多くのAIアプリケーションにとって非常に重要であり、ベクトル関係に基づく効率的な類似検索やデータ検索を可能にします。
Chromaの主な強みのひとつは、シンプルさと開発者の生産性を重視していることだ。Chromaの開発チームは、開発者がベクトル検索機能をアプリケーションに素早く統合できるよう、直感的なインターフェイスを作ることを優先した。使いやすさを重視するあまり、パフォーマンスが犠牲になることはありません。Chromaは高速かつ効率的に設計されているため、さまざまなアプリケーションに適している。Chromaはサーバーとして動作し、PythonとJavaScript/TypeScriptの両方に対応したクライアントSDKを提供します。
Chromaの機能は、関連するエンベッディングのグループであるコレクションの概念を中心に展開されます。Chromaのコレクションにドキュメントを追加すると、システムは自動的にトークン化し、指定されたエンベッディング関数(指定されていない場合はデフォルトの関数)を使ってエンベッディングを行います。この処理により、生データは効率的に検索できるベクトル表現に変換される。エンベッディングとともに、Chromaでは各文書のメタデータを保存することができ、これにはデータのフィルタリングや整理に役立つ追加情報を含めることができます。Chromaは柔軟なクエリーオプションを提供しており、ベクトル埋め込みまたはテキストクエリーのいずれかを使用して類似文書を検索し、ベクトルの類似性に基づいて最も近い一致を返します。
Chromaはいくつかの点で際立っている。ChromaのAPIは直感的で使いやすいように設計されており、ベクターデータベースを初めて使う開発者でも学習曲線が少なくなっている。Chromaは様々なタイプのデータをサポートし、様々なエンベッディングモデルに対応しているため、ユーザーは特定のユースケースに最適なアプローチを選択することができる。Chromaは、他のAIツールやフレームワークとシームレスに統合できるように構築されており、複雑なAIパイプラインに適している。さらに、Chromaはオープンソース(ライセンスはApache 2.0)であるため、透明性が高く、コミュニティ主導の改善やカスタマイズが可能です。Chromaチームは、マネージドサービス(Hosted Chroma)の計画や様々なツールの改善など、積極的に機能強化に取り組んでおり、継続的な開発とサポートへのコミットメントを示している。
##主な違い
検索方法
SingleStoreにはベクトル検索が組み込まれているため、ベクトルをデータと一緒に保存し、SQLでクエリを実行することができます。厳密なk-最近傍探索(kNN)と近似最近傍探索(ANN)の両方をサポートしています。ANNインデックス(例:HNSW_FLAT)は、精度はトレードオフだが、大規模なデータセットに対して高速であるため、大規模でインタラクティブなアプリケーションに最適である。
ChromaはAIワークフロー用に構築されている。そのベクトル検索は、コレクションに格納された埋め込みとメタデータを使用する。類似検索をサポートしているが、その焦点は高度なインデックス作成よりも埋め込みとメタデータの保存にある。そのため、RAGやメタデータドリブンクエリに最適だ。
データ
SingleStoreは構造化データ、半構造化データ、非構造化データをサポートしています。例えば、SQLクエリーを使用して、価格やカテゴリーなどのメタデータでベクトル検索結果をフィルタリングすることができます。
Chromaは非構造化データとエンベッディングのためのものです。メタデータはエンベッディングと一緒に保存することができ、ベクター化されたデータの取り扱いとクエリをシンプルにすることができます。
スケーラビリティとパフォーマンス
SingleStoreはスケーラブルに設計されており、データをノードに分散し、大規模なオペレーションを実現します。SQLとベクトル検索を組み合わせることで、別システムの必要性を最小限に抑え、AIパイプラインのレイテンシーと複雑さを軽減します。
Chromaは開発者の使いやすさと小規模から中規模のアプリケーション向けだが、同じようなスケーラビリティ機能は組み込まれていない。データを埋め込むのに大規模な分散システムを必要としない、焦点を絞ったユースケースに最適です。
柔軟性とカスタマイズ性
SingleStoreは、SQLインターフェースと複数のベクトル・インデックス方式をサポートすることで、 柔軟性を備えています。SQL に精通した開発者は、構造化データとベクトル操作を組み合わせた複雑なクエリを構築できるため、混在するワークロードに対して高度にカスタマイズ可能です。
Chromaは、簡単なAPIとシームレスなエンベッディングにより、シンプルさを追求している。その柔軟性は、複数のエンベッディング・モデルと統合でき、メタデータ・リッチなワークフローをサポートできることに由来する。
統合とエコシステム
SingleStoreは汎用データベースであり、データスタック全体にわたって幅広い統合機能を備えているため、企業環境の既存システムやツールとの接続が容易です。
ChromaはAIワークフローと緊密に結合しており、PythonとJavaScript/TypeScript用のファーストパーティSDKを持っている。AIパイプラインやフレームワークとうまく統合できるので、AIやLLMを多用するチームに最適です。
使いやすさ
SingleStoreのセットアップと最適化には、データベースの知識が必要です。SQLユーザーにとってはベクトル検索が簡単になる一方で、非データベース管理者にとっては学習曲線が急になります。
Chromaは初心者に優しく、ベクターデータベースの経験が少ない開発者向けに設計されています。簡単なAPIと自動エンベッディングにより、特にAI主導のプロジェクトでは、簡単に始めることができます。
コスト
SingleStoreは、ベクトル検索と従来のデータベース機能を組み合わせることで、技術スタックを統合することができる。しかし、そのエンタープライズ機能とスケーラビリティは、マネージドサービスのためのより高いコストを伴います。
Chromaはオープンソースなので、初期費用が少なくて済みます。チームはマネージド・サービスに取り組んでいるが、現在のセットアップでは、スケーリングやメンテナンスに手作業が多くなり、総所有コストに影響する。
セキュリティ
SingleStoreは、エンタープライズグレードのセキュリティ、暗号化、認証、役割ベースのアクセス制御を備えています。厳格なコンプライアンスを必要とする環境に最適です。
Chromaはオープンソースプロジェクトであり、セキュリティよりも機能性を重視している。基本的な認証とアクセス制御を備えていますが、そのままでは企業のセキュリティ要件を満たさないかもしれません。
SingleStoreを使用する場合
SingleStoreは、ベクトル検索が構造化データや半構造化データと共に動作する必要がある大規模分散データシステムに最適です。メタデータによるフィルタリングやリレーショナルデータとの統合など、従来のSQLクエリと高性能なベクトル検索を組み合わせる必要がある場合、SingleStoreは唯一の選択肢です。拡張性、セキュリティ、単一の技術スタックを必要とし、複雑さと運用のオーバーヘッドを削減するエンタープライズ環境に最適です。
Chromaを使うとき
Chromaは、エンベッディングやメタデータを多用するワークフローが中核となるAI主導のプロジェクトに適している。Chromaは、検索を利用した生成、レコメンデーションシステム、大規模な言語モデルを利用したアプリケーションなどのユースケースで威力を発揮します。ラピッドプロトタイピングや、最小限のセットアップで小規模なAIアプリケーションをデプロイすることに重点を置くのであれば、ChromaのAPIと統合しやすい設計は、非常に生産的な選択肢となる。オープンソースであることも、透明性とツールのカスタマイズ能力を求める開発者にアピールしている。
結論
SingleStoreの強みは、伝統的なデータベース機能とベクトル検索を融合させた点にあり、エンタープライズ環境における大規模な混合データワークロードに最適である。Chromaはシンプルさと使いやすさを優先しており、AIファーストのアプリケーションや、すぐに使い始めたい開発者には最適な選択肢だ。この2つの選択は、ユースケース、扱うデータの種類、プロジェクトのスケールとパフォーマンス要件に基づいて行う必要があります。
SingleStoreとChromaの概要についてはこちらをお読みいただきたいが、これらを評価するには、ユースケースに基づいて評価する必要がある。それに役立つツールの一つが、ベクターデータベースの比較のためのオープンソースのベンチマークツールである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: Open-Source Vector Database Benchmark Tool](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)
読み続けて

Introducing Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud
We're announcing the general availability of Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud.

How to Build RAG with Milvus, QwQ-32B and Ollama
Hands-on tutorial on how to create a streamlined, powerful RAG pipeline that balances efficiency, accuracy, and scalability using the QwQ-32B and Milvus.

Vector Databases vs. Time Series Databases
Use a vector database for similarity search and semantic relationships; use a time series database for tracking value changes over time.
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.


