什么是向量数据库
向量数据库是一种专门存储、索引和查询“向量”数据的数据库。它解决的核心问题不是精确匹配,而是在海量数据中快速找到语义、视觉、声音或行为特征最相似的对象。

一句话说,向量数据库就是为“找相似”而设计的数据库。传统数据库擅长回答“用户名等于张三的记录在哪里”,向量数据库擅长回答“哪几张图片和这张图最像”“哪些文档最能回答这个问题”“哪个用户的兴趣最接近当前用户”。
向量数据库常见于智能搜索、推荐系统、以图搜图、语音检索、异常检测、AI 知识库和 RAG 应用。它让计算机可以用数字距离来近似判断人类直觉里的“相似”。
更工程化地说,向量数据库通常包含三件事:
- 向量存储:保存 embedding 向量和对应的原始数据 ID。
- 向量索引:用特殊结构加速相似度检索。
- 元数据过滤:按时间、权限、分类、来源等条件缩小搜索范围。
结论很直接:向量数据库不是普通数据库的替代品,而是非结构化数据相似性检索的专用组件。
向量到底是什么
向量是一串有顺序的数字,它把图片、文本、音频、视频、位置或用户行为编码成高维空间里的一个点。

如果我们把一个真实世界的物品放进计算机里,它最常见的存在形式不是一张图片,也不是一段音频,而是一串数字。这串数字就是向量。
例如一张猫咪照片,经过嵌入模型处理后,可能会变成类似这样的数组:
[0.12, 0.88, -0.34, 0.05, ...]
这串数字不是随机生成的。它用数学方式把猫的视觉特征编码进去,例如毛色、耳朵形状、眼睛位置、脸部轮廓和画面风格。同样地,一句话、一段音乐、一部电影、一个用户画像、一次购物偏好,也都能转换成向量。
向量的维度可以很高。AI 应用里常见的 embedding 向量可能有几百维到几千维。每一维通常不对应一个人类能直接命名的标签,而是模型学习到的隐含特征。
为什么说向量是高维空间里的点
向量可以理解为高维空间里的坐标。两个对象越相似,它们在这个空间里的位置通常越接近。

在二维地图里,一个位置可以用经度和纬度表示。在三维空间里,一个物体可以用 x、y、z 三个坐标表示。向量也是坐标,只是维度更高。
例如:
- 一句话的向量可能编码语义、情感、主题和写作风格。
- 一段音乐的向量可能编码节奏、音色、情绪和曲风。
- 一个用户画像的向量可能编码年龄、兴趣、消费倾向和行为习惯。
- 一张商品图的向量可能编码形状、颜色、材质和视觉风格。
向量数据库利用这些坐标来比较距离。距离越近,代表两个对象在模型理解的特征空间里越接近。
这就是“语义搜索”的基础:系统不是只看关键词是否相同,而是看两段内容在向量空间里是否靠近。
为什么传统数据库不够用
传统数据库可以存数字,但它不擅长高维向量的相似性查询。向量数据库的价值在于把“精确查询”变成“相似查询”。

传统数据库擅长回答这些问题:
name = "张三"的记录在哪里?price > 100的商品有哪些?created_at在某个时间范围内的订单有哪些?- 某个用户 ID 对应的资料是什么?
这些都是精确匹配或范围比较。数据库只需要判断字段是否相等、大小是否满足条件,或者索引键是否命中。
但如果你问“图库里哪张图和这张猫咪照片最像”,传统数据库就会遇到困难。它可以存下 [0.12, 0.88, -0.34, ...] 这样的向量,却不会天然理解“接近”的含义。它只能逐项比较数字是否相等,而现实中几乎没有两张不同图片会生成完全一样的向量。
向量数据库把问题改写成:给定一个查询向量,在已有向量集合中找到距离最近的 Top K 个结果。
| 查询类型 | 传统数据库 | 向量数据库 |
|---|---|---|
| 核心问题 | 这个字段是否等于某个值 | 哪些对象和查询对象最相似 |
| 典型查询 | 用户名、价格、时间、状态 | 图片相似度、语义相似度、兴趣相似度 |
| 数据形态 | 结构化字段 | 高维向量加元数据 |
| 常用索引 | B-tree、Hash、倒排索引 | HNSW、IVF、PQ、Flat |
| 返回结果 | 精确命中或范围结果 | 按相似度排序的 Top K 结果 |
一句话总结:传统数据库回答“是不是”,向量数据库回答“像不像”。
向量数据库的底层原理是什么
向量数据库的核心机制是近似最近邻搜索,英文是 Approximate Nearest Neighbor,简称 ANN。它通过牺牲少量精度,换取大规模向量检索的速度。

