从理解到记忆再到回答:Embedding→向量数据库→RAG 的完整链路

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

在AI大模型技术爆火之前,"向量"、"相似度"、"召回"这些词还只是少数算法工程师的专业术语。 但自从以ChatGPT为代表的LLM技术爆火、RAG 爆发以及团队可以开始构建自己的知识库,这些概念突然变成了大家都在讨论的词汇。

在上一篇文章中,我们提到通过构建知识库,可以让大模型从"无状态"变成"有状态" 。所谓知识库,本质上是一种让大模型"在对话之外拥有记忆"的方式。它本身并不是固定的技术,而是一个抽象概念,可以根据场景和需求被具象化为不同的载体,比如:

文件系统(文档、PDF、Markdown、网页)

数据库(传统关系型数据库、NoSQL)

向量数据库(Milvus、Weaviate、Pinecone)

这些形式都可以承载知识,但它们的能力差异巨大,尤其是在语义检索时代,向量数据库正在成为事实标准。与此同时,大模型产品背后所依赖的基础模型也并非统一的"一种模型"。它们大致可以分成两大类:

LLM(大语言模型) :专门负责生成文本、推理、回答问题

Embedding 模型:负责把文本转成向量,让机器能够"理解语义"

如果想真正弄清楚知识库、Embedding、向量数据库以及 LLM 在一个完整 AI 系统中的角色,就需要先把它们之间的关系理清楚。

事实上,它们之间并不是孤立的,而是构成了一条完整的语义链路:

LLM 负责"回答",Embedding 负责"理解",向量数据库负责"记住并快速找到",知识库则是它们共同服务的目标形态。

理解这条链路,你就能搞清楚:

向量数据库为什么突然火了?它和Embedding是什么关系?

LLM和Embedding又是什么关系?为什么 Embedding 是大模型应用的底层基础?

为什么 RAG 会成为最流行的大模型增强方案?

接下来,我们就沿着这条链路,把这些概念串联讲清楚。

向量数据库

为了便于理解,我们先从向量数据库讲起,这里可能会提到Embedding,我们姑且先把它理解成某种特定的序列化方式。

向量数据库是什么?

简单来讲向量数据库(Vector Database) 是一种专门为"向量数据"设计的数据库。

什么是"向量数据"?

在大模型中,文本、图片、代码等内容并不是直接用原始形式参与计算,而是通过 Embedding(向量化) 映射成几百维或几千维的浮点数组,向量数据库就是负责 存储这些Embedding向量 ,并提供 高效的相似度搜索(如余弦相似度 / L2距离)

它与传统数据库的区别:

功能 传统数据库 向量数据库
数据形式 行/列、字符串、数值 高维浮点向量
查询方式 精确匹配(=、>、<) 模糊语义匹配(相似度)
设计目的 结构化查询 海量向量的近似最近邻搜索(ANN)

一句话总结:向量数据库是为语义搜索而生的数据库,用于在大规模向量中快速找到"最相似"的内容。

为什么需要向量数据库?

因为大模型并不是无所不知,也不是永远记得所有信息。在实际业务中,我们常遇到这些问题:

1)大模型不能直接记住大量企业私有知识

例如公司内部文档、产品手册、FAQ客户知识库。这些内容通常非常多,大模型无法全部放入 Prompt,也不会长期记住。

2)全文搜索不能满足语义需求

传统搜索如ES、关键词搜索只根据文本匹配,而包含某个关键词不等于语义最相关。

3)大模型缺乏外部知识时,容易产生幻觉(hallucination)

RAG已经成为主流方案,大模型不提前学习所有知识,而是"按需查询",知识的来源就是向量数据库。

4)海量数据 + 高频查询 ,必须依赖高性能ANN搜索

当数据量达到百万到亿级,而查询需要维持毫秒级响应时,传统的精确相似度计算已经无法满足性能需求。只有通过高性能 ANN 索引(如 HNSW、IVF、PQ 等),才能在保证较高召回率的同时,实现高 QPS 的实时检索能力。

