跳到主要内容

4.1 Embedding 与向量检索:把文字变成数学坐标

阅读需 6 分钟
wqz
跨越私有知识的鸿沟

在上一章的**提示工程(Prompt Engineering)**中,我们学会了如何通过 Zero-shot、Few-shot 和 CoT 等技巧,甚至利用系统提示词逼迫大模型输出完美的 JSON 结构。

但即便你的 Prompt 写得再出神入化,当你问它:“根据昨天刚公布的公司考勤制度,迟到十分钟怎么扣钱?”时,它依然会一本正经地胡说八道(产生幻觉)。 为什么?因为它的大脑里根本没有这份文件(数据隐私与训练知识截止日的双重限制)。

为了解决“让大模型读懂私有数据”的问题,业界诞生了 **RAG(Retrieval-Augmented Generation,检索增强生成)**技术。而在搞懂 RAG 之前,我们必须先跨过它的第一块核心基石——把文字变成坐标的 Embedding


1. 什么是 Embedding 模型?

在我们眼里,“苹果”和“手机”是文字;但在计算机眼里,它只认得 0 和 1。 如果你只是用简单的 ID 映射(例如规定 1代表苹果,2代表手机,3代表香蕉),计算机绝对无法理解“苹果”和“香蕉”都是水果的近亲关系。

Embedding(词嵌入 / 文本嵌入) 就是一种将文本、图像、甚至音频,降维打击并压缩成一串**包含丰富语义的浮点数数组(向量)**的预训练模型。这套技术最早可以追溯到经典的 Word2Vec 模型。

[图片占位:(A clean, minimalist technical diagram on a solid white background. Use simple, crisp vector line art, monochrome or with very subtle minimal color accents. Flat design, no 3D effects, no clutter. Draw the word 'Apple' transforming into an array of decimal numbers [0.12, -0.45, 0.88...].)]

你可以把它看作是给每一句话打上的**“高维化学指纹”**。 在这串长长的浮点数里(现代 Embedding 模型如 OpenAI 的 text-embedding-3-small 会固定输出 1536 维),每一维可能都隐晦地代表了这句话的某种特定特征:比如性别倾向、动物属性、情感极性等。


2. 空间坐标系与余弦相似度 (Cosine Similarity)

有了这一串数字,我们就可以把每一篇文字,当成是一个高维空间里的坐标点抛进去。

奇妙的物理现象出现了:在意思上越接近的文本,它们在这个高维空间里的几何距离就挨得越近。

  • “怎么办理离职手续?”
  • “如何辞职?”
  • “员工退工流程申请”

这三句话虽然字面上的汉字完全没有重合,但经过 Embedding 模型的坐标映射后,它们会在空间中抱成紧紧的一团。而另一句“今晚去哪里吃火锅?”的坐标点,则会被远远地甩在空间的另一头。

[图片占位:(A clean, minimalist technical diagram on a solid white background. Use simple, crisp vector line art, monochrome or with very subtle minimal color accents. Flat design, no 3D effects, no clutter. Draw a simple 2D or 3D coordinate system. Group three dots tightly together representing similar phrases, and put one dot far away representing an unrelated phrase.)]

余弦相似度:两根指针的夹角

由于我们把文字映射成了空间里的点(或者说从原点出发的向量箭头),想要判断两句话是不是一个意思,我们甚至不仅要看它们的直线距离,更核心的是测量两根向量夹角的大小。这就是 余弦相似度 (Cosine Similarity) 的本质。

  • 如果两句话意思完全一致,夹角为 0 度,余弦值为 1。
  • 如果两句话意思毫无相干(空间中垂直相交),夹角 90 度,余弦值为 0。
  • 如果两句话意思是绝对的反义对立,夹角 180 度,余弦值为 -1。

利用这个极其严谨的数学公式,我们可以瞬间在海量文本库中,扒出数百篇与用户提问“灵魂高度相似”的资料,哪怕全文没对上一个重合的关键字!


3. 向量数据库 (Vector Database) :语义字典

知道了 Embedding 能算距离,现在的挑战是:如果你公司有 1000 万份历史合同文件,每次用户问一个新问题,难道要让电脑把新问题与那 1000 万份合同挨个做一遍夹角乘法计算吗? 这显然会把服务器直接算死。

我们需要一个专门为处理并发、极速向量坐标对比而生的基础设施。因此,向量数据库在这波 AI 浪潮中迎来了大爆发。

主流代表有:

  • Chroma:本地轻量级王者,Python 开发者做原型首选。
  • Pinecone:云托管领域的霸主,你只需调 API,不用管底层的扩容。
  • Milvus:专门用于处理十亿级、百亿级庞大工业数据的重型装甲。

底层索引算法 (HNSW 与 FAISS) 引读

传统的长文本数据库在检索时,是在对比字母排列系谱图(也就是 B-Tree 等机制)。但在庞大的高维星空中找最接近的几十个坐标点,绝不是用暴力的全局扫描

现代向量数据库内部通常装载了两项核心黑科技(属于 P2 了解底层即可):

  • IVF (倒排过滤)FAISS 聚类体系:把星空预先划分为无数个小恒星系。当导弹打过来时,先评估属于哪个星系,只进那个星系里去搜。
  • HNSW (分层导航小世界):在空间里铺设错综复杂的交通过境图。从最高维的高速公路开始跳跃穿梭,迅速定位到区域附近后再进入局部路网对比。这种算法目前也是大多数库(如 Chroma)默认的最优搜索引擎算法。

下一章预告: 现在,你的文本终于化去了皮肉,变成了可以直接利用余弦夹角计算语义的数字阵列。 但这只是万里长征第一步。当你拿到一份包含几百万字的高管内参报告想要用来投喂 AI 时,如果直接将其强塞给 Embedding 大口咀嚼,结果只会被噎死在显存溢出的错误堆栈里。 接下来,我们将全流程手工拆解:4.2 RAG 核心机制:文档切分、混合检索与重排。


下一章: 4.2 RAG 核心机制:文档切分、混合检索与重排

分享这篇文章
Loading Comments...