跳至正文
来两杯美式
返回

RAG 核心原理:检索、向量与嵌入——计算机如何理解语义

By 来两杯美式
发布于

“猫”和”狗”在语义上很接近,但”猫”和”汽车”就差很远。人类凭直觉就能判断,计算机怎么做到?答案是把所有东西都变成一串数字——向量。

一、用猫品种理解”向量”

先不看枯燥的数学定义,我们用一个直观的例子来理解。

1.1 第一步:一个特征

假设你面前有下面这些猫,需要区分它们的品种:

各种品种的猫

你会怎么区分?最自然的想法可能是”看体型大小”。

如果我们用一个水平轴来表示体型,不同品种的猫就落在了不同的坐标点上:

用体型轴区分猫品种

光靠体型,布偶猫和缅因猫能分出来了,但缅因猫、奶牛猫和折耳猫挤在一起——一个维度不够。

1.2 第二步:再加一个特征

我们再引入毛发长短,建立一条垂直轴。现在每只猫有了两个坐标(体型 + 毛发),变成了二维空间中的一个点:

用体型和毛发两个轴区分猫

现在能区分的品种更多了:长毛 + 大块头 = 缅因猫,短毛 + 中体型 = 奶牛猫。

但还是有一些品种挤在一起。比如美国短毛猫和折耳猫,它们体型和毛发长度相近。

1.3 第三步:三维……甚至更多

再加一个维度——腿的长短。现在变成了三维空间,每个品种都是一个三维坐标点:

三维空间中的猫品种

不断加特征:眼睛大小、尾巴长短、毛发颜色、声音大小、耳朵形状……当我们有几十甚至几百个特征维度时,几乎每个品种都能被唯一地区分出来。

1.4 从”猫”到”一切”

人类是三维生物,想象不了四维以上的空间,但我们完全可以用一串数字来表示多维特征

用多维向量记录猫的特征

这串数字,就是向量(Vector)

核心认知:不只猫可以——一个字、一个词、一句话、一篇文档、甚至一张图片,都可以用向量记录特征。维度只是模型设计的一部分;检索质量还取决于训练数据、任务、语种和评测结果,维度更高不等于一定更好。

二、Embedding:把文字变成向量

什么是 Embedding?

Embedding(嵌入) 就是”把文字变成向量”的过程。负责这个转换的工具叫嵌入模型(Embedding Model)

Embedding 模型将文字转换为向量

举个例子(简化版):

输入文本: "如何预防流感?"
经过 Embedding 模型 → [0.12, -0.34, 0.78, ..., 0.05]  (768 维向量)

在这个 768 维空间里:

这就是 RAG 检索的核心原理:把用户问题和知识库文档都向量化,然后找距离最近的。

常用 Embedding 模型

模型特点维度适用场景
OpenAI text-embedding-3-small托管 API,易于集成1536(可缩短)通用原型与托管方案
BGE-M3(BAAI)多语言、支持最长 8192 token 输入1024需要本地部署或多语言检索时
M3E-base中文轻量级768轻量级中文应用
all-MiniLM-L6-v2开源轻量,本地可跑384快速原型开发

选型建议:先用你的真实查询和文档建立小型评测集,再比较召回率、延迟、成本和部署约束。中文语料可把 BGE-M3、M3E 和托管模型一起纳入候选;不要仅凭模型维度或通用排名选型。

三、向量数据库:海量向量的搜索引擎

为什么需要专门的数据库?

当向量量级增大后,逐一精确计算距离会变慢。是否需要专门的向量数据库取决于数据量、延迟目标和运维约束;已有 PostgreSQL 时,pgvector 等扩展也可能足够。

向量检索系统会使用 HNSW、IVF 等索引,在召回质量、延迟和成本之间做权衡;“毫秒级”需要结合规模、索引参数和硬件实测。

向量数据库架构

主流向量数据库速览

数据库类型适合
Chroma轻量开源快速原型、小项目、学习入门
Milvus高性能开源大规模生产环境
Pinecone云托管不想管运维的团队
Qdrant开源,Rust 编写性能敏感场景
pgvectorPostgreSQL 扩展已有 PG 的项目,不想引入新数据库
FAISSMeta 开源库需要 GPU 加速的极致性能场景

入门推荐:Chroma——Python 原生调用,无需单独部署服务端,三行代码就能跑起来。

向量检索 = 相似度计算

判断两个向量是否”相似”,本质是计算它们之间的距离。常用方法:

四、回到 RAG:向量如何让检索变聪明

现在我们把整条链路串起来:

                     准备阶段(离线)
                    ─────────────────
                    ① 把知识库文档切分成小段(Chunking)
                    ② 每段用 Embedding 模型转为向量
                    ③ 存入向量数据库


                     查询阶段(在线)
                    ─────────────────
  用户提问 "公司年假怎么申请?"

  ① Embedding 模型将问题转为向量

  ② 向量数据库搜索最接近的 Top-K 个文档向量

  ③ 取出对应的原文片段:
     - 片段 1: "员工每年享有 5 天带薪年假,需提前 3 天在 OA 系统提交申请..."
     - 片段 2: "年假未休完可顺延至次年 3 月 31 日前使用..."

  ④ 将片段 + 原问题拼接成 Prompt,发给 LLM 生成最终答案

② 是关键环节之一:检索不相关会显著拉低回答质量,但分块、重排、上下文组织、模型遵循性和来源校验也同样影响最终结果。

小结

RAG 核心原理总览:向量、Embedding 与向量数据库三大基石

下一篇,我们进入实战——RAG 系统的核心组件清单、文本分块策略、Prompt 模板设计,以及遇到问题时怎么排查。


分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
查看系列全部文章
  1. 01.做 AI 助手,最怕一上来就建知识库
  2. 02.RAG 入门:为什么大模型需要查资料再回答
  3. 03.RAG 核心原理:检索、向量与嵌入——计算机如何理解语义
  4. 04.RAG 实战:核心组件、调优与问题排查
  5. 05.RAG 为什么回答流程问题会漏步骤?原因和改进方案(附完整源码)
  6. 06.企业级 RAG 怎么落地?不只是向量检索和大模型(附完整源码)
  7. 07.RAG 检索不准?先别换模型,把问题问对再说
  8. 08.RAG 答非所问?从索引到生成,打通最后一公里
  9. 09.别再把聊天记录当记忆了:AI Agent 的四种记忆到底怎么分?
  10. 10.我手搓了一个 AI Agent 记忆框架,才发现“长期记忆”不是存聊天记录
  11. 11.精选数据与垂直 AI:AI 时代的护城河在哪

上一篇
RAG 实战:核心组件、调优与问题排查
下一篇
RAG 入门:为什么大模型需要查资料再回答