【AI面试临阵磨枪-41】什么是 Embedding?余弦相似度原理?主流 Embedding 模型对比
一、面试题目请解释Embedding 是什么、余弦相似度原理并做主流 Embedding 模型对比适用场景、精度、速度、成本。二、知识储备1. 什么是 Embedding词 / 文本嵌入核心定义把自然语言文本字 / 词 / 句子 / 段落映射成低维稠密浮点向量用向量空间中的位置远近表达语义相似程度。通俗理解文字没法直接计算相似度Embedding 就是给每句话打一个语义坐标语义越相近向量在空间里距离越近。核心特点离散文本 → 连续向量语义相近 → 向量距离近维度固定如 512、1024、2048 维支持数学计算相似度、聚类、检索是RAG、检索、推荐、对话记忆的基础典型用途RAG 文档向量化入库 召回问答匹配、语义搜索文本聚类、标签归类意图匹配、知识库问答2. 余弦相似度原理公式向量 A、Bcos(θ)∥A∥∥B∥A⋅B分子两个向量点积分母两个向量模长乘积物理含义计算两个向量夹角余弦值只看方向相似度不关心向量长度。取值范围1方向完全相同 → 语义几乎一样0正交无关 → 语义不相关-1方向完全相反 → 语义对立为什么 RAG 只用余弦相似度不用欧式距离文本向量更关注语义方向不关注长度模长长文本、短文本向量模长差异大欧式距离会受长度干扰余弦天然归一化效果更适合语义匹配3. 主流 Embedding 模型对比分类开源轻量BERT、bge-small、bge-base、m3e国内闭源文心 Embedding、讯飞 Embedding、通义 Embedding海外闭源OpenAI text-embedding-ada-002 / 3-small / 3-large核心维度语义精度推理速度向量维度支持长文本成本价格私有化部署主流模型横向对比表模型精度速度向量维度长文本支持私有化适用场景BERT 原生一般快768短文本可部署简单语义匹配、原型BGE-small/base较高很快512/768一般可部署企业 RAG 通用首选、性价比高M3E多语言高中快512/1024较好可部署中英混合、知识库、检索OpenAI ada-002高中1536优秀不可海外业务、高精度检索OpenAI 3-small/large最高中慢512/3072极强不可专业文档、法律医疗、高精准 RAG阿里通义 Embedding高中1536强部分国内企业商用、中文优化文心 Embedding高中1536强部分中文场景、知识问答选型结论面试直接背私有化、本地部署、成本低优先BGE / M3E中文企业 RAG 通用BGE-base / M3E-base性价比最高追求最高召回精度、不介意调用成本OpenAI 3-large / 国内大厂闭源中英混合、多语言M3E 最优简单原型、测试原生 BERT 即可三、破局之道面试满分总结Embedding 是把自然语言转为语义向量的映射过程让文字可被数学计算余弦相似度通过向量夹角衡量语义方向相似度不受向量长度影响因此成为 RAG 语义检索标配。工程选型上能用开源就开源BGE/M3E做私有化追求极致精度再用大厂闭源 EmbeddingRAG 检索统一使用余弦相似度做匹配。四、极简代码余弦相似度 Embedding 向量计算Pythonimport numpy as np # 余弦相似度 def cos_similarity(vec1, vec2): v1 np.array(vec1) v2 np.array(vec2) dot np.dot(v1, v2) norm1 np.linalg.norm(v1) norm2 np.linalg.norm(v2) return dot / (norm1 * norm2) # 示例向量 a [0.1, 0.2, 0.3] b [0.12, 0.19, 0.31] print(cos_similarity(a, b))JavaScript// 向量点积 function dotProduct(v1, v2) { return v1.reduce((sum, val, i) sum val * v2[i], 0); } // 向量模长 function norm(v) { return Math.sqrt(v.reduce((sum, val) sum val * val, 0)); } // 余弦相似度 function cosSimilarity(v1, v2) { const dot dotProduct(v1, v2); const n1 norm(v1); const n2 norm(v2); return dot / (n1 * n2); } // 示例 const a [0.1, 0.2, 0.3]; const b [0.12, 0.19, 0.31]; console.log(cosSimilarity(a, b));
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2590850.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!