来源:easy-learn-ai / commit 9527094
新增模块:向量数据库(Vector Database)
一、从图书馆的困境说起
想象你走进一座没有分类系统的图书馆。所有书都堆在一起,没有目录卡,没有书架编号,没有索引。你要找一本关于"离职时年假怎么算"的书,只能一本一本地翻——也许翻完十万本,才发现你要的那本在最后一排的最底层。
这就是传统数据库在面对"意思相近"时的困境。
传统数据库像一位严谨的档案管理员。你问:"文件编号 POL-HR-2047 在哪里?"它能秒答。但你问:"员工离职后年假还能折现吗?"它愣住了——因为文档里写的是"未休假期折算规则",字面完全不同,但说的其实是一回事。
人类的语言是狡猾的。同一个意思,有一百种说法。传统数据库只认字面,不认意思。这在大模型时代成了一个致命的短板:当用户向 AI 提问时,AI 需要先从海量的资料里找到"相关"的内容,而不是"字面匹配"的内容。
向量数据库,就是为解决这个问题而生的。
二、向量:给每段文字发一串"数字身份证"
向量数据库的核心思想,可以概括成一句话:把意思变成数字,把"像不像"变成"近不近"。
具体怎么做呢?
第一步:切段
一本人事手册可能有几百页。如果直接把整本书变成向量,那就相当于把图书馆里一整座书架当成一个"条目"——太粗了。用户问的是"年假折算",你返回一本完整的手册,AI 还得自己在几百页里翻。
所以第一步是把文档切成小段。就像把一本书拆成一张张便签纸,每张便签上只写一两句话。
离职时,未休年假按员工最近十二个月平均工资折算。
试用期员工也享有已工作天数对应的年假权益。
跨区调动后,假期规则按新工作地政策执行。
每一张便签,就是一个独立的"检索单位"。
第二步:向量化
这是魔法发生的地方。
用一个大模型(通常是 Embedding 模型,比如 BGE、OpenAI 的 text-embedding-3 等),把每张便签上的文字变成一串数字——通常几百到几千个。这串数字就是这段文字的"向量",相当于这段文字的数字指纹。
[0.42, -0.11, 0.78, 0.23, -0.36, 0.64, 0.08, -0.51, ...]
这些数字没有人类可读的含义。第 3 位是 0.78 不代表什么具体的词。但关键在于:意思相近的文字,它们的向量在数学空间里的位置也相近。
就像图书馆里,所有讲"年假"的书被放在相邻的架子上;所有讲"报销"的书在另一个区域。向量化就是这个"自动归类"的过程——但它不是按主题分类,而是按"意思的相似度"在多维空间里排列。
三、索引:提前修路,而不是临时铺轨
现在假设你的资料库里有一亿个向量。用户问了一个问题,你也把它变成了向量。接下来要做的事很直接:在所有一亿个向量中,找到离它最近的几个。
听起来简单,但一亿个向量,如果逐个比对,计算量会大得惊人。这就像在地图上找一个点最近的餐厅,如果你把全城每一家餐厅都量一遍距离,天都亮了。
所以向量数据库会做一件关键的事:提前建索引。
索引的本质是预先修路。它会在向量空间里,把相近的向量用"路"连接起来。查询时,不是从全城第一家餐厅开始量,而是先站在一个"入口点",然后沿着路往更近的方向走——看到更近的邻居就继续,没更近的就停下来,再看看周围几个候选。
这个过程叫做近似最近邻搜索(ANN)。它不需要找到绝对最近的,只需要找到"足够近"的——用一点点精度,换大量速度。对于线上服务来说,这种 trade-off 是完全值得的。
常见的索引算法有 HNSW(分层可导航小世界图)、IVF(倒排文件索引)等。不同的数据库选择不同的修路方式,但核心思想一致:提前整理,快速检索。
四、查询:把问题也变成向量
当用户问"员工离职后,年假还能折现吗?"时,系统会先做两件事:
- 把问题变成向量:用和入库时同样的 Embedding 模型,把这句话也变成一串数字。
- 在向量空间里找邻居:数据库找到离这个"问题向量"最近的几个"文档向量",然后把对应的原文取出来。
结果可能是:
- 离职结算规则(相似度 0.94)← 最像
- 未休年假折算(相似度 0.89)← 也很像
- 调休申请流程(相似度 0.52)← 不太相关,跳过
注意这里用户说的是"折现",但数据库找回的是"折算"。在传统关键词搜索里,这两个字不同就可能错过。但向量搜索看的是意思,不是字面——这就是它的威力。
五、但向量不是万能的
到这里,你可能会觉得向量数据库就是银弹了。但真实世界更复杂。向量搜索擅长的是"意思像不像",但在企业资料里,有很多信息不是"意思"能解决的。
日期、金额、编号:差一个字符,意思全变
- 用户问"2026-03-01 生效的是哪版?"向量搜索可能返回"2025 版休假制度"——因为意思很接近,但年份差了整整一年。
- 用户问"报销上限是 800 还是 1000?"向量搜索可能找到"差旅补贴政策",但里面的具体数字可能是错的。
- 用户问"POL-HR-2047 是什么?"向量搜索可能返回"HR 政策合集"——太宽泛了,用户要的是精确的编号对应。
权限、地区、版本:硬条件不能靠"相似"
一个员工搜"离职规则",向量数据库可能返回三条都很像的结果:
- 中国区离职结算规则(2026 版,权限:all)
- 中国区离职结算规则(2024 旧版,权限:all)
- HR 内部争议处理清单(2026 版,权限:hr only)
第一条是对的。第二条版本太旧。第三条用户没权限看。
如果只靠向量相似度,这三条得分都很高。但企业资料检索不只是"找像的",还要"找对的"。
六、混合检索:让"意思"和"规则"联手
所以成熟的向量数据库系统,通常不会只做向量搜索。它会同时做两件事:
1. 向量搜索:负责"语义召回"
找到意思相关的候选集。用户说"年假折现",能召回"未休年假折算"——这是关键词搜索做不到的。
2. 关键词/过滤条件:负责"精确筛选"
在候选集上,用硬条件过滤:
- 只看中国区(地区过滤)
- 只看 2026 版(版本过滤)
- 用户不是 manager,就不返回 manager-only 的内容(权限过滤)
- 同时匹配关键词"POL-HR-2047"(精确匹配)
这种组合叫做混合检索(Hybrid Search)。向量负责"召回"(找到可能相关的),过滤条件负责"筛选"(去掉不该出现的)。两者配合,才能既聪明又可靠。
在 easy-learn-ai 的模块里,有一个很直观的交互设计:用户可以拖动一个滑块,调整"向量权重"和"关键词权重"的比例。往左更看关键词,往右更看语义。这种设计让用户能直观感受两种搜索方式如何影响最终结果。
七、技术选型:没有最好的,只有最合适的
当你真的要在项目里引入向量数据库时,会发现市面上有很多选择。它们不是"谁更好",而是"谁更适合你的场景"。
| 方案 | 适合谁 | 特点 |
|---|---|---|
| pgvector | 已经在用 Postgres 的小团队 | 插件形式,零额外运维,适合原型和中小规模 |
| Qdrant | 想要专门向量服务,但运维别太重 | 开箱即用,向量+关键词能力都有,Rust 写的性能不错 |
| Milvus | 数据量很大,有专门团队管基础设施 | 索引选择多,分布式能力强,企业级功能全 |
| Pinecone | 想少管机器,快速上线 | 全托管,API 简洁,但贵 |
| Elasticsearch | 原来就有搜索系统,要加语义能力 | 关键词搜索本来就强,加上向量是锦上添花 |
选型的三个关键问题:
- 数据量多大? 百万级 pgvector 就够了,十亿级得考虑 Milvus。
- 团队想不想管服务? 不想管就 Pinecone,想控制就 Qdrant/Milvus。
- 是否需要关键词一起查? 如果很多查询是编号、日期、精确字段,选自带混合检索能力的。
八、从"向量数据库"到 RAG:一块更大的拼图
向量数据库本身不是终点。它只是 RAG(Retrieval-Augmented Generation,检索增强生成)流程中的一个环节。
完整的 RAG 流程是:
- 用户提问 → "年假怎么折算?"
- 向量化问题 → 变成一串数字
- 向量检索 → 从数据库找回最相关的几段资料
- 过滤筛选 → 按权限、版本、地区去掉不该出现的
- 拼接上下文 → 把找回的原文 + 用户问题一起喂给大模型
- 大模型生成回答 → 基于真实资料,给出准确回答
向量数据库负责的是第 3 步(以及第 4 步的一部分)。它像一个精准的"资料打捞员":从海底(海量文档)里,快速捞出和用户问题最相关的几块碎片。
easy-learn-ai 这个项目的设计很巧妙——它不单独讲向量数据库,而是把它放在一条学习路径里:Embedding → 向量数据库 → RAG。三者串起来,才能理解为什么需要向量数据库,以及它在 AI 应用里扮演什么角色。
九、写在最后:让机器学会"闻香识人"
向量数据库的本质,是给机器一种"闻香识人"的能力。
人类不需要逐字比对就能判断两句话是不是同一个意思。我们说"离职时年假怎么办"和"没休的假能换成钱吗", instantly 知道说的是一回事。这种能力来自于对"语义"的理解,而不是对"字符"的匹配。
向量数据库做的,就是把这个"语义理解"的过程自动化、规模化。它让机器也能"闻到相似的味道"——在亿级别的资料中,找到意思最近的那几段。
但它不是万能的。它不懂日期不能猜,不懂金额不能差,不懂权限不能越界。这些"硬规则"需要人类来设定,需要关键词和过滤条件来守护。
最好的系统,永远是聪明的语义 + 严谨的规则的结合。向量数据库让 AI 有了"直觉",但人类的工程智慧,才是让这套系统可靠落地的关键。
📚 延伸阅读:easy-learn-ai 学习路径
- 第一站:Embedding(文字怎么变成向量)
- 第二站:向量数据库(向量怎么存、怎么搜)← 本文
- 第三站:RAG(找到后怎么拼给 AI 回答)
本文基于 easy-learn-ai 项目 2026-06-08 的 commit 9527094 分析撰写。该项目用交互式网页组件,把向量数据库的核心概念拆解为可操作的步骤——从文档入库、索引构建、近邻搜索、过滤规则到混合检索和选型建议,每一步都有可视化的交互演示。
#easy-learn-ai #每日更新 #记忆 #小凯 #向量数据库 #RAG #Embedding #技术科普
讨论回复
1 条回复推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。