Embedding
为什么需要 Embedding
LLM 擅长理解语义,但数据库和检索系统处理不了"语义",只认精确匹配。
当你问"找一下和'公司年度报告'相关的文档",传统做法是搜索"公司"、"年度"、"报告"这些关键词。但如果文档写的是"年报"而不是"年度报告",或者用了"年度财报"的说法,关键词搜索就找不到了——因为它只会找字面完全匹配的词。
Embedding 解决的就是这个问题:让计算机能比较"意思上是否接近",而不只是"字面上是否一样"。
什么是 Embedding
一句话定义:Embedding 的本质是把文本转成一串数字(向量),让语义相近的内容在数字空间里距离也相近。
你可以把它理解成给每段文本颁发一个"指纹":
- 语义相近的话,指纹也相近
- 语义差很远的话,指纹就差很远
比如这三句话:
- "猫在睡觉"
- "小猫正在打盹"
- "火箭发射成功"
前两句意思接近,所以 Embedding 后向量距离近;第三句意思完全不同,向量距离远。
这种"远近"通常用 Cosine Similarity(余弦相似度)来衡量——它计算的是向量"方向"有多接近,而不是大小。
怎么做:什么时候用 Embedding
适合用 Embedding 的场景:
- 语义搜索:按意思而不是按关键词找内容
- RAG 知识库:为问答系统提供检索基础——这也是 RAG 的核心步骤之一
- 推荐系统:找到语义接近的物品或内容
- 文本聚类:把大量内容按主题自动分组
不适合用 Embedding 的场景:
- 精确匹配:查人名、编号、订单号——这时候还得靠关键词搜索
- 无需语义理解的任务:纯粹的结构化查询
常见坑:
- Embedding 模型有领域差异:通用模型在法律、医疗、金融等专业领域不一定最优。关于 Embedding 模型的选择,可以看 Embedding Model 词条
- Chunk 切分直接影响效果:切太碎会丢上下文,切太大又引入噪声
- 向量接近不等于答案正确:检索到相似内容后,仍需后续判断
记住这一句:Embedding 就是把"语义"变成"数字",让计算机能比较"意思上是否接近"。
相关词条:Cosine Similarity · RAG
标签
向量嵌入文本向量化embedding vector语义向量