向量数据库有哪些产品?

按照开源/商用可分为以下几类:

1)主流开源向量数据库

产品 特点
Milvus (最流行) 专为向量搜索设计,性能极强,生态完善
FAISS (Facebook) 算法库,不是完整数据库,需要自己封装
HNSWlib 高性能近邻搜索库,索引速度强
Weaviate 带 REST API、schema、扩展插件,易用
Qdrant Rust 开发,性能稳定,支持混合搜索
Vespa (雅虎) 面向大规模内容检索的搜索平台

2)商业 SaaS / 云厂商

产品 特点
Pinecone SaaS向量数据库,免维护
OpenSearch Vector Engine AWS生态中集成
Azure Cognitive Search 与Azure AI紧密结合
MongoDB Atlas Vector Search 在文档数据库上附加向量检索功能

3)传统数据库的"向量扩展"功能

PostgreSQL pgvector

Elasticsearch vector search

MySQL HeatWave Vector

适合中小规模场景,但不是专为大规模向量搜索设计。

总结一句话

向量数据库是构建大模型知识库(RAG系统)的核心技术,用来存储和检索语义向量,从而让大模型能够访问实时、企业级、准确的知识。

Embedding

Embedding在技术界的中文解释一般为"向量化",顾名思义就是把常规内容转化为向量内容的一种方式。

Embedding 到底是什么?

Embedding 是把一段文本(或图片、音频等)转换成一个高维向量,并且这个向量在向量空间中具有"语义结构"。

例如一句话:

复制代码
"如何提升接口性能"

Embedding 之后可能变成:

css 复制代码
[-0.13, 0.04, 0.98, ...] (维度可能是 384/768/1024/1536/3072...)

这个向量越接近的,就说明两段文本越"语义相似" 。而比较向量的方式就是判断余弦相似度 。就是将两个数据转化成向量坐标后进行对比,对比的依据就是**方向一致度,不看长度,只看角度。角度越小,越相似。

这就是文本 Embedding 的本质,建立一个语义空间,把语义相似的文本放得很近,不相似的放得很远。

Embedding 的具体过程是什么?

真实 Embedding 过程分为 3 步:

步骤 1:文本 → Tokenize(分词 & 转成数字)

任何模型先把文本拆解成 token:

css 复制代码
"如何提升接口性能"→ ["如何", "提升", "接口", "性能"]→ [10342, 664, 9912, 2203]

步骤 2:放入 Transformer(Encoder 或者 LLM 的隐藏层)

文本经过 Transformer 网络处理。Transformer 做了:

a.Self-Attention(让模型理解词之间的关系)

b.多层前馈网络(提取语义)

c.残差、归一化等结构

此时模型已经"理解了语义关系"。

步骤 3:取隐藏状态 / Pooling,得到最终向量

Embedding 模型的关键在于它会对所有 token 的语义表示做 pooling(比如平均池化 mean pooling)得到一个固定维度的向量。

例如:

yaml 复制代码
token embeddings: 768 维 × 20 个 token↓mean pooling↓输出一个 768 维的向量(整个句子的语义表示)

这就是 Embedding。

为什么有的模型可以做 Embedding,有的不能?

因为不是所有模型结构适合输出固定的向量语义表示。大语言模型(LLM)可以分类:

(1) Encoder-only 模型(专门做 Embedding 的)

例如:

  • sentence-transformers (mpnet)
  • BERT
  • Text-Embedding-3-small/large
  • MiniLM

它们结构上就是:

复制代码
Encoder → Pooling → 一个向量

这种模型天生适合集合语义,输出 embedding

(2) Decoder-only 模型(像 GPT 模型)主要是生成模型

例如 GPT-4 / GPT-3.5 / Llama 等。

它们是:

sql 复制代码
Decoder-only Transformer → 负责做语言生成

