RAG 为什么必须用向量数据库?(面试级知识点总结)
这是一个:
AI 工程面试高频题。
很多人会回答:
"因为向量数据库检索快。"
这只能算:
初级回答。
真正高级的回答,核心要讲清:
-
为什么 RAG 必须语义检索
-
为什么传统数据库做不好
-
向量到底是什么
-
维度为什么影响性能
-
向量数据库底层为什么快
这几个逻辑链。
一、先讲结论(面试开场)
你可以直接这样回答:
RAG 之所以必须使用向量数据库,本质原因是传统数据库只能做"关键词匹配",而 RAG 需要的是"语义检索"。
向量数据库通过 embedding 把自然语言映射到高维数学空间,再通过向量相似度搜索找到语义最接近的内容,因此它能实现"懂意思"的检索,而不仅仅是"看文字"的检索。
这一段已经比很多人强了。
二、RAG 的本质到底是什么
Retrieval-augmented generation
RAG:
Retrieval-Augmented Generation
即:
检索增强生成。
流程:
用户问题
→ 检索知识库
→ 找相关文档
→ 拼接上下文
→ LLM生成答案
核心问题
重点来了:
"怎么找到真正相关的文档?"
这就是:
检索系统
的核心。
三、传统数据库为什么不行
很多人会问:
MySQL 不行吗?
MongoDB 不行吗?
答案:
能做,但效果差。
传统数据库本质
例如:
-
MySQL
-
PostgreSQL
-
MongoDB
核心:
关键词匹配
例如:
你搜索:
"火锅做法"
数据库只会找:
包含:
"火锅做法"
这几个字的文档。
问题来了
如果知识库里写的是:
"麻辣烫锅底制作教程"
虽然:
语义接近
但:
没有"火锅做法"这几个字。
传统数据库:
搜不出来。
为什么?
因为:
传统数据库:
不理解语义。
它只会:
字符串匹配。
四、向量数据库为什么能"懂意思"
核心:
Embedding(向量化)
Word embedding
什么是向量
例如:
一句话:
"我喜欢成都火锅"
会被 embedding model 转成:
一个高维向量:
\[0.12, -0.33, 0.91, ...
]
本质是什么
向量本质:
语义的数学表达。
AI 不认识文字。
AI 只认识:
数字。
所以:
Embedding 模型负责:
把语言翻译成数学空间。
五、为什么向量能表示"语义相近"
这是核心。
在高维空间里:
语义接近的句子:
向量方向接近。
例如:
"火锅做法"
和:
"麻辣烫锅底"
距离会很近。
"火锅做法"
和:
"今天天气"
距离会很远。
所以:
向量数据库本质做的是:
最近邻搜索(Nearest Neighbor Search)
找到:
最相近的语义。
六、RAG 为什么必须"语义检索"
因为:
用户提问:
天然是开放表达。
例如:
用户A:
"怎么做火锅?"
用户B:
"麻辣锅底怎么熬?"
用户C:
"川渝辣汤底教程"
人类知道:
这三个意思差不多。
但:
关键词完全不同。
所以:
RAG 必须:
基于语义理解
而不是:
基于关键词匹配。
七、向量维度到底是什么(重点)
例如:
-
768维
-
1024维
-
1536维
-
3072维
本质:
向量长度。
例如:
1536维:
x\in\mathbb{R}^{1536}
表示:
一个句子:
被编码成:
1536个数字。
八、维度本质是什么(高级)
这一句特别重要。
维度本质:
语义表达空间的分辨率。
低维
只能表达:
- 粗粒度语义
例如:
"吃东西"
高维
能表达:
-
成都火锅
-
重庆火锅
-
麻辣火锅
-
清汤火锅
这种:
细粒度差异。
九、为什么高维度会拖慢 RAG
很多人最大误区:
维度越高越好。
其实:
完全错误。
原因1:存储暴涨
假设:
1000万条向量。
1024维
约:
4GB
1536维
约:
6GB
3072维
约:
12GB+
还没算:
-
索引
-
缓存
-
元数据
原因2:检索计算暴涨
向量检索本质:
距离计算。
例如:
余弦相似度:
Cosine similarity
\cos(\theta)=\frac{A\cdot B}{|A||B|}
维度越高:
点积计算越重。
后果
3072维:
可能比:
1536维:
慢几倍。
原因3:高维灾难(高级)
Curse of dimensionality
维度过高:
会导致:
向量距离趋于平均化。
结果:
-
相似度区分能力下降
-
检索边界模糊
甚至:
召回变差。
十、为什么 1536 维是黄金平衡点
很多 OpenAI embedding:
默认:
1536维。
因为:
精度与性能平衡最好。
优势
1. 语义能力足够强
2. 存储成本可控
3. 检索速度快
4. 向量数据库支持成熟
所以:
大多数生产级 RAG:
默认推荐 1536维。
十一、向量数据库为什么能做到毫秒级检索
因为:
不会暴力遍历。
而是:
ANN(近似最近邻搜索)
最核心算法
Hierarchical Navigable Small World
HNSW
本质
多层图结构。
类似:
-
高速公路
-
地铁快线
作用
不用遍历全部向量。
而是:
快速跳跃定位。
所以:
千万级向量:
也能:
毫秒级检索。
十二、为什么很多 RAG "又慢又烂"
真正原因通常不是:
LLM。
而是:
1. Chunk切分错误
最常见。
2. Embedding模型差
3. 维度不匹配
4. 索引没建好
5. 没有 rerank
6. 用传统数据库硬做语义检索
十三、生产级 RAG 一般怎么做
真正企业方案:
检索层
Hybrid Search:
- BM25
- Vector Search
排序层
Rerank Model
生成层
LLM
最终形成:
多阶段检索架构。
十四、数据库怎么选(实战)
1. 小项目
Chroma
优点:
-
部署快
-
轻量
2. 企业级
Milvus
优点:
-
分布式
-
高并发
-
HNSW支持强
3. AI Infra 常用
FAISS
Meta 出品。
性能极强。
4. 云原生
Qdrant
适合:
-
混合检索
-
Filter
-
高扩展性
十五、真正高级的面试回答(建议背)
RAG 必须使用向量数据库,本质原因是 RAG 的核心是"语义检索",而传统数据库只能做关键词匹配。
Embedding 模型会把自然语言映射到高维语义空间,向量数据库再通过 ANN 索引与相似度搜索,实现高效的语义召回。
向量维度本质是语义表达分辨率,高维虽然能增强语义表达,但会带来存储、检索、高维灾难等问题,因此生产环境通常需要在精度与吞吐之间做平衡,1536维通常是通用场景下的黄金平衡点。
这个回答已经是: