이 블로그 게시물에 설명 된 벤치 마크 연구 코드.
LANCEDB는 오픈 소스, 내장 및 개발자 친화적 인 벡터 데이터베이스입니다. LANCEDB에 대한 몇 가지 주요 기능은 매우 귀중한 기능이 아래에 나열되어 있으며 GitHub Repo에 나열되어 있습니다.
이 repo의 목표는 엔드 투 엔드 벤치 마크를 통해 LANCEB의 전체 텍스트 및 벡터 검색 기능을 보여주는 것입니다.이 쿼리 결과와 처리량을 신중하게 연구합니다.
이 데모에 사용 된 데이터 세트는 Kaggle의 Wine Reviews 데이터 세트이며, 다른 메타 데이터와 함께 와인에 대한 ~ 130k 리뷰가 포함되어 있습니다. 데이터 세트는 ZIP 아카이브로 변환되며 이에 대한 코드와 ZIP 데이터의 코드는 참조를 위해 여기에 제공됩니다.
모든 도구의 성능을 분리하는 것은 어려운 일이므로 비교를 위해이 repo에는 Elasticsearch 워크 플로가 제공됩니다. Elasticsearch는 인기있는 Lucene 기반의 전체 텍스트 및 벡터 검색 엔진으로 전체 텍스트 (및 요즘 벡터 검색)에 정기적으로 정당화되므로 LancedB와 비교하는 의미있는 도구입니다.
requirements.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 |
아래에 표시된 직렬 벤치 마크는 파이썬의 루프에 대한 동기화로 순차적으로 실행되는 쿼리를 포함합니다. 이것은 생산에서 현실적인 사용 사례를 대표하지 않지만 각 경우에 기본 검색 엔진의 성능을 이해하는 데 유용합니다 (Elasticsearch의 경우 Lucene 및 LancetB의 Tantivy).
이에 대한 자세한 내용은 블로그 게시물에서 설명합니다.
| 쿼리 | 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 |
동시 벤치 마크는 LANCENB 또는 ELASTICSEARCH의 현실적인 사용 사례를 복제하도록 설계되었습니다. 여기서 여러 쿼리가 동시에 도착하고 DB 위의 나머지 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 개의 스레드 (SEC) | lancetb, 4 개의 스레드 (QP) |
|---|---|---|---|---|
| 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 |