快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    创建一个性能对比项目,比较向量数据库(如Weaviate)和传统数据库(如PostgreSQL)在相似性搜索任务中的表现。包括:1. 相同数据集在两种数据库中的导入;2. 设计多种查询场景(精确匹配、相似度搜索、范围查询);3. 测量查询延迟和吞吐量;4. 生成可视化对比图表。使用Jupyter Notebook记录完整测试过程。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

示例图片

最近在做推荐系统优化时,发现相似性搜索的性能瓶颈越来越明显。正好了解到向量数据库这个概念,就想着做个实测对比,看看它和传统数据库在效率上到底有多大差异。

1. 为什么需要做这个对比

传统关系型数据库在处理结构化数据时很出色,但随着AI应用的普及,我们需要处理越来越多的高维向量数据(比如图像特征、文本嵌入)。这些场景下,传统的索引方式效率明显不足。

向量数据库专门为这类数据设计了优化的存储和检索机制,理论上应该有很大优势。但具体能快多少?这就是我想通过实测验证的。

2. 测试环境搭建

  1. 选择Weaviate作为向量数据库代表,它支持开箱即用的向量搜索
  2. 使用PostgreSQL作为传统数据库代表,搭配pgvector扩展使其支持向量操作
  3. 数据集选用SIFT1M,包含100万个128维的特征向量
  4. 测试机器配置:8核CPU/16GB内存的云服务器

3. 测试过程详解

数据导入阶段
  1. 在PostgreSQL中创建带pgvector扩展的表,字段包含id和vector(128)
  2. Weaviate直接创建Object类,设置vectorizer为none(使用原始向量)
  3. 分批导入数据,记录各自耗时

实际测试发现: - PostgreSQL导入耗时约12分钟 - Weaviate导入耗时约8分钟

查询性能测试

设计了三类典型查询场景:

  1. 精确匹配(KNN搜索)
  2. 查找与查询向量最相似的top 10结果
  3. PostgreSQL使用<->距离运算符
  4. Weaviate使用nearVector查询

  5. 范围查询

  6. 查找距离小于指定阈值的所有向量
  7. PostgreSQL使用WHERE vector <-> query_vector < threshold
  8. Weaviate使用distance参数

  9. 混合查询

  10. 在带过滤条件的情况下进行相似性搜索
  11. 例如"找与A相似且标签为X的向量"

4. 测试结果分析

通过Jupyter Notebook记录每次查询的耗时,主要发现:

  1. 在top-K相似搜索场景下(K=10)
  2. Weaviate平均响应时间:12ms
  3. PostgreSQL平均响应时间:240ms

  4. 随着K值增大,性能差距更加明显

  5. 当K=100时,Weaviate仍保持在15ms左右
  6. PostgreSQL已增长到850ms

  7. 范围查询方面

  8. Weaviate可以利用其原生索引快速过滤
  9. PostgreSQL需要全表扫描计算距离

5. 性能差异的原因

  1. 索引结构差异
  2. Weaviate使用HNSW等近似最近邻算法
  3. PostgreSQL即使有pgvector也依赖线性扫描

  4. 数据布局优化

  5. 向量数据库会针对向量查询优化存储格式
  6. 传统数据库需要兼顾多种查询模式

  7. 并行处理能力

  8. Weaviate可以更好地利用多核进行向量运算

6. 适用场景建议

根据测试结果,给出以下建议:

  1. 优先使用向量数据库的场景
  2. 以相似性搜索为主的AI应用
  3. 需要实时响应的推荐系统
  4. 高维向量的快速检索

  5. 仍适合传统数据库的场景

  6. 需要复杂事务处理
  7. 强一致性要求的业务
  8. 结构化数据的关联查询

7. 测试平台体验

这次测试全程在InsCode(快马)平台完成,最大的感受是环境配置特别省心。平台已经预装了Jupyter和常用数据库驱动,省去了繁琐的安装过程。

对于这种需要同时操作多种数据库的测试,平台的一键运行功能特别实用。示例图片

测试完成后,还可以直接部署成可交互的演示页面,方便团队其他成员查看结果。整个过程比本地开发效率高很多,特别适合需要快速验证技术方案的场景。

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    创建一个性能对比项目,比较向量数据库(如Weaviate)和传统数据库(如PostgreSQL)在相似性搜索任务中的表现。包括:1. 相同数据集在两种数据库中的导入;2. 设计多种查询场景(精确匹配、相似度搜索、范围查询);3. 测量查询延迟和吞吐量;4. 生成可视化对比图表。使用Jupyter Notebook记录完整测试过程。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