自学教程

向量数据库(Vector Database)

向量数据库通俗解读:大模型RAG的语义搜索引擎

普通MySQL、PostgreSQL这类传统数据库擅长精确关键词匹配,而向量数据库专门用来做语义相似度检索,是构建RAG知识库、AI Agent记忆系统的核心基础设施。它不看字面是否一样,而是判断两段内容“意思像不像”。

生活化类比
传统数据库:去图书馆,输入书的编号,精确找到某一本指定书籍。
向量数据库:告诉图书馆,我想要和《三体》风格接近的科幻小说,系统根据内容含义,找出一批题材、调性相似的书。

一、核心概念:向量与Embedding嵌入

向量Vector:一串浮点数数字,例如[0.13,-0.45,0.77……],代表文本、图片、音频的语义特征。
Embedding嵌入:借助嵌入模型,把文字、图片、音频转换成向量数字的过程。

核心规律:语义含义越接近,在高维向量空间里面,两个向量距离就越近。
比如“iPhone”和“苹果手机”字面文字完全不一样,但语义一致,经过同一个嵌入模型转换之后,向量距离会非常靠近。

注意:不同的嵌入模型生成的向量,处于完全不同的坐标空间,不能互相拿来计算相似度。入库和查询,必须使用完全一样的嵌入模型,否则检索结果完全不可信。

二、相似度怎么算

拿到两组向量,需要计算二者之间相似程度,工业界三种主流方式:

  1. 余弦相似度Cosine Similarity(文本首选):只看向量方向,忽略长度。取值-1~1,越靠近1代表越相似,RAG文本检索绝大多数场景使用这个。
  2. 欧氏距离Euclidean Distance:计算空间直线距离,数值越小越相似,多用于图像。
  3. 点积Dot Product:同时兼顾方向与向量长度,向量做归一化处理后等价余弦相似度,多用于推荐系统。

三、索引:解决海量数据查询太慢

如果库里有几十万、上百万条向量,每一次查询把全部向量挨个算一遍距离(暴力检索Flat),速度会慢到无法使用。
索引就是一套加速算法,用轻微牺牲一点点召回精度,换取查询速度大幅提升,这一类统称为ANN近似最近邻搜索。

  • Flat暴力检索:全部向量逐一计算,结果100%准确;数据量大速度极差,适合十万以内小数据集。
  • IVF倒排索引:先聚类分桶,查询只在少数几个桶内部搜索。适合中等规模数据。
  • HNSW分层导航小世界图:现在工业界最主流。构建多层图结构,顶层大步跳转快速定位大致区域,逐层下探做精确查找,兼顾速度与召回效果,绝大多数生产环境优先选择HNSW索引。

四、向量数据库能干什么

  1. RAG检索增强生成(最主流):私有文档、知识库切成片段转为向量存储;用户提问把问题转向量,检索语义最相关片段,把片段丢给大模型做回答,缓解幻觉,弥补大模型训练截止之后知识不足的问题。
  2. 多模态检索:以图搜图、音频检索;
  3. 推荐系统:找到偏好相似的用户、商品;
  4. 内容去重、版权检测、异常日志检测;
  5. AI Agent长期记忆存储:保存Agent历史对话、经验记忆,需要的时候语义召回历史记录。

重要认知:向量数据库不会替代MySQL。二者互补使用:传统数据库存放订单、用户账号这类结构化业务数据;向量库专门负责语义、特征检索。

五、主流向量数据库选型参考

产品部署方式特点适合场景
Chroma开源本地嵌入式API极简,上手简单本地原型、Demo开发,学习调试RAG
pgvectorPostgreSQL插件复用现有PostgreSQL,不用新增一套运维业务已经在用PostgreSQL,千万以内规模
Qdrant开源自托管 /云服务Rust实现,性能强,支持元数据过滤生产环境,中等大数据量
Milvus开源分布式支持大规模集群亿级向量,企业大型系统
PineconeSaaS云托管完全托管,不用运维不想维护服务器,快速上线

新手建议:学习原型优先Chroma;项目已经使用PostgreSQL优先pgvector;生产高性能优先Qdrant。

六、RAG完整简易流程

  1. 原始文档做分块Chunk切分,不能直接丢整篇超长文档;
  2. 调用Embedding嵌入模型,每个文档片段生成向量;
  3. 向量连同原文、元数据存入向量数据库;
  4. 用户提问,把用户问题同样用同一个嵌入模型转为向量;
  5. 在向量库做相似度检索,取出top‑k个最相关文档片段;
  6. 将检索出来的片段+用户问题一起组装提示词送入LLM;
  7. 大模型基于参考资料输出答案返回用户。

七、开发中高频踩坑提醒

  1. 嵌入模型必须统一:插入文档、用户查询,必须用一模一样的嵌入模型,更换模型必须全部重新向量化重建库,不能混用不同模型生成的向量;
  2. 文档分块Chunk很关键:块太大语义混杂,块太小信息残缺;一般中文512‑1024token,块之间设置少量重叠;
  3. 不要无脑把top‑k设置很大,RAG一般取3‑8条;
  4. 向量库只管检索,不负责大模型生成;检索出来的内容质量直接决定最终回答质量;
  5. 元数据metadata善用,做过滤条件,缩小检索范围,提升准确性。

写在最后

向量数据库的本质,是高维向量的专用存储与相似度检索引擎。它不是大模型,是AI的“外部书架”。
在RAG、Agent长期记忆、多模态检索场景是必不可少组件。但向量数据库本身不能解决全部幻觉,检索到错误内容,依旧会传给大模型产生错误回答。

选型上,优先看业务规模、现有技术栈,不要盲目追求分布式、超大型向量库;很多中小型项目pgvector、Chroma就足够满足需求。

标签:

0 条笔记