lancedb study
1.0.0
本博客文章中描述的基准研究代码。
LancedB是开源,嵌入式和开发人员友好的向量数据库。下面列出了有关LancedB的一些关键功能,这些功能使其非常有价值,以及在其GitHub存储库上列出的其他许多关键功能。
此存储库的目的是通过端到端的基准来证明LancedB的全文和矢量搜索功能,我们在其中仔细研究了查询结果和吞吐量。
用于此演示的数据集是Kaggle的Wine评论数据集,其中包含〜130K葡萄酒的评论以及其他元数据。数据集将转换为ZIP存档,并在此处提供邮政编码以及邮政编码。
研究任何工具的性能是一个挑战,因此为了进行比较,在此存储库中提供了Elasticsearch Workflow。 Elasticsearch是一种受欢迎的基于Lucene的全文和矢量搜索引擎,其使用定期用于全文(如今,矢量搜索),因此这使其成为将LanceNCANCE与Lancectb相比的有意义的工具。
通过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 |
下面显示的串行基准涉及在Python中依次运行的查询。这并不代表生产中现实的用例,但在每种情况下都可以理解基础搜索引擎的性能(Lucene for Elasticsearch和Tantivy for LanceNCB)。
有关此信息的更多详细信息将在博客文章中讨论。
| 查询 | 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个线程(SEC) | 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 |