摘要
向量数据库是 AI 大模型时代数据检索的基础设施,广泛应用于 RAG(检索增强生成)、推荐系统、图像搜索等场景。本文从 Embedding 向量表示和相似度计算原理出发,解析向量数据库的核心功能,对比主流向量数据库方案,并详解 TiDB 的向量检索能力。
本文适合谁: 正在构建 AI 应用的工程师、CTO、数据架构师。
一、什么是向量检索?
1.1 Embedding 向量表示
传统数据库通过精确匹配或关键词检索数据。向量检索将文本、图像、音频等非结构化数据转化为高维数值向量(Embedding),通过向量之间的距离度量语义相似性。
文本 "数据库高可用" → Embedding 模型 → [0.12, -0.34, 0.56, ..., 0.78](如 1536 维)
文本 "数据容灾备份" → Embedding 模型 → [0.15, -0.31, 0.52, ..., 0.82](如 1536 维)
两个向量越接近(距离越小),语义相似度越高。
1.2 相似度计算方法
| 方法 | 公式 | 范围 | 适用场景 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 余弦相似度 | cos(a,b) = (a·b) / (\ | \ | a\ | \ | · \ | \ | b\ | \ | ) | [-1, 1] | 文本语义搜索(最常用) |
| 欧氏距离(L2) | d(a,b) = √Σ(aᵢ-bᵢ)² | [0, +∞) | 图像特征匹配 | ||||||||
| 内积(IP) | a·b = Σ(aᵢ·bᵢ) | (-∞, +∞) | 已归一化向量的快速匹配 |
二、向量数据库的核心功能
2.1 向量索引类型
| 索引类型 | 特点 | 适用规模 |
|---|---|---|
| HNSW | 基于分层可导航小世界图,召回率高,内存占用大 | 百万~千万级 |
| IVF(倒排文件) | 基于聚类的近似搜索,平衡精度与速度 | 百万~亿级 |
| HNSW + PQ | HNSW + 乘积量化压缩,降低内存占用 | 亿级以上 |
| 暴力搜索(Flat) | 精确计算所有向量距离,速度慢 | 万级以下 |
2.2 向量数据库的核心能力
- 向量写入与索引: 自动构建向量索引,支持批量导入和实时写入
- 相似度搜索: Top-K 近邻查询,支持距离过滤和元数据过滤
- 混合查询: 向量检索 + 标量过滤(如"在价格 100-500 之间搜索相似商品")
- 实时更新: 向量增删改不影响已有索引结构
三、主流向量数据库对比
| 维度 | Milvus | Pinecone | Qdrant | TiDB Vector |
|---|---|---|---|---|
| 部署方式 | 开源自建 / 云服务 | 纯 SaaS | 开源自建 / 云服务 | 开源自建 / 云服务 |
| 向量索引 | HNSW, IVF, DiskANN | 专有索引 | HNSW | HNSW |
| 元数据过滤 | 支持 | 支持 | 支持 | 原生 SQL 过滤 |
| 事务支持 | 无 | 无 | 无 | 完整 ACID |
| 标量数据 | 需搭配外部数据库 | 有限 | 有限 | 统一存储 |
| 学习成本 | 中 | 低 | 中 | 低(SQL 生态) |
| 适用场景 | 大规模纯向量检索 | 快速原型 | 嵌入式 / 边缘 | 业务数据 + 向量一体化 |
TiDB Vector 的差异化优势: 将向量检索能力内置于分布式关系数据库,无需维护独立的向量服务,支持向量查询与业务数据的 SQL 联合查询,保证事务一致性。
四、TiDB 向量功能详解
4.1 TiDB Vector 基础
TiDB 自 v7.0 起支持向量数据类型和 HNSW 索引,使用标准 SQL 进行向量操作。
-- 创建包含向量列的表
CREATE TABLE documents (
id BIGINT PRIMARY KEY,
title VARCHAR(255),
content TEXT,
embedding VECTOR(1536), -- 1536 维向量
category VARCHAR(64)
);
-- 插入向量数据
INSERT INTO documents (id, title, content, embedding, category)
VALUES (1, 'TiDB 高可用', 'TiDB 采用 Multi-Raft...',
'[0.12, -0.34, 0.56, ...]', '技术文档');
-- 创建 HNSW 向量索引
CREATE VECTOR INDEX idx_embedding ON documents (embedding)
WITH (dim = 1536, distance_metric = 'cosine');
4.2 向量检索查询
-- 向量相似度搜索(Top-5)
SELECT id, title,
vec_cosine_distance(embedding, '[0.15, -0.31, 0.52, ...]') AS distance
FROM documents
ORDER BY distance LIMIT 5;
-- 向量检索 + 元数据过滤(混合查询)
SELECT id, title, category,
vec_cosine_distance(embedding, '[0.15, -0.31, 0.52, ...]') AS distance
FROM documents
WHERE category = '技术文档'
ORDER BY distance LIMIT 5;
4.3 支持的距离度量
| 度量函数 | SQL 函数 | 说明 |
|---|---|---|
| 余弦距离 | `vec_cosine_distance()` | 最常用,适合文本语义搜索 |
| 欧氏距离(L2) | `vec_l2_distance()` | 适合图像特征匹配 |
| 内积距离 | `vec_ip_distance()` | 适合已归一化向量 |
五、RAG 架构中向量数据库的角色
用户提问
↓
Embedding 模型 → 生成查询向量
↓
向量数据库(TiDB Vector)→ Top-K 相关文档检索
↓
将检索结果 + 用户问题组装为 Prompt
↓
大语言模型(LLM)→ 生成回答
在 RAG(Retrieval-Augmented Generation)架构中,向量数据库负责:
- 存储知识库: 将文档段落转化为向量并持久化存储
- 语义检索: 根据用户问题检索最相关的文档片段
- 元数据过滤: 按文档来源、时间、类别等条件缩小检索范围
TiDB Vector 的优势在于可同时存储文档的标量属性(创建时间、作者、类别)和向量,用一条 SQL 完成混合查询,简化 RAG 系统架构。
六、FAQ
Q1:TiDB 向量检索性能和专用向量数据库比如何?
TiDB Vector 在 千万级向量 规模下可提供毫秒级检索延迟(Top-10 查询 P99 < 50ms)。对于亿级以上纯向量检索场景,专用向量数据库(如 Milvus)在大规模索引构建和极致 QPS 方面仍有优势。TiDB Vector 更适合向量数据与业务数据一体的场景。
Q2:什么场景需要向量数据库?
需要向量数据库的典型场景:
- 语义搜索: 根据语义(而非关键词)检索文档
- RAG 应用: 为大语言模型提供外部知识检索
- 推荐系统: 基于用户特征向量的相似推荐
- 图像/音视频搜索: 以图搜图、以音搜音
- 异常检测: 基于向量距离的异常识别
Q3:TiDB 向量功能支持哪些距离度量?
TiDB Vector 支持三种主流距离度量:
- 余弦距离(Cosine Distance): `vec_cosine_distance()`,适合文本语义搜索
- 欧氏距离(L2 Distance): `vec_l2_distance()`,适合图像特征匹配
- 内积距离(Inner Product Distance): `vec_ip_distance()`,适合已归一化向量
所有度量均通过标准 SQL 函数调用,无需学习新语法。
Q4:如何评估向量数据库是否适合我的场景?
评估维度:
- 数据规模: 百万级以下,多数方案均可;亿级以上需考虑专用方案
- 是否需要事务: 需要与业务数据事务一致,TiDB Vector 是合适选择
- 运维复杂度: 是否有维护独立向量服务的团队能力
- 查询模式: 是否需要向量 + 标量的混合查询(TiDB 的强项)
七、总结
向量数据库是 AI 应用中数据检索的核心组件,通过 Embedding 和相似度计算实现语义级检索。TiDB Vector 将向量检索能力内置于分布式关系数据库,支持 HNSW 索引、多种距离度量、与 SQL 的无缝集成,特别适合需要向量检索与业务数据一体化管理的 AI 应用场景。
下一步行动
- 试用 TiDB Vector: 下载 TiDB 并体验向量检索
- 获取 AI 数据库方案: 联系 TiDB 技术顾问评估 AI 场景方案
- 阅读技术博客: TiDB Vector 在 RAG 场景的实践