一、简介
今天简单聊聊传统数据库和向量数据库,注意我这里讲的是"和",而不是对立的关系。
1.1.1传统数据库
它通常是指关系型数据库(比如mysql、postgresql、oracle)以及一些非关系型数据库(如mongodb、redis)。这一类传统数据库的特点就是:
- 数据结构化:数据是按照预设的schema存储,比如说是表格、文档(键值对)等。数据是标量(scalar,区别于向量,可见我的张量介绍一文)类型,如数字、字符串、日期、布尔值。
- 查询方式:查询的核心是精确匹配(where name="张三")、范围查询(where...between...and...)(where age>30)、排序(order by....)
- ACID特性:关系型数据库强调事务的原子性、一致性、隔离性、持久性,保证数据的可靠。
常见应用:用户信息管理、订单系统等结构化数据场景。
1.1.2举例
- 关系型数据库(RDBMS)
MySQL:开源、广泛使用,适合Web应用。
PostgreSQL:功能强大,支持复杂查询、JSON、GIS等。
Oracle Database:企业级,高可用、高安全。
Microsoft SQL Server:Windows生态友好,商业支持强。
SQLite:轻量级,嵌入式场景常用。
- NoSQL 数据库
a) 文档型
MongoDB:灵活 schema,适合内容管理、日志等。
Couchbase:高性能键值+文档混合模型。
b) 键值型
Redis:内存为主,常用于缓存、实时分析。
DynamoDB:AWS托管服务,适合大规模无模式数据。
c) 列族型
Apache Cassandra:分布式、高写入吞吐,适合物联网、时序数据。
HBase:基于Hadoop生态,适合大数据场景。
d) 图数据库
Neo4j:擅长社交网络、推荐系统等图结构数据。
Amazon Neptune:托管图数据库服务。
1.2.1向量数据库
它通常是专门处理向量嵌入而设计的一类数据库。例如milvus。向量嵌入(vector embedding)是指将非结构化数据(比如说文本、语音、图像等)通过embedding转换成浮点数数组(例如0.12, -0.34, 0.87, ...)这一类数据库的特点:
- 相似搜索
- 数据结构:它里面的数据多是高维向量。它也可以存储元数据。
- 查询方式:它不是找完全一样的数据,而是找"最相似"的数据。使用余弦相似度或者欧氏距离等去度量两个向量之间的"语义距离"。
常见应用:语义搜索、图像/视频搜索、推荐系统、RAG、异常检测等等场景。
1.2.2常见的向量数据库
|---------------------|-----------------------------|--------------|
| 名称 | 特点 | 适合场景 |
| Milvus | 开源、可扩展、支持多种索引类型 | 大规模向量检索、AI应用 |
| Pinecone | 全托管云服务,API友好 | 快速集成、生产环境 |
| Weaviate | 支持混合搜索(文本+向量)、GraphQL | 知识图谱、语义搜索 |
| Qdrant | 高性能、Python/Go SDK完善 | 推荐系统、RAG应用 |
| Faiss(Facebook) | Facebook开源库,非独立数据库但常被封装使用 | 离线训练、本地部署 |
| Elasticsearch(7.x+) | 支持稠密向量搜索,可结合全文检索 | 混合搜索需求 |
| pgvector | PostgreSQL插件,将向量能力引入传统RDBMS | 团队希望统一架构的情况 |
二、他俩关系以及配合
传统数据库和向量数据库不是互相取代的关系,而是互补关系。在企业级应用中,两者常常结合使用。
总结1:
- 传统数据库处理精确的、结构化的、事务性数据。
- 向量数据库处理模糊的、非结构化的、语义性数据,擅长相似性搜索。
- 两者合作,可以构建出功能更强大、体验更智能的现代应用。
总结2:
如果各位观众姥爷觉得本文有用的话,希望能够一键三连!你们的点赞关注是作者持续创作的动力!下次作者将简单聊聊Milvus包括检索方式、排序等等。