如果数据量很小,系统可以逐个计算查询向量和每个候选向量之间的距离,这叫暴力搜索或 Flat Search。它的结果准确,但成本会随着数据量和维度增长而快速上升。
在百万级、千万级甚至更大规模的数据里,逐个比较通常不现实。向量数据库会建立特殊索引,让系统优先搜索最可能相似的区域,而不是扫描全部数据。
常见索引方法包括:
- HNSW:图索引方法,会构建分层的可导航小世界网络。查询时先在高层快速定位方向,再逐步进入底层寻找近邻。
- IVF:倒排文件索引方法,会先把向量聚类成多个簇。查询时先找到最相关的几个簇,再在这些簇内搜索。
- PQ:乘积量化方法,会把向量压缩成更小的编码,用更低存储成本换取近似距离计算。
- Flat:不做近似,直接全量计算。适合小数据集、离线验证或需要最高召回率的场景。
ANN 里的“近似”很关键。很多业务不需要数学上绝对最近的那个点,只需要足够相关、足够快、足够稳定的前几个结果。
因此,向量数据库的工程目标不是追求单点理论最优,而是在召回率、延迟、成本和可维护性之间取得平衡。
向量数据库如何完成一次以图搜图
以图搜图的典型流程包括四步:向量化、存储建索引、查询向量化、距离计算并返回结果。

假设我们要搭建一个“上传猫咪照片,找到相似图片”的功能,流程可以拆成下面四步:
- 向量化:用训练好的图像 embedding 模型,把图库中的每张图片转换成向量。
- 存储:把图片向量、图片 ID、标题、标签、上传时间等信息存入向量数据库。
- 查询:用户上传一张新图片,系统把这张图片也转换成查询向量。
- 返回结果:向量数据库根据索引找到距离最近的几个向量,再返回对应图片。
这里的“距离”不是地理距离,而是数学度量。常见相似度指标包括:
- 余弦相似度:关注两个向量方向是否接近,常用于文本和语义检索。
- 欧氏距离:关注两个点在空间中的直线距离,常用于数值特征空间。
- 点积:常用于推荐和排序场景,适合某些归一化或训练目标明确的 embedding。
业务上看到的是“相似图片”,工程上发生的是“查询向量和候选向量之间的距离排序”。
向量数据库为什么是 RAG 的关键组件
RAG 需要先从外部知识库中找相关资料,再把资料交给大模型生成答案。向量数据库通常承担“语义检索”这一步。

大模型虽然能生成语言,但训练完成后,参数里的知识基本固定,而且上下文窗口有限,无法一次塞进企业所有文档、产品手册、合同、工单和内部制度。
RAG 的做法是把知识放在模型外部:
- 先把企业文档切成较短片段。
- 用 embedding 模型把每个片段转换成向量。
- 把向量、原文、来源、权限和更新时间存入向量数据库。
- 用户提问时,把问题也转换成向量。
- 从向量数据库中找出最相关的文档片段。
- 把片段和问题一起交给大模型生成答案。
例如用户问“新员工报销交通费需要哪些材料”,系统不需要让大模型凭记忆猜。它可以先检索公司最新报销制度,再让模型基于检索片段回答。
向量数据库在 RAG 中的价值是让“自然语言问题”和“文档片段”可以按语义匹配。没有这一步,系统只能依赖关键词检索,容易漏掉同义表达、近义问题和上下文相关内容。
推荐系统为什么也需要向量数据库
推荐系统可以把内容和用户都表示成向量,再根据向量相似度找到更符合用户偏好的候选内容。

传统标签推荐依赖人工标签。例如一个视频被标成“搞笑”“宠物”,系统就把它推荐给喜欢“搞笑”和“宠物”的用户。
这种方法简单,但有明显限制:
- 标签粒度粗,无法表达节奏、情绪、画面风格和叙事方式。
- 标签质量依赖人工或规则,容易不完整。
- 两个内容标签不同,但实际口味接近时,系统可能匹配不到。
向量推荐更灵活。系统可以把用户看过的视频、停留时长、点赞行为、收藏内容和跳过记录编码成兴趣向量,再从内容向量库中寻找相似候选。
例如一个用户喜欢“节奏轻松、画面明亮、配乐温和、宠物出镜”的视频,即使这些视频没有完全相同的标签,向量数据库也可能找到相似口味的内容。
因此,向量数据库不是替代推荐排序模型,而是帮助推荐系统更快召回高相关候选集。
向量数据库还能做异常检测吗
可以。异常检测可以把正常样本表示成向量簇,如果新样本距离正常簇很远,就可能是异常点。

在质检场景中,系统可以先收集大量正常零件照片,把它们转换成向量。正常样本通常会在向量空间里形成相对集中的区域。
当新零件照片进入系统时,如果它的向量明显偏离正常区域,就可能代表划痕、缺角、污渍、变形或拍摄异常。系统可以把它标记为待复检样本。
这种方法也能用于:
- 风控:发现异常交易行为。
- 运维:发现日志模式偏离正常状态。
- 内容安全:识别和已知违规内容相似的图片或文本。
- 工业检测:发现质量缺陷或生产偏差。
异常检测的关键不是“向量越远一定有问题”,而是把距离作为风险信号,再结合规则、阈值、人工复检或监督模型做最终判断。
向量数据库适合哪些场景
向量数据库适合需要处理非结构化数据,并且查询目标是“相似、相关、接近”的场景。
| 场景 | 输入数据 | 查询问题 | 向量数据库的作用 |
|---|---|---|---|
| 语义搜索 | 文档、网页、知识库 | 哪些内容最能回答这个问题 | 按语义召回相关段落 |
| 以图搜图 | 图片、商品图、设计图 | 哪些图片和这张最像 | 按视觉特征找近邻 |
| 推荐系统 | 视频、商品、用户行为 | 下一个推荐什么 | 快速召回相似口味候选 |
| RAG 知识库 | 企业文档、手册、FAQ | 哪些资料和问题相关 | 为大模型提供外部上下文 |
| 异常检测 | 图片、日志、交易行为 | 哪些样本偏离正常模式 | 发现离群点和风险信号 |
| 多模态检索 | 文本、图片、音频、视频 | 用一种模态搜索另一种模态 | 统一映射到向量空间检索 |
判断是否需要向量数据库,可以问一个简单问题:你的查询是不是在找“相似内容”,而不是找“完全相等的字段”。如果答案是是,向量数据库通常值得考虑。
向量数据库有哪些限制和常见误区
向量数据库能提升相似性检索能力,但它不是万能知识库,也不会自动保证答案正确。

常见限制包括:
- Embedding 质量决定检索上限。如果嵌入模型不能正确表达领域语义,向量数据库只能更快地返回错误近邻。
- 近似检索存在召回损失。ANN 用速度换精度,参数设置不当会漏掉真正相关的结果。
- 高维数据有成本。向量维度越高、数据量越大,存储、内存、索引构建和更新成本越高。
- 元数据过滤很重要。企业场景不能只看相似度,还要考虑权限、版本、时间、地域和业务规则。
- 相似不等于正确。RAG 中检索到相似文档,不代表文档一定权威、最新或足以回答问题。
常见误区是把向量数据库当成“大模型记忆”。更准确的说法是:向量数据库保存的是可检索的外部信息,大模型负责理解、总结和生成,两者需要通过检索、排序、过滤和提示词组织连接起来。
如何选择向量数据库方案
选择向量数据库时,不要只看名称,要看数据规模、延迟要求、过滤能力、部署方式和团队维护成本。
| 选择维度 | 需要关注的问题 | 为什么重要 |
|---|---|---|
| 数据规模 | 是十万级、百万级,还是千万级以上 | 决定索引类型、内存和分片策略 |
| 更新频率 | 向量是批量写入还是实时更新 | 影响索引重建、写入延迟和一致性 |
| 查询延迟 | 用户能接受几十毫秒、几百毫秒还是秒级 | 影响 ANN 参数和架构设计 |
| 过滤条件 | 是否需要按权限、时间、租户、标签过滤 | 企业 RAG 和多租户系统通常必须过滤 |
| 部署方式 | 自托管、云服务、数据库扩展 | 影响成本、运维、安全和合规 |
| 召回质量 | Top K 结果是否足够相关 | 决定 embedding、切分、重排和评估方案 |
实践中,向量数据库只是检索系统的一层。高质量方案通常还会结合关键词检索、重排序模型、权限控制、缓存、日志评估和人工反馈。
常见问题
向量数据库和传统数据库有什么区别?
核心区别是查询目标不同。传统数据库主要做精确匹配和范围查询,向量数据库主要做相似性查询。传统数据库回答“字段是否匹配”,向量数据库回答“对象是否相似”。
向量数据库一定需要大模型吗?
不一定。向量数据库需要的是 embedding 向量,而 embedding 可以来自图像模型、音频模型、推荐模型、风控模型或大语言模型。大模型应用只是向量数据库最常见的使用场景之一。
RAG 一定要用向量数据库吗?
不一定,但很多 RAG 系统会用向量数据库做语义召回。小规模数据可以用普通搜索、全文检索或内存索引。数据变大、语义匹配需求变强、权限过滤更复杂时,向量数据库更有价值。
向量数据库返回的结果为什么有时不准?
常见原因包括 embedding 模型不适合当前领域、文档切分太粗或太碎、索引参数导致召回不足、元数据过滤过强、查询表达含糊,或者缺少重排序步骤。向量数据库只能根据输入向量搜索,不能自动修复上游语义表示问题。
向量数据库和全文搜索可以一起用吗?
可以,而且很常见。全文搜索擅长关键词、专有名词、编号和精确词匹配;向量搜索擅长语义相似、同义表达和模糊意图。混合检索通常比单独使用一种方式更稳定。
总结
向量数据库是一种专门为相似性查询设计的数据库。它把文本、图片、音频、视频、用户行为等非结构化数据转换成向量,并通过 ANN 索引快速找到距离最近的结果。
它解决的不是“怎么存数字”,而是“怎么在海量高维数字中快速找到相似对象”。这正是语义搜索、以图搜图、推荐系统、异常检测和 RAG 知识库背后的共同需求。
向量数据库补上的,是计算机理解世界时最缺的一块能力:不只按关键词和字段匹配,而是按语义、视觉、兴趣和模式去判断“像不像”。

