ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Android开发转AI Agent:第8天——把文字变成数字,让计算机“读懂“语义

Android开发转AI Agent:第8天——把文字变成数字,让计算机“读懂“语义

作者:一位Android开发工程师 | 2026年6月10日
系列:第二阶段开始,进入RAG(检索增强生成)核心


前言

前7天我一直在调 LLM API,但有一个根本限制——LLM 只能回答训练数据里有的东西。你问它"公司内部 API 文档怎么写",它不知道。

RAG(检索增强生成)解决这个问题:先把相关资料检索出来,再和问题一起发给 LLM。而 RAG 的第一步,就是今天要学的 Embedding——把文字变成数字向量。


Embedding 是什么

一句话:把"文字"翻译成"坐标",让语义相近的句子在数学空间里挨得近。

类比 Kotlin:就像给每部电影打分(剧情/画面/演技),然后两部评分相近的电影就是"相似"的。

"Android开发" → [0.12, -0.34, 0.78, ..., 0.45] (384个数字) "移动端编程" → [0.15, -0.31, 0.72, ..., 0.41] (384个数字,非常接近!) "今天下雨" → [-0.82, 0.61, -0.23, ..., 0.03] (差很远)

实验代码

fromsentence_transformersimportSentenceTransformerimportnumpyasnp model=SentenceTransformer("all-MiniLM-L6-v2")vec_a=model.encode("Android 应用开发")vec_b=model.encode("移动端 App 编程")vec_c=model.encode("今天天气很好适合出去跑步")# 余弦相似度:两个向量越接近,值越接近 1defcosine(a,b):returnnp.dot(a,b)/(np.linalg.norm(a)*np.linalg.norm(b))print(f"Android vs 移动端:{cosine(vec_a,vec_b):.4f}")# 预期 > 0.7print(f"Android vs 天气:{cosine(vec_a,vec_c):.4f}")# 预期 < 0.5print(f"移动端 vs 天气:{cosine(vec_b,vec_c):.4f}")# 预期 < 0.5

运行结果

Android vs 移动端: 0.7894 ← 高!意思相近 Android vs 天气: 0.4317 ← 低!不相关 移动端 vs 天气: 0.4487 ← 低!不相关

结果完美:语义相近的得分高,不相关的得分低。


关于模型选择

我用的是all-MiniLM-L6-v2(80MB,轻量级,支持中英文)。但后面第11天发现它对中文检索精度不够,换成了shibing624/text2vec-base-chinese(专为中文优化)。

国内下载 HuggingFace 模型需要镜像:

importos os.environ["HF_ENDPOINT"]="https://hf-mirror.com"

今天的一句话总结

Embedding 把"不可计算的语义"变成"可计算的数字"——两段文字的语义相似度,变成了两个向量的余弦距离。这是 RAG 检索的数学基础。


下一篇预告

第9天:向量检索——把多段文档向量化存储,查询时找到最相关的。


本系列记录一位Android开发者转行AI Agent的完整学习过程,欢迎关注交流。

返回列表