跳到主要内容
📖 本章预览

本章为预览版本,展示部分核心内容。完整内容包含详细源码解析、实战代码和面试要点,加入知识星球即可解锁全部章节。

第6章 文本变向量:Embedding 的魔法

6.1 Embedding 原理

6.1.1 文本如何变成向量

Embedding 是将文本映射到高维向量空间的过程。语义相近的文本,在向量空间中距离也近。

"Spring Boot 是一个 Java 框架"  →  [0.12, -0.34, 0.56, ..., 0.78]  (1024维)
"SpringBoot 是 Java 的开发框架" → [0.11, -0.33, 0.55, ..., 0.77] (距离很近)
"今天天气不错" → [0.89, 0.23, -0.67, ..., 0.12] (距离很远)

核心应用:

  • 语义搜索:用向量相似度替代关键词匹配
  • RAG 检索:找到与用户问题最相关的文档片段
  • 文本分类:基于向量聚类
  • 推荐系统:基于内容相似度推荐

6.1.2 相似度计算

/**
* 余弦相似度计算
* 值域 [-1, 1],越接近 1 表示越相似
*/
public class SimilarityUtils {

public static float cosineSimilarity(float[] vectorA, float[] vectorB) {
float dotProduct = 0f, normA = 0f, normB = 0f;
for (int i = 0; i < vectorA.length; i++) {
dotProduct += vectorA[i] * vectorB[i];
normA += vectorA[i] * vectorA[i];
normB += vectorB[i] * vectorB[i];
}
return (float) (dotProduct / (Math.sqrt(normA) * Math.sqrt(normB)));
}
}

6.2 Spring AI EmbeddingModel

@Service
public class EmbeddingService {

@Autowired
private EmbeddingModel embeddingModel;

/**
* 单文本向量化
*/
public float[] embedText(String text) {
return embeddingModel.embed(text);
}

/**
* 批量向量化
*/
public List<float[]> embedBatch(List<String> texts) {
EmbeddingResponse response = embeddingModel.call(
new EmbeddingRequest(texts, EmbeddingOptions.EMPTY)
);
return response.getResults().stream()
.map(r -> r.getOutput())
.toList();
}

/**
* 计算两段文本的语义相似度
*/
public float similarity(String textA, String textB) {
float[] vectorA = embeddingModel.embed(textA);
float[] vectorB = embeddingModel.embed(textB);
return SimilarityUtils.cosineSimilarity(vectorA, vectorB);
}
}

6.3 实战:语义搜索

/**
* 基于 Embedding 的语义搜索(不依赖向量数据库的简易版)
*/
@Service
public class SimpleSemanticSearch {

@Autowired
private EmbeddingModel embeddingModel;

/** 文档库:文本 + 预计算的向量 */
private final List<DocEntry> docEntries = new ArrayList<>();

@Data
@AllArgsConstructor
static class DocEntry {
private String text;
private float[] vector;


🔒 解锁完整内容

本章剩余内容需要解锁后查看

以上仅为本章部分预览内容,完整内容包含更多深度源码解析、实战代码和面试要点。

加入知识星球你将获得:

  • ✅ 全部 26 章完整内容 + 持续更新
  • ✅ 配套源码 + 实战项目
  • ✅ 一对一答疑 + 面试辅导
  • ✅ 简历优化 + 内推机会

📚 本章完整目录

以下为本章完整目录结构,加入知识星球即可解锁全部内容。