Embedding模型、向量数据库
一、Embedding
Embedding 的中文叫嵌入表示。核心思想:把现实世界离散符号(文字、句子、图片、音频)映射到一个连续的高维数学空间。
Embedding 模型的工作:
输入一段文本(词、句子、段落),输出一组固定长度浮点数:
如输入:苹果 输出向量:[ 0.213, -0.045, 0.771, ... , -0.301 ] 共1024个数字
Embedding 是一个过程(算法 / 模型);它输出出来的结果,叫向量(Vector)
二、向量数据库(Vector Database)
定义:专门用来存储高维 Embedding向量,做快速语义相似度检索的数据库系统。
普通数据库(MySQL、PostgreSQL)擅长精确匹配;面对 1024 维这种高维向量,B + 树索引完全失效,暴力遍历速度极慢。向量数据库核心就是解决高维向量快速相似度搜索,是 RAG 的底层存储底座。
1、向量库一条记录存储什么
每一条记录 = ID + 向量 vector + Payload 元数据
id: 10001 vector: [0.12,‑0.33,0.55,…] # embedding输出,例如1024维float数组 payload(元数据):{ "text":"产品保修期一年", #原始文本chunk "source":"手册A.pdf", "page":15, "category":"产品说明" }
vector:用于相似度检索
payload:原始文本、来源、页码、标签,检索命中后返回给上层 RAG 使用;支持过滤筛选,例如只检索category="产品说明"
2、核心概念:ANN 近似最近邻搜索
如果库里有 100 万条向量,暴力搜索(FLAT 索引)会拿查询向量和全部 100 万个向量逐个计算余弦相似度,100% 准确,但是极慢,无法线上使用。
ANN Approximate Nearest Neighbor,近似最近邻:
(1)牺牲很小一部分召回准确率(比如从 100% 降到 95‑99%),换取毫秒级查询速度,是向量数据库一切性能的基础。
(2)权衡三角:查询延迟(速度) ↔ 召回率(精度) ↔ 内存占用,调参本质就是调这三者。
3、向量数据库完整能力
(1)向量 CRUD:插入、删除、更新向量。
坑点:HNSW/IVF 删除不会立刻回收,很多库是墓碑标记,大量删除需要重建索引。
(2)ANN 相似度检索:输入 query 向量,返回 Top‑K 最相似记录,携带 payload 元数据。
(3)元数据过滤(Filter):向量检索同时附加条件。
示例:搜索top3,并且只取source=产品手册.pdf。分为前过滤、后过滤;后过滤容易出现返回结果不足。
(4)持久化:落盘磁盘,重启不丢失数据。FAISS 没有持久化,这点要注意。
(5)量化压缩 Quantization:把 float32 向量压缩为 int8 甚至更低位,大幅减少内存,损失少量召回率,用于亿级海量场景。
(6)混合检索 Hybrid:向量检索 + 关键词稀疏检索(BM25)结合,兼顾语义 + 字面精确匹配。Qdrant、Milvus、Weaviate 支持。
4、主流向量库深度对比
| 产品 | 类型 | 开发语言 | 核心优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| Chroma | 轻量嵌入式向量库 | Python | 开箱即用,一行启动,LangChain 原生集成 | 性能弱,不适合大数据,无集群 | Demo 原型、本地小知识库,百万以内 |
| FAISS | 检索算法库(非数据库) | C++ | 检索速度极快,索引丰富 | 无持久化,无 HTTP 接口,无元数据,无删除管理 | 底层内核,需要自己封装服务,不直接对外上线 |
| Qdrant | 开源完整向量库 | Rust | 单二进制启动,元数据过滤强,支持稠密 + 稀疏向量,自带可视化 | 分布式集群生态弱于 Milvus | 私有化生产,百万‑千万级向量 RAG,企业知识库 |
| Milvus(Zilliz) | 分布式向量数据库 | Go/C++ | 支持千亿级向量,索引齐全,集群弹性扩容,中文文档完善 | 部署复杂,依赖 etcd、MinIO 组件,运维重 | 大规模企业、多租户、亿级向量生产环境 |
| PGVector | PostgreSQL 插件 | C | 复用已有 PG,SQL 操作,事务完整,无需新增中间件 | 性能上限低,不适合千万以上向量 | 已经在用 PostgreSQL,中小规模知识库 |
| Pinecone | 云 SaaS 向量库 | 闭源 | 完全托管,零运维 | 闭源,数据上云,成本高 | 云原生项目,不想运维 |
快速选型建议(RAG 落地直接套用)
(1)做原型、Demo:Chroma
(2)已有 PostgreSQL,不想新增组件:PGVector(十万级别)
(3)私有化部署,单机,百万‑千万向量:Qdrant
(4)亿级、多租户、集群、大规模企业平台:Milvus
(5)不想运维,云上项目:Pinecone 云
5、向量库在 RAG 完整链路
(1)离线阶段
文档 → Chunk切分 → Embedding模型输出向量 → L2归一化 → 向量库插入:向量+原文+元数据payload → 构建ANN索引
(2)在线查询阶段
用户问题 → Embedding模型生成query向量 → 请求向量库search接口

浙公网安备 33010602011771号