Decoder-only 的隐藏层是"自回归"的,每个 token 负责预测下一个 token。

(3) Encoder-Decoder 模型

它的设计目标也是生成和翻译,不是做 embedding。

Embedding 模型 vs LLM的真正区别

对比点 Embedding 模型 大语言模型(LLM)
目标 语义向量表示 文本生成
输入 文本 文本
输出 一个固定长度向量 生成 token(回复一句话)
核心结构 Encoder Decoder
是否做 pooling 是,必须有 通常没有
应用场景 检索、向量数据库、相似度搜索、聚类、RAG 对话、问答、生成内容、写代码等

一句话总结:Embedding 模型负责"理解内容",LLM 负责"生成内容"。

为什么需要专门的 Embedding 模型,而不是让 LLM 来做?

(1) 计算效率

Embedding 模型一般只有 100M~1B 参数,非常轻量。

LLM 有几十亿~几千亿参数,拿它来算一个向量完全没必要。

(2) 质量更高

Embedding 模型是用对比学习(Contrastive Learning)训练的,目标就是把"语义相似"的句子放得更近。LLM 的训练目标只是预测下一个 token。

(3) 一致性强

Embedding 模型输出的向量分布非常稳定(适合向量库)。LLM 的隐藏层 embedding 会随提示词、上下文变化而波动,不适合作为稳定语义向量。

为什么 Embedding 这么重要

RAG 的核心三步:

1.用 Embedding 把知识库内容向量化

2.用 Embedding 把查询向量化

**3.检索"语义最相近"的文档

如果没有 Embedding,RAG 根本无法运行。这就是为什么:

RAG = Embedding + 向量数据库 + LLM

其中 Embedding 是地基。

Embedding和向量数据库有什么关系

这个问题可以一句话进行总结:

Embedding 是把文本转成向量的过程;向量数据库是存向量并做向量检索的地方。

Embedding 产生向量 → 向量存入向量数据库 → 大模型从数据库里用相似度检索找到相关知识 → 最后让 LLM 回答。

这就是 RAG 的基础工作流。

RAG

前面我们已经讲了 Embedding 如何把文本变成向量,以及向量数据库如何在海量向量中快速找到"最相似的知识",这些都是基础设施,而 RAG(Retrieval-Augmented Generation)就是把它们组合成一个可工作的 AI 能力

如果说Embedding 是"编码",向量数据库是"记忆",那么 RAG 就是"用记忆回答问题的过程"

我们可以把 RAG 理解成一个执行链路:先找知识(Retrieve),再生成答案(Generate)

为什么需要 RAG?

LLM 很强,但它有两个硬伤:

1)它不知道你企业内部的知识(知识截止) 例如你的 SOP、财务制度、业务数据,这些大模型无法直接"知道"。

2)它会胡编(幻觉) 当模型不确定答案时,它会"想象一个"。

RAG 的目标就是解决这两个问题:缓解幻觉,引入实时、外部、私有的知识让模型给出更可靠、更贴合业务的答案

本质上:

RAG 让大模型从"猜答案"变成"查资料"。

RAG 的工作流到底是什么?

最简单的一句话:

Embedding → 向量召回 → 把知识塞给模型 → 让它回答

如果展开成技术流,会是这样的一条链路:

1)用户提问

2)对问题进行向量化(Query Embedding)

3)向量数据库中检索最相似的 Top-K 片段

4)把这些检索结果与 Prompt 拼接

5)交给 LLM,让它基于"提供的知识"生成答案

RAG 并不是"让模型变强",而是让模型"用到外部知识"

很多人误以为 RAG 是增强模型能力。但本质上RAG 不改变模型本身,只改变它获得知识的方式。

LLM 的作用只变成"把检索到的信息组合起来,用自然语言表达出来"。知识不再藏在模型参数里,而是藏在向量数据库里,我们可以随时更新知识,而模型不需要重新训练。

RAG = 我们提供知识,模型负责表达

