7 Embedding(嵌入):AI 如何理解语义(中文优化版)

引子

前面我们学习了 RAG(检索增强生成):把资料“喂”给模型来回答企业内部问题。
当文档数量很多时,我们需要一种方法把文本“压缩成可计算的语义表示”,以便 快速、准确地检索。这个方法就是 Embedding(嵌入)

Embedding 是 RAG 的基石,也是大模型产品里最常用的技术之一。


一、核心概念(零基础友好解释)

1. Embedding 是什么?

  • 通俗解释:给每句话贴一个“坐标标签”。意思相近的句子坐标更近,意思不同的更远。
  • 专业定义:将文本映射到高维向量空间的过程;这些向量可用于相似度检索、聚类、推荐等任务。

2. 为什么不用纯关键词?

  • “AI 的未来” 与 “人工智能的发展趋势” 关键词不同,但语义相似。
  • 关键词检索容易漏掉这种情况,而 Embedding 能识别出来。

3. Embedding 和大语言模型(LLM,如 DeepSeek R1)的关系

  • Embedding 模型:负责“找资料”(把文本变向量 → 检索最相关片段)。
  • LLM(DeepSeek R1):负责“写答案”(读取检索到的片段 + 问题 → 生成回答)。

在完整 RAG 系统里通常是“两件套”:Embedding 模型做检索,LLM 做生成


二、实践:用 bge 模型做中文语义检索

1. 安装依赖

pip install sentence-transformers

2. 代码(保存为 embedding_demo_bge.py

from sentence_transformers import SentenceTransformer, util

# 加载中文优化的嵌入模型(bge 系列)
model = SentenceTransformer("BAAI/bge-base-zh-v1.5")

# 文档候选(passages)——不加指令
passages = [
    "人工智能正在改变世界,影响到产业升级与社会治理。",
    "今天的天气很好,适合户外徒步和登山活动。",
    "GPU 显存不足会导致大模型推理时出现 OOM 错误。"
]

# 查询(query)——要加 bge 的官方推荐指令
QUERY_PREFIX = "为这个中文句子生成用于检索的向量表示:"
queries = [
    "AI 的发展正在深刻影响人类社会和经济结构。",
    "周末去哪儿爬山更合适?",
]

# 编码并归一化向量
emb_q = model.encode([QUERY_PREFIX + q for q in queries], convert_to_tensor=True, normalize_embeddings=True)
emb_p = model.encode(passages, convert_to_tensor=True, normalize_embeddings=True)

# 相似度计算(query 对所有 passages)
sim = util.cos_sim(emb_q, emb_p)

for i, q in enumerate(queries):
    print(f"\n查询:{q}")
    ranked = sorted(list(enumerate(sim[i].cpu().tolist())), key=lambda x: x[1], reverse=True)
    for idx, score in ranked:
        print(f"  相似度:{score:.3f} | 文档:{passages[idx]}")

3. 运行结果示例

查询:AI 的发展正在深刻影响人类社会和经济结构。
  相似度:0.632 | 文档:人工智能正在改变世界,影响到产业升级与社会治理。
  相似度:0.275 | 文档:GPU 显存不足会导致大模型推理时出现 OOM 错误。
  相似度:0.174 | 文档:今天的天气很好,适合户外徒步和登山活动。

查询:周末去哪儿爬山更合适?
  相似度:0.341 | 文档:今天的天气很好,适合户外徒步和登山活动。
  相似度:0.192 | 文档:GPU 显存不足会导致大模型推理时出现 OOM 错误。
  相似度:0.071 | 文档:人工智能正在改变世界,影响到产业升级与社会治理。

可以看到:

  • 与 AI 相关的查询 → 正确把“人工智能…”那条放在第一位;
  • 与“爬山”相关的查询 → 把“户外徒步和登山…”那条排在第一位。

这就是 Embedding 在检索场景里的作用。


三、产品经理思考

1. Embedding 的产品价值

  • 更聪明的搜索:支持自然语言提问,而不是只认关键词。
  • 更精准的推荐:用户搜“跑步鞋”,能返回“慢跑鞋”“运动鞋”。
  • 更好的分类与聚合:自动把相似问题聚类,生成 FAQ。

2. 在 PRD 中需要考虑

  • 模型选择:轻量(快、便宜) vs 大模型(准,但贵)。
  • 数据规模:存多少文档?需要多快的检索?
  • 更新机制:新文档加入后多久能检索?

3. 和 LLM(DeepSeek R1)的配合

  • Embedding → 找出最相关的文档片段
  • LLM → 基于片段生成自然语言答案

这就是典型的 RAG 流程:Embedding 做“检索”,LLM 做“生成”。


四、小结

  • Embedding = 把文本转成语义坐标,是 AI 检索的基石。
  • 在完整 RAG 系统里,Embedding 模型和 LLM 分工明确:前者负责找资料,后者负责写答案。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