このブログ投稿で説明されているベンチマーク調査のコード。
LancedBは、オープンソースで、埋め込まれた開発者に優しいVectorデータベースです。非常に価値のあるLancedBに関するいくつかの重要な機能を以下にリストします。
このレポの目的は、エンドツーエンドのベンチマークを介してLancedBのフルテキストとベクトルの検索機能を実証することです。このベンチマークでは、クエリの結果とスループットを注意深く研究します。
このデモに使用されるデータセットは、Kaggleのワインレビューデータセットで、他のメタデータとともにワインに130kのレビューが含まれています。データセットはZIPアーカイブに変換され、これのコードとZIPデータは参照のためにここで提供されます。
任意のツールのパフォーマンスを単独で研究することは課題です。そのため、比較のために、このレポでElasticsearchワークフローが提供されます。 ElasticSearchは、ルーセンに拠点を置くフルテキストとベクターの検索エンジンであり、その使用がフルテキスト(および最近、ベクター検索)に定期的に正当化されているため、LancedBと比較する意味のあるツールになります。
requirements.txtを介して仮想環境の依存関係をインストールします。txt。
# Setup the environment for the first time
python -m venv .venv # python -> python 3.11+
# Activate the environment (for subsequent runs)
source .venv/bin/activate
python -m pip install -r requirements.txt注記
BAAI/bge-small-en-v1.5 )です| 場合 | Elasticsearch(QPS) | lancedb(qps) |
|---|---|---|
| FTS:シリアル | 399.8 | 468.9 |
| FTS:同時 | 1539.0 | 528.9 |
| ベクトル検索:シリアル | 11.9 | 54.0 |
| ベクトル検索:同時 | 50.7 | 71.6 |
以下に示すシリアルベンチマークには、Pythonのループの同期で順次実行されたクエリを順番に実行します。これは、生産における現実的なユースケースの代表ではありませんが、各ケースの基礎となる検索エンジンのパフォーマンスを理解するのに役立ちます(Lucene for Elasticsearch and Tantivy for LancedB)。
これの詳細については、ブログ投稿で説明します。
| クエリ | Elasticsearch(sec) | Elasticsearch(QPS) | lancedb(sec) | lancedb(qps) |
|---|---|---|---|---|
| 10 | 0.0516 | 193.8 | 0.0518 | 193.0 |
| 100 | 0.2589 | 386.3 | 0.2383 | 419.7 |
| 1000 | 2.5748 | 388.6 | 2.1759 | 459.3 |
| 10000 | 25.0318 | 399.8 | 21.3196 | 468.9 |
| クエリ | Elasticsearch(sec) | Elasticsearch(QPS) | lancedb(sec) | lancedb(qps) |
|---|---|---|---|---|
| 10 | 0.8087 | 12.4 | 0.2158 | 46.3 |
| 100 | 7.6020 | 13.1 | 1.6803 | 59.5 |
| 1000 | 84.0086 | 11.9 | 16.7948 | 59.5 |
| 10000 | 842.9494 | 11.9 | 185.0582 | 54.0 |
同時ベンチマークは、LancedBまたはElasticSearchのリアルなユースケースを複製するように設計されています。複数のクエリが同時に到着し、DBの上にあるREST APIは非同期リクエストを処理する必要があります。
注記
multiprocessingライブラリを通じて達成されます(パフォーマンスが低下すると、スレッドの数が多いため)。 | クエリ | Elasticsearch(sec) | Elasticsearch(QPS) | lancedb(sec) | lancedb(qps) |
|---|---|---|---|---|
| 10 | 0.0350 | 285.7 | 0.0284 | 351.4 |
| 100 | 0.1243 | 804.1 | 0.2049 | 487.8 |
| 1000 | 0.6972 | 1434.5 | 1.8980 | 526.8 |
| 10000 | 6.4948 | 1539.0 | 18.9136 | 528.9 |
| クエリ | Elasticsearch(sec) | Elasticsearch(QPS) | lancedb、4スレッド(秒) | LancedB、4スレッド(QPS) |
|---|---|---|---|---|
| 10 | 0.2896 | 34.5 | 0.1409 | 71.0 |
| 100 | 2.5275 | 39.6 | 1.3367 | 74.8 |
| 1000 | 20.4268 | 48.9 | 13.3158 | 75.1 |
| 10000 | 197.2314 | 50.7 | 139.6330 | 71.6 |