我们可以把 RAG 想象成一支团队:

  • 向量数据库:资料管理员
  • Embedding:文档编码员
  • LLM:负责写报告的实习生

工作流程就是:

把资料交给实习生 → 实习生看完 → 写成回答 → 给你

向量数据库 + RAG + 大模型整体架构图

下图展示了一个典型的 "向量数据库 + RAG + 大模型" 的完整工作流程,它描述了用户提问后,系统如何利用知识库增强大模型的回答质量。整个流程大致可分为四个阶段:

首先,用户提出问题,请求会先进入 RAG(检索增强生成)层 。RAG 的第一步是使用 Embedding 模型 将用户的问题转换为向量(Query Embedding)。随后,系统根据这个向量到 向量数据库(Vector DB) 中进行相似度检索。向量数据库中事先存储了经过切片的文档内容及其对应的 Embedding 向量,并通过 HNSW、IVF 等 ANN(近似最近邻)算法来快速找到语义最相近的内容片段。

完成检索后,系统会进入到 Prompt 构建器 阶段。这个步骤非常关键,它会把用户原始问题与检索到的知识片段组合起来,构造成一条包含更多"上下文知识"的增强提示(Augmented Prompt),也就是给大模型提供更准确的背景信息。

最后,这条增强后的 Prompt 会被送入 LLM(大语言模型) ,如 GPT、Claude、Qwen 等。大模型基于提供的知识生成更可靠、更准确的回答,并最终返回给用户。

整体架构清晰呈现了一个核心思想:

RAG 用 Embedding 理解问题 → 向量数据库找到最相关知识 → Prompt 构建器把知识提供给大模型 → LLM 基于知识回答问题。

这是目前大模型应用中最主流、最可靠的知识增强方式。

小总结

如果把一个智能系统比作一个大脑,那么 Embedding 是理解世界的方式向量数据库是记忆世界的结构 ,而 RAG 则是让理解过的知识真正被使用起来的方式

Embedding 把原本混乱的文本世界编码成有意义的向量空间,让"相似"可以被数学化;向量数据库用高性能 ANN 架构为这些向量提供了可扩展的"长时记忆";最终,RAG 作为桥梁,让大模型在回答每一个问题时,都能实时检索相关的知识片段,把"现学现用"变成现实。

换句话说,RAG 让模型不再仅仅依赖固定参数里的"死记硬背",而是获得了 实时学习、即时查询、动态回答 的能力。

当这三者组合在一起,我们构建的就不再是一个简单的问答系统,而是一个真正能理解业务、吸收知识、持续进化的 AI 系统

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

相关推荐
学历真的很重要1 小时前
LangChain V1.0 Short-term Memory 详细指南
后端·python·语言模型·面试·langchain·agent·ai编程
大模型教程1 小时前
探秘 Hugging Face:何为 Hugging Face 及其核心组件全览
程序员·llm·agent
Jing_Rainbow3 小时前
【LeetCode Hot100 刷题日记(19/100)】54. 螺旋矩阵 —— 数组、矩阵、模拟、双指针、层序遍历🌀
算法·面试·程序员
Jing_Rainbow3 小时前
【Weapp-2 /Lesson19(2025-11-04)】微信小程序“博客园”项目深度解析:从架构到细节的完整剖析📱
微信·微信小程序·程序员
AI大模型3 小时前
大模型开发实战篇2:调用DeepSeek的对话接口-最佳实践
程序员·agent·deepseek
AI大模型3 小时前
大模型开发实战篇1:调用DeepSeek的对话接口,即聊天机器人接口
程序员·llm·agent
念心之所向4 小时前
深度解析:基于 Prompt 演进策略的企业级自动化 Agent 架构设计
llm
十月南城11 小时前
SQL性能的三要素——索引、执行计划与数据分布的协同影响
后端·程序员
吴法刚12 小时前
Gemini cli 源码分析之-Agent分析-Agent架构系统分析
架构·agent·ai编程·gemini