文本向量化深度解析Embedding模型选型与效果对比RAG系统里向量化是承上启下的一步。前面处理好的文本要转成向量才能存到向量数据库里。检索的时候用户的问题也要转成向量才能去库里找相似的内容。向量化的质量直接影响检索的准确率。Embedding模型好搜得就准。模型差再怎么优化分块和检索策略也没用。这一篇我们深入讲Embedding。它的原理是什么有哪些主流模型怎么选中文场景要注意什么以及怎么评估效果。Embedding到底是什么Embedding中文叫嵌入或者向量化。说的是同一件事把文字、图片、声音这些东西转换成一串数字向量。为什么要转成向量。因为计算机不理解文字的意思它只会算数。把文字变成向量以后计算机就能通过计算向量之间的距离来判断两段文字的意思像不像。向量的维度有多少就是这串数字有多少个数。有的模型是384维有的是1024维有的是3072维。维度越高能表达的信息越丰富计算和存储成本也越高。好的Embedding模型有这么几个特点。意思相近的文本向量距离近。意思不同的文本向量距离远。能捕捉到语义而不只是字面。对同义词、近义词、不同句式都能识别出相似性。简单说就是它真的懂语义而不只是在比字符串。主流Embedding模型有哪些现在可用的Embedding模型很多。我们分几类说。OpenAI系列最经典的就是text-embedding-ada-002。很长一段时间里它是大家的默认选择。效果不错调用方便价格也不贵。后来OpenAI又出了text-embedding-3-small和text-embedding-3-large。新版本效果更好还支持调整维度。3-large效果最好也最贵。3-small便宜效果也还可以。OpenAI的模型优点是稳定、效果有保障、接入简单。缺点是要花钱数据要出内网中文效果一般。开源模型系列开源模型现在越来越强了。BGE系列。北京智源的BGE中文效果很好。BGE-M3还支持多语言和多粒度。做中文场景BGE是首选之一。GTE系列。阿里巴巴的GTE中英文效果都不错。通用场景表现很稳。m3e系列。国内的m3e专门针对中文优化的中文效果很好体积也不大。Llama系列的Embedding。Meta的Llama也有对应的Embedding版本英文效果不错。中文一般。e5系列。微软的e5曾经的开源王者。现在被BGE和GTE追上了但仍然是不错的选择。开源模型的好处是可以自己部署数据不用出内网没有调用成本。缺点是要自己部署和维护需要GPU资源。国产模型系列国内大模型厂商基本都有自己的Embedding模型。通义Embedding。阿里云的中文效果不错调用方便。文心Embedding。百度的。智谱Embedding。智谱AI的。腾讯混元Embedding。国产模型的优势是中文效果好、接入方便、合规。用他们家其他服务的话配套用很顺。中文场景怎么选做中文的RAG选Embedding模型是个挺关键的事。很多国外的模型中文效果比英文差一截。我的经验是这样的。追求效果最好的优先试BGE-M3或者GTE。这两个是目前中文效果最好的开源模型之一。M3E也不错。不想自己部署的试试通义或者智谱的Embedding服务。中文效果比OpenAI的好调用也方便。对英文要求高同时有中文可以试试BGE-M3它支持多语言。或者OpenAI的3-large就是贵一点。小项目、数据量不大用BGE-small或者m3e-small就行。体积小速度快效果也够用。重要的事情说三遍一定要用自己的数据测。别人说哪个好那是别人的场景。你的文档是什么类型的用户问什么样的问题只有你自己知道。拿自己的数据做个评测哪个效果好用哪个。维度是不是越高越好很多人选Embedding模型第一个看维度。觉得维度越高效果越好。不能说完全错但也不绝对。维度确实很重要。维度太低表达能力有限很多细微的语义差别捕捉不到。维度上去了效果会提升。但提升是有边际效应的。从128维升到768维效果提升很明显。从768维升到1536维还能提升一些。从1536维升到3072维提升就很小了。再往上去可能就几乎没提升了。维度高了成本也高。存储是原来的两倍计算也是原来的两倍。数据量大了以后成本差不少。所以不用盲目追求高维度。选一个性价比合适的就行。普通场景768维到1024维就够了。对效果要求特别高的再上更高维度的。OpenAI的text-embedding-3系列还支持短向量。就是用高维度的模型生成向量然后截断成低维度的。效果比直接用低维度模型好一点。也是一个思路。怎么评估Embedding效果光看排行榜不够得自己测。最直接的评估方法准备一批测试数据。自己构造一些问题-答案对或者问题-相关文档对。然后用Embedding模型去检索看前K个结果里有多少是相关的。常用的指标有几个。Hit Rate命中率。前K个结果里至少有一个相关的比例。比如前3个结果里有相关的就算命中。越高越好。MRR平均倒数排名。看第一个相关结果排第几。排第一得1分排第二得0.5分排第三得0.33分。越高越好。NDCG。更复杂的指标考虑了所有相关结果的位置和相关性等级。不用都算。Hit Rate和MRR就够用了。测的时候一定要用自己真实的用户问题。自己编的问题跟真实用户问的不一样测出来的结果也不准。如果没有真实的用户问题可以让大模型根据你的知识库生成一些模拟问题。比没有强但还是不如真实的准。几个实用技巧最后说几个提升Embedding效果的小技巧。第一个用同领域的模型。通用Embedding模型是用通用数据训练的。如果你做的是医疗、法律、金融这种专业领域用领域微调过的模型效果会好很多。第二个查询侧微调。有时候文档侧的向量是固定的不好改。可以在查询侧做文章。比如用HyDE先用大模型生成一个假设的答案再用这个答案去检索。有时候效果比直接用问题检索好。第三个查询改写。用户的问题可能问得不好太口语、太简短、太模糊。让大模型把用户的问题改写一下改得更规范、更完整再去检索。也能提升效果。第四个多查询。让大模型把用户的问题扩展成几个不同问法分别去检索然后把结果合并。召回率会高一些就是成本高了几倍。这些都是检索优化的技巧后面会专门讲。这里先提一下有个印象。下一篇我们讲检索策略。向量检索、关键词检索、混合检索各有什么优缺点什么时候用哪种。