在上一章的**提示工程(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。
利用这个极其严谨的数学公式,我们可以瞬间在海量文本库中,扒出数百篇与用户提问“灵魂高度相似”的资料,哪怕全文没对上一个重合的关键字!