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接口

 

 
posted @ 2026-08-08 16:39  梁涛999  阅读(40)  评论(0)    收藏  举报