ARTICLE DETAIL

资讯详情

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

11 向量到底是怎么来的?Embedding 原理,面试官问一次挂一次

11 向量到底是怎么来的?Embedding 原理,面试官问一次挂一次 面试官你做的 RAG 知识库用户问问题你拿问题去向量库搜。我问你——向量是什么候选人就是……把文字变成数字。怎么变的用 Embedding 模型。Embedding 模型做了什么为什么苹果和香蕉的向量像和编程不像候选人开始冒汗。他调过 OpenAI 的 embedding 接口、用过 pgvector但向量是怎么来的这个问题他从没想过。这是 AIGC 面试里最容易被问穿的基础题。因为 RAG 的整个地基就是 Embedding你不懂向量从哪来就不懂 RAG 为什么有效、什么时候失效。这篇一次讲透。一句话Embedding 是把语言变成坐标Embedding嵌入的本质是把一段文字词、句、段映射成一个高维向量一串数字让语义相近的文字向量距离也近。苹果 → [0.12, -0.34, 0.56, ...]1536 维香蕉 → [0.15, -0.30, 0.52, ...]编程 → [-0.41, 0.23, 0.08, ...]你把这串数字想象成语义坐标。苹果和香蕉在坐标里挨得近因为它们语义相近都是水果编程离它们远因为语义无关。为什么语义能用坐标表示因为训练 Embedding 模型时用了海量语料让模型学会了经常一起出现的词、用法相似的词向量应该靠得近。这是统计规律不是人为设计的规则。Embedding 模型是怎么训练的三句话讲明白不用背公式理解思路就行。Embedding 模型的训练思想是对比学习1. 拿海量文本对比如苹果和香蕉、苹果和水果这些是正样本语义相关2. 拿苹果和编程这种是负样本语义无关3. 训练目标正样本的向量距离拉近负样本的向量距离推远训练完模型就学会了什么样的文字在语义上相似。你输入任何新文字它都能给你一个符合这个规律的向量。换个说法Embedding 模型是一个语义压缩器把语言压缩成坐标。坐标的每个维度可以理解为它学到的某个语义特征——但没人能说清每个维度具体代表什么这就是它黑盒的地方。相似度怎么算三种算法一次讲清向量有了怎么判断像不像三种主流算法余弦相似度Cosine看两个向量的方向是否一致不管长度。cos (A·B) / (|A| × |B|)范围 -1 到 1越接近 1 越相似。这是最常用的pgvector、Milvus 默认支持。内积IP直接算对应维度乘积之和。带长度信息一般要求向量先做 L2 归一化长度变成 1再用。欧氏距离L2算两个向量在空间里的直线距离越小越相似。对向量长度敏感适合长度有意义的场景。面试怎么选主流 Embedding 模型OpenAI、BGE、m3e的向量都建议用余弦相似度如果向量做过归一化内积和余弦等价。答默认用余弦归一化后内积也行就够了。向量库检索十万条数据怎么秒回向量算好了存哪怎么搜暴力做法把库里的向量全部算一遍距离取最近的 Top-K。数据量小10 万以内完全够用简单直接。数据量大了就得建索引。主流两种HNSW分层可导航小世界图把向量组织成多层图搜索时从顶层粗跳到底层细找。百万级数据毫秒返回是目前最主流的 ANN近似最近邻算法。IVFFlat倒排文件先聚类分桶搜索时只查最近的几个桶。速度更快但召回率略降而且需要先训练聚类数据要够多。-- pgvector 建 HNSW 索引 CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops);// Spring AI 里指定检索算法 VectorStore vectorStore PgVectorStore.builder() .dataSource(dataSource) .dimensions(1536) .distanceType(VectorDistanceType.COSINE_DISTANCE) .indexType(IndexType.HNSW) .build();记住一个关键点向量检索是近似的。它返回的是最像的不是精确的。所以 RAG 的检索结果天然有噪声——这也是为什么后面要讲混合检索和重排第 17 篇。Embedding 不止用于检索四个应用场景面试官问Embedding 还能干嘛你答出检索之外的应用就是加分项。场景一文本聚类。把一堆客服工单向量化聚类算法一跑自动归成物流问题、退换货、发票几个簇不用人工打标签。这是 Embedding 最成熟的应用之一。场景二语义去重。用户反馈物流太慢了和快递怎么还没到字面不同但语义相同。向量相似度 0.95 的归为重复做舆情分析、评论聚合很实用。场景三推荐。用户的历史行为向量化找相似向量的物品推荐。电商猜你喜欢的早期版本就是这么干的——用户向量和商品向量算相似度。场景四异常检测。正常文本的向量分布是集中的突然出现一个离所有簇都很远的向量大概率是异常输入乱码、恶意 Prompt。可以在入口做一道向量距离检查。一个共通的面试话术Embedding 把非结构化文本变成了可计算的数字所有传统机器学习的玩法聚类、分类、去重、推荐都能在向量上重做一遍。维度越高越好吗聊聊 1536 维的秘密很多人以为向量维度越高越精确。对也不对。高维度的好处能表达更丰富的语义细节区分度更高。高维度的代价存储翻倍1536 维 float 数组 6KB/条、计算变慢、而且高维空间有维度灾难——维度高了之后所有向量的距离都趋于相等检索区分度反而下降。所以 OpenAI 的 text-embedding-3 系列支持降维1536 维可以降到 1024、512、甚至 256效果损失很小。选维度的原则够用就行别盲目上高维。面试官如果追问维度怎么定答跟 Embedding 模型的输出一致模型输出多少维就是多少维想降维用模型自带的 dimensions 参数别自己 PCA 硬降。选 Embedding 模型三个考量维度面试官可能追问你项目里 Embedding 模型怎么选的第一语言支持。中文场景优先选中文表现好的模型BGE智源、m3e、text-embedding-3OpenAI 中文也还行。英文场景 OpenAI 的 text-embedding-3-small 性价比高。第二维度与成本。维度越高信息越丰富但存储和计算成本越高。1536 维是常见配置OpenAI 支持把维度降到 256/512/1024 省成本。自部署 BGE 免费数据不出内网合规场景必须自部署。第三向量一致性。这是最容易踩的坑写入和查询必须用同一个 Embedding 模型。你建库时用 A 模型查询时换了 B 模型两个模型的向量空间不一样检索结果全乱。换模型 全量重算向量。 面试官视角的标准回答如果面试官问Embedding 是什么RAG 为什么依赖它Embedding 是把文字映射成高维向量的技术核心特性是语义相近的文字向量距离也近。比如苹果和香蕉的向量接近和编程的向量远。brbr原理上Embedding 模型通过对比学习训练用语义相关的文本对当正样本、无关的当负样本让模型学会把相近语义映射到相近坐标。训练完输入任何文字都能得到符合这个规律的向量。brbr相似度计算最常用余弦相似度看向量方向是否一致。向量库检索用 ANN 近似算法HNSW 是主流百万级数据毫秒返回。brbrRAG 依赖 Embedding 是因为用户问题要变成向量才能去向量库检索文档也要提前向量化入库。两边用同一个模型保证向量空间一致。检索出相关片段后再交给大模型生成回答。brbr工程上注意三点中文场景选 BGE/m3e合规场景自部署写入和查询必须用同一个 Embedding 模型换模型要全量重算向量检索是近似的结果有噪声生产上需要混合检索和重排来提升质量。下一篇聊 RAG 检索质量的终极方案——混合检索 重排。BM25 保精确、向量保语义RRF 怎么融合为什么精排能让效果翻倍这是 RAG 系列的收官之篇。
返回列表