向量数据库

上一节讲的词向量(Embedding)技术就像一个翻译官,可以把你公司的几万字规章制度、产品文档,全部切成小块,再转换成一长串一长串的数字数组(比如包含 1536 个小数的向量)。

那么问题来了:对于一家中大型企业来说,这些切分出来的小文本块动辄几十万、甚至上百万个,随之产生的向量数组更是海量的。这么一大堆数字串,我们到底该存到哪儿去呢?

这就要用到我们这一节的主角、也是 RAG 的核心组件——向量数据库(Vector Database)了。

提示: 这一节介绍的内容可能有点 “专业”,非开发的小伙伴简单过一遍就可以了。

什么是向量数据库?

所谓的 “向量数据库”,简单来说就是:一种专门用来保存、管理、检索 “向量数据” 的新型数据库。注意,它是一种全新的数据库。

对于向量数据库来说,它的主要工作其实只有两件事:

  • 保存数据:将文本内容、以及它对应的向量数据,都保存起来。注意,这里不仅会保存原文本内容和它对应的向量,而且还会保存它们之间一一对应的关系。
  • 查找数据:当用户提问时,先快速找出与 “用户的问题” 距离最近的那条向量数据,然后再把这条向量对应的原始文本内容交出来。

什么是向量数据库?向量数据库保存文本与查找数据

需要清楚的是:负责 “造” 向量的,是上一节介绍的 “词向量模型(Embedding)”。而负责 “存” 向量、并飞快地把它 “找” 出来的,才是这一节的主角 “向量数据库”。一个管把文字翻译成数字,一个管把海量数字保管好、查得快——分工明确,各司其职。

为什么不能使用传统数据库?

要想搞懂为什么必须使用向量数据库,我们得先看看传统数据库(比如 MySQL、PostgreSQL)在面对大模型时会出现什么问题。

1. 匹配方式不同(精确 vs 模糊)

传统数据库使用的是 “精确匹配” 方式。当我们执行一条查询指令时,比如:

SELECT * FROM articles WHERE title = 'Python教程';

此时数据库就只会去查找和 “Python 教程” 一模一样的字符串。哪怕错了一个字母、或者少了一个空格,它都会认为不匹配。

而向量数据库使用的是 “模糊匹配” 方式。它查找的并不是字符串,而是对比两组长达上千个小数的数组,看看谁在数学空间里长得最像。

简单来说,我们可以这样去理解:

  • 传统数据库:只会 “死抠字眼”,就像 “直男” 一样直来直往。
  • 向量数据库:懂得 “听音辨意”,就像 “渣男” 一样情商拉满。

传统数据库 vs 向量数据库对比图解(匹配方式不同)

2. 计算速度的差异

我们想象一下,把文本都转换成向量后,一句话可能就被转换成了包含 1000 多个小数的超大数组。当你输入一个问题时,系统就要在数据库的几百万篇文档里,去挨个计算你的问题数组和每篇文档数组之间的 “空间距离”。

  • 对于传统数据库来说:它并不擅长这种海量、高维的小数几何距离计算,搞不好当场就卡死崩溃,查一次可能得等上好几个小时。
  • 对于向量数据库来说:它天生就是为这种海量浮点数、空间距离计算而生的。靠着专门的底层算法,它能在几毫秒内,从海量数组中瞬间找出距离最近、意思最相关的结果。

传统数据库 vs 向量数据库对比图解(计算速度差异)

小伙伴们可能会好奇:“几百万条向量,它怎么做到几毫秒就找出最近的那几条?” 秘密在于——向量数据库其实并不会傻乎乎地拿你的问题去和每一条向量都比对一遍(那样照样会慢)。

它会提前给这些向量建好一种特殊的 “索引”,检索时只在最有希望的一小撮里快速比对。这种技术叫 “近似最近邻(ANN)”。它用一丁点几乎可以忽略的精度损失,换来了成千上万倍的速度提升。

向量数据库在 RAG 中的工作流程

了解了基本概念,我们再把视角拉回真实的业务开发中。在 RAG(外挂知识库)的工作流中,向量数据库是这样干活的:

1. 入库阶段

首先,开发工程师会用词向量技术(也就是词向量模型),把切好的文档变成一个个向量。

然后,再把 “原始文字” 和它 “对应的向量” 打包,一起存进向量数据库里。这就好比给每一段文字,都贴上了一个专属的定位标签。

向量数据库在 RAG 架构中的入库阶段:切片、转成向量并存入库图解

2. 检索阶段

用户提出问题后,词向量模型会先把问题也变成一个 “查询向量”。然后把这个查询向量丢给向量数据库,并下达指令:“请帮我找出距离最近的前 3 个文本块(Top-K)”。

向量数据库瞬间完成数学计算,直接把匹配度最高的那 3 段 “原始文本” 吐回给系统。系统再把这 3 段文本一起喂给大模型,让它总结、作答。

向量数据库在 RAG 架构中的检索阶段:匹配 Top-K(Top 3)最近文本块,并交由大模型作答

提示: “Top-K” 中的 “K” 就是 “取回多少段” 的意思(比如上面例子里 K=3)。这个值并非越大越好:取太少,可能漏掉关键内容;取太多,又会塞进一堆不相关的 “噪音”,既干扰大模型判断,又会因为上下文变长而更费 Token。

目前主流的向量数据库有哪些?

随着大模型的爆火,向量数据库也迎来了井喷式的发展。如果小伙伴们准备在公司落地 AI 项目,可以考虑使用以下几种主流产品。

1. Milvus

开源界的标杆,支持海量十亿级向量的存储和检索。它属于重量级选手,适合数据量极大、并发要求极高的企业级生产环境,也是很多大厂的首选。

2. Pinecone

这是海外非常火的一款云端托管向量数据库。它最大的特点就是完全免运维——开发者不用自己买服务器去部署,直接调用 API 就能用,特别适合初创团队和个人开发者快速验证想法。

3. Chroma 和 Qdrant

这两款属于轻量级的开源向量数据库。如果你只是想在自己的电脑上跑一个简单的 RAG 原型、或者数据量不大,它们部署起来极其简单,有的甚至能直接当成一个 Python 库来用。

4. pgvector

如果你公司本来就一直在用 PostgreSQL,又不想再引入新的独立组件、增加运维负担,那不妨装一个 pgvector 插件。它能让传统的 PostgreSQL 直接拥有处理向量数据的能力,主打一个省事。

对想从事 AI 应用开发的小伙伴来说,能熟练掌握其中 1~2 种向量数据库的用法,是非常重要的。

主流向量数据库盘点:对比企业级 Milvus、免运维 Pinecone 与轻量级 Chroma 等 RAG 核心组件

上一篇:

下一篇:

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号