ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Embedding 有哪几种算法?

Embedding 有哪几种算法? 一、 Embedding 的核心本质与表征范式在信息检索、自然语言处理NLP以及大模型检索增强生成RAG系统中计算机无法直接理解人类的自然语言字符。Embedding 算法充当了自然语言与高维几何计算之间的数学翻译器。1. 向量空间模型的核心假设所有现代 Embedding 算法均建立在语言学中的“分布假说Distributional Hypothesis”之上一个词的语义由其经常共现的上下文环境决定You shall know a word by the company it keeps。在数学层面Embedding 算法旨在构建一个从离散高维离散空间到低维实数向量空间的映射函数f: V ➔ R^d (其中 d 远小于词表规模 |V|)在构造出的稠密向量空间中两个向量的几何相对关系代表了其语义关联度余弦相似度Cosine Similarity衡量两个向量在高维空间中的夹角范围在[-1, 1]之间最关注语义方向。Cosine_Similarity(A, B) (A · B) / ( ||A|| × ||B|| )点积Dot Product / Inner Product若向量预先经过 L2 归一化模长为 1点积等价于余弦相似度计算复杂度最低。欧氏距离Euclidean Distance / L2 Distance衡量高维空间两点间的绝对直线距离。┌─────────────────────────────────────────────────────────┐ │ Embedding 技术全景演进路线 │ └────────────────────────────┬────────────────────────────┘ │ ┌────────────────────────────────────┼────────────────────────────────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 离散统计时代 │ │ 静态词向量 │ │ 动态上下文 │ │ - One-Hot │ │ - Word2Vec │ │ - ELMo │ │ - TF-IDF │ │ - GloVe │ │ - BERT │ │ - LSA / SVD │ │ - FastText │ │ - RoBERTa │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ │ │ └────────────────────────────────────┼────────────────────────────────────┘ │ ┌────────────────────────────────────┴────────────────────────────────────┐ ▼ ▼ ┌──────────────────────────────┐ ┌──────────────────────────────┐ │ 句子/段落级对比学习双塔 │ │ 晚期交互与长上下文新范式 │ │ - SBERT (Siamese Network) │ │ - ColBERT (Late Interaction) │ │ - SimCSE (对比学习框架) │ │ - Matryoshka (MRL 套娃维度) │ │ - BGE-M3 / OpenAI TE3 / E5 │ │ - Late Chunking (全篇再分块) │ └──────────────────────────────┘ └──────────────────────────────┘二、 第一代离散与统计频次表征Discrete Statistical Embeddings在深度学习普及之前文本表征主要依赖于基于规则和频次统计的离散方法。1. 独热编码One-Hot Encoding原理机制为词表中的每一个词分配一个唯一的整数索引并表示为一个维度等于词表大小|V|的向量。该向量中仅对应索引位置的值为 1其余所有位置全为 0。词表: [苹果, 香蕉, 手机, 电脑] 苹果 ➔ [1, 0, 0, 0] 香蕉 ➔ [0, 1, 0, 0] 手机 ➔ [0, 0, 1, 0]致命缺陷维度灾难Curse of Dimensionality词表通常包含数十万个词导致向量维度极高且极端稀疏99.99% 为 0造成存储与计算浪费。正交隔离与语义鸿沟任意两个不同词向量的点积恒等于 0两两正交完全无法计算“苹果”与“香蕉”之间的语义相近性。2. TF-IDF词频-逆文档频率原理机制TF-IDF 是一种加权统计方法用于评估一个词对于一个文档集中的某篇文档的重要程度词频Term Frequency, TF一个词在某文档中出现的频次与文档总词数的比值。逆文档频率Inverse Document Frequency, IDF总文档数除以包含该词的文档数再取对数。用于压制“的”、“是”、“在”等高频无信息量的虚词权重。TF(t, d) (词 t 在文档 d 中出现的次数) / (文档 d 的总词数) IDF(t, D) log( (语料库中文档总数 |D|) / (包含词 t 的文档数 1) ) TF-IDF(t, d, D) TF(t, d) × IDF(t, D)特性分析优点无需复杂训练计算迅速在精确关键词匹配场景如型号、编号检索中表现稳定。缺点依然是高维稀疏向量不支持同义词理解无法识别“手机”和“移动电话”是同一概念。3. LSA / LSI潜在语义分析与 SVD 降维原理机制LSALatent Semantic Analysis首次实现了由“稀疏统计”向“低维稠密向量”的跨越。首先构建一个规模为词汇数(M) × 文档数(N)的词频或 TF-IDF 共现矩阵X。对矩阵X进行奇异值分解SVD, Singular Value DecompositionX U × Σ × V^T截断保留前k个最大的奇异值将词与文档同时投影到k维的隐性语义空间Latent Space。特性分析成功挖掘出了词语与主题之间的低维几何关联。缺点是 SVD 奇异值分解的时间复杂度达到O(min(M*N^2, M^2*N))在百万级规模语料库上计算成本过高无法在线实时增量更新。三、 第二代浅层神经网络与静态稠密词向量Static Dense Word Embeddings2013 年Mikolov 等人提出Word2Vec正式拉开了基于神经网络学习分布式稠密表征Distributed Dense Representation的黄金时代。1. Word2VecCBOW 与 Skip-Gram 架构Word2Vec 的核心是使用浅层单隐层前馈神经网络在大规模无标注纯文本上自监督学习词向量。【CBOW 模型 (上下文预测中心词)】 【Skip-Gram 模型 (中心词预测上下文)】 上下文词输入: 中心词输入: [ w_(t-2), w_(t-1), [ w_t ] w_(t1), w_(t2) ] │ │ ▼ ▼ (投影层累加求平均) (投影层映射) [ 隐层投影 ] [ 隐层投影 ] │ │ ▼ ▼ 预测中心词: 预测周围上下文: [ w_t ] [ w_(t-2), w_(t-1), w_(t1), w_(t2) ]A. CBOWContinuous Bag-of-Words任务目标根据中心词周围的滑动窗口上下文词语预测中心词自身。特性对高频词友好训练速度快投影层直接对上下文词向量求均值。B. Skip-GramContinuous Skip-gram任务目标根据当前输入的中心词预测其周围窗口内出现的上下文词。特性在小规模语料或包含大量罕见词Rare Words的场景下效果更佳。C. 训练加速关键技术负采样Negative Sampling, NEG传统 Softmax 计算分母需要遍历整个词表数十万词计算量极大P(w_o | w_i) exp(v_wo · v_wi) / ∑ [ exp(v_w · v_wi) ] (遍历词表中所有 w)负采样机制将多分类问题转化为多二分类逻辑回归问题。对于中心词w_i和真实上下文目标词w_o正样本同时从词表中根据概率分布随机抽取k个非上下文词负样本目标损失函数优化公式: L_NS log σ(v_wo · v_wi) ∑ [ log σ(-v_wj · v_wi) ] (遍历 j1 到 k) 其中 σ(x) 1 / (1 e^(-x)) 为 Sigmoid 函数计算复杂度直接从O(|V|)下降至O(k)通常k5~20使得在百亿词级语料上的超高速预训练成为现实。2. GloVeGlobal Vectors for Word RepresentationWord2Vec 的主要缺陷在于它依赖于滑动窗口内的局部统计未能直接利用整个语料库的全局共现频次矩阵。斯坦福大学于 2014 年提出的GloVe结合了 LSA 的全局共现统计与 Word2Vec 的局部上下文窗口优势。核心数学模型GloVe 发现两个词i和j与探针词k的共现概率之比能够精准表达词义关系。模型构建了如下对数双线性损失函数J ∑ f(X_ij) × ( w_i^T × w_j b_i b_j - log(X_ij) )^2X_ij词i与词j在全局语料库中共同出现的频次w_i, w_j词向量b_i, b_j标量偏置项f(X_ij)权重衰减函数。限制极大共现频次的无意义权重如虚词共现避免损失函数被极端值主导。GloVe 在词汇类比任务如King - Man Woman Queen的线性几何性质上表现优异。3. FastText子词Subword与形态学表征由 Facebook 于 2016 年推出的FastText针对传统词向量无法解决的未登录词OOV, Out-of-Vocabulary缺陷进行了根本性重构。原理机制引入字符级 N-gram以英文单词apple$n3$为例FastText 会为其添加特殊边界字符和并提取其所有的字符级子词Subwordsapple 的 3-gram 集合: [ap, app, ppl, ple, le, apple]单词apple的最终词向量是其所有包含的 Subword 向量的代数和。核心优势彻底解决 OOV 问题遇到测试集中的全新词汇如从未出现过的applesauce模型可以通过拼凑子词向量组合出一个高可靠度的语义向量。形态学感知能力极强天然能够捕获词根、前缀、后缀如-ing,un-,-tion的语法语义特征对德语、土耳其语等多语素语言尤其有效。静态词向量的核心痛点一词多义Polysemy失效无论是 Word2Vec、GloVe 还是 FastText其向量查找本质上都是查一张固定的词典Embedding MatrixEmbedding(苹果) ➔ 始终对应一个固定维度的静态实数数组然而在真实语境中语境 A“我今天买了两斤苹果吃。”指代水果语境 B“苹果发布了新款智能手机。”指代科技公司静态向量将这两个截然不同的含义强行压缩到了同一个向量点中无法根据上下文进行动态消歧促使技术体系向上下文感知架构迈进。四、 第三代预训练大模型与动态上下文表征Contextual Dynamic Embeddings2018 年NLP 进入了以深度双向编码器为标志的上下文嵌入时代。1. ELMoEmbeddings from Language ModelsELMo 首次系统性解决了静态向量的“一词多义”问题。原理机制采用多层双向长短期记忆网络Bi-LSTM在大规模语料上进行无监督语言模型预训练同时从左往右、从右往左预测下一个词。在下游任务中提取词向量时不再查表而是将整句话输入网络。将每层 Bi-LSTM 输出的隐状态进行加权求和生成随当前语境动态变化的 Contextualized Word Embedding。2. BERTBidirectional Encoder Representations from TransformersGoogle 于 2018 年提出的BERT彻底颠覆了 NLP 格局。输入序列: [CLS] 苹果 是 一种 美味的 水果 [SEP] │ │ │ │ │ │ │ Transformer: ┌────────────────────────────────────────────────────────┐ 编码器各层: │ 多层自注意力机制 (Multi-Head Self-Attention) │ └────────────────────────────────────────────────────────┘ │ │ │ │ │ │ │ 输出向量: H_[CLS] H_苹果 H_是 H_一种 H_美味 H_水果 H_[SEP]原理机制原生全双向自注意力Bi-directional Self-Attention利用 Transformer Encoder 结构序列中的每个词在计算其表示时都能直接且不受限地与句子中所有其他词进行全量注意力交互。掩码语言模型MLM, Masked Language Model随机遮蔽 15% 的 Token 并让模型基于剩余上下文进行恢复预测使每个 Token 的表征深度吸收了左右两侧的全局上下文语义。如何从 BERT 中提取句子向量在 BERT 架构下提取单句表征常见以下三种方式取[CLS]标记的隐藏层向量预训练时[CLS]用于下句预测NSP包含一定整句信息。所有 Token 向量均值池化Mean Pooling计算整句所有 Token 对应输出向量的平均值实验证明表征质量通常优于单纯取[CLS]。最大池化Max Pooling取各维度特征的最大值。局限性原生 BERT 向量坍塌Anisotropy Problem学术界研究发现直接从原生 BERT 或 RoBERTa 中取出的句向量在进行余弦相似度计算时效果非常差甚至弱于 GloVe 词向量的简单平均。其根本原因在于向量各向异性Anisotropy由于高频词与词频偏差预训练生成的上下文隐空间向量在几何分布上退化收缩到了一个极狭窄的高维锥形区域Cone内使得任意两句原本不相关的文本计算出的余弦相似度均在 0.8 以上严重失去了区分度。五、 第四代面向句子检索的密集嵌入Dense Sentence Embeddings为了解决原生 Transformer 向量的各向异性问题并使其适应高并发检索场景句子级专用嵌入算法应运而生。1. Sentence-BERTSBERT孪生网络与检索加速如果直接使用原生 BERT 比较两段文本的相似度必须将两段文本拼接为[CLS] 句子 A [SEP] 句子 B [SEP]输入模型进行交叉注意力计算Cross-Encoder。计算复杂度危机若知识库中有 10,000 条候选文档当用户发起一次查询时Cross-Encoder 需要进行 10,000 次笨重的 Transformer 全向计算单次检索延迟长达数秒在工业级生产环境中完全无法落地。SBERT 双塔架构Bi-Encoder2019 年 Reimers 等人提出了Sentence-BERT采用孪生网络Siamese Network结构句子 A ──► [ BERT 共享权重塔 ] ──► [ Mean Pooling ] ──► 句向量 u (d维) │ 计算 Cosine(u, v) │ 句子 B ──► [ BERT 共享权重塔 ] ──► [ Mean Pooling ] ──► 句向量 v (d维)核心优势预计算与毫秒级检索知识库中的数亿条文档向量可以在离线阶段预先全部计算完毕存入向量数据库。在线检索时只需对用户 Query 进行一次单塔推理生成向量u随后直接使用高维近似近邻搜索算法如 HNSW、IVF-PQ在毫秒级内完成大规模余弦相似度比对。分类与回归双重目标训练通过在微调阶段引入推导损失如将(u, v, |u - v|)拼接后接入分类器强制让句向量在高维空间中按照语义逻辑分离开来有效缓解了原生 BERT 的各向异性。2. SimCSE对比学习Contrastive Learning框架2021 年陈丹琦团队提出的SimCSESimple Contrastive Sentence Embedding奠定了现代句子级 Embedding 预训练的标准范式。其核心逻辑是拉近相似样本在向量空间中的距离推远无关样本的距离。【SimCSE 对比学习机制】 原始句子 x_i │ ┌────────────────┴────────────────┐ │ (输入同一 BERT 模型不同 Dropout 掩码) │ ▼ ▼ 向量 h_i 向量 h_i^ (正样本锚点) (正样本配对) │ │ └──────────────┬──────────────────┘ │ 计算 Cosine 相似度 (强制拉近) ▼ 对比损失函数 (InfoNCE) ▲ │ 强制推远其他 batch 内负样本 ┌──────────────┴──────────────────┐ │ │ 向量 h_j 向量 h_k (负样本句子 j) (负样本句子 k)A. 无监督 SimCSEUnsupervised巧妙的数据增强策略不需要任何人工标注或同义改写模型直接将同一个句子输入 BERT两次。由于 Transformer 内部默认启用了Dropout随机神经元失活通常概率为 0.1同一个句子在两次前向传播中会产生略微不同的输出向量h_i和h_i^。将(h_i, h_i^)视为语义完全相同的正样本对并将当前 Mini-batch 内的所有其他句子视为负样本对。B. 目标损失函数InfoNCE Loss对于 Batch 内的样本i其损失函数定义为L_i - log [ exp( sim(h_i, h_i^) / τ ) / ∑ exp( sim(h_i, h_j^) / τ ) ] (其中分母对当前 batch 内所有样本 j 从 1 到 N 求和τ 为温度超参数)C. 理论解释对齐度Alignment与均匀度UniformitySimCSE 论文证明优异的 Embedding 空间必须同时满足两个属性对齐度Alignment相似文本生成的向量必须在空间中紧密贴合距离接近 0。均匀度Uniformity全量数据的向量应该均匀地分散在高维单位超球面上保留最大信息熵彻底消除了各向异性缺陷。3. 当前主流前沿模型家族A. BGEBAAI General Embedding系列与 BGE-M3由北京智源人工智能研究院推出的 BGE 系列长期霸榜海内外评测基准。BGE-M3 突破Multi-Linguality多语言性支持 100 全球语种的高精度跨语言检索。Multi-Granularity多粒度最大上下文支持扩充至 8192 Tokens。Multi-Functionality混合检索三合一单一模型内部同时输出Dense稠密向量、Sparse类 BM25 稀疏词权向量和Multi-VectorColBERT 细粒度多向量使得单次推理即可完成多路召回融合。B. OpenAI Text-Embedding 系列text-embedding-3-small/large与 MRLOpenAI 发布的第三代嵌入模型引入了前沿的套娃表示学习Matryoshka Representation Learning, MRL技术。核心机理在损失函数中对向量的前d维如 256、512 维以及全维度如 1536、3072 维同时进行监督约束。实际价值开发者可在客户端直接物理截断Slice向量例如直接取向量的前 512 维使用。其性能仅微幅下滑 1~2%但能为向量数据库直接减少66% 的内存消耗与索引存储成本。C. E5Embedding from bidirectional Encoder representations微软开源的 E5 模型首次在预训练中确立了任务指令前缀规范。在输入给模型前通过在文本头部添加微小的自然语言前缀如query: ...或passage: ...引导双塔网络自适应非对称检索场景中“短问长答”的语义分布不对称问题。六、 第五代多粒度交互、多模态与长上下文新范式随着 RAG 和多模态大模型的爆发传统“将整段甚至整篇文档强行压缩为一个固定维度单一向量”的模式遭遇瓶颈。1. ColBERT 与晚期多向量交互Late Interaction双塔模型如 SBERT/BGE速度极快但会丢失微观局部匹配细节Cross-Encoder 精度极高但计算速度无法接受。ColBERT在两者之间提出了折中架构。【单向量 Bi-Encoder】: Query ➔ [Encoder] ➔ 单一向量 Q (1536维) ──┐ ├─► 计算单次 Cosine 相似度 (微观细节丢失) Doc ➔ [Encoder] ➔ 单一向量 D (1536维) ──┘ 【ColBERT 晚期交互 (Late Interaction)】: Query ➔ [Encoder] ➔ 词级矩阵: [q_1, q_2, ..., q_m] (每个词一个向量) │ │ │ ▼ ▼ ▼ Doc ➔ [Encoder] ➔ 词级矩阵: [d_1, d_2, ..., d_n] (每个词一个向量) │ ▼ 核心 MaxSim 算子 Score(Q, D) ∑ [ max ( q_i · d_j ) ] (对 Query 的每个词在 Doc 全词中找最大点积再求和)特性优势离线阶段依然可以预先将文档编码为多向量矩阵并建立索引。在检索阶段通过高度优化的矩阵点积与MaxSim 操作符在保持毫秒级响应的同时完全保留了词与词之间的局部对齐能力在复杂多跳检索中精度显著压制常规双塔。2. Late Chunking长文本晚期分块技术由 Jina AI 在 2024 年底提出的Late Chunking正在重塑 RAG 系统的数据切分与向量化流水线。传统 Early Chunking 的语义断裂痛点传统的处理流程是“先切分文档再计算向量”长文本 ──► 物理切分为 Chunk 1 和 Chunk 2 ──► 分别单独输入 Embedding 模型缺陷如果 Chunk 2 中出现代词“该公司在上个季度亏损”由于在切分时已经失去了 Chunk 1 中“该公司指代甲骨文”的前置信息Chunk 2 的向量表征将缺失核心主语造成永久性的语义丢失。Late Chunking 运作流水线Late Chunking 彻底倒置了这一顺序“先整体输入编码再在隐状态层分块”1. 完整长文档 (8000 Tokens) ──► 整体送入支持长文本的 Transformer 模型 │ ▼ 全文注意力计算 (所有词进行全局交互) 2. 提取最后一个隐层状态矩阵: [ h_1, h_2, ..., h_8000 ] │ ▼ 根据原始切分边界直接对隐层切片 3. Chunk 1 隐层切片: [h_1 ... h_500] ──► Mean Pooling ──► 向量 1 (包含全局上下文) Chunk 2 隐层切片: [h_501 ... h_1000]──► Mean Pooling ──► 向量 2 (代词已精准吸收主语)实际收益切分出来的每一个子 Chunk 向量不仅精炼聚焦同时由于在 Transformer 隐层中吸收了整篇文档的注意力流动完全克服了传统切块造成的上下文孤岛与语义断裂问题。3. 多模态统一对齐嵌入CLIP 与 SigLIP除了纯文本以 OpenAICLIPContrastive Language-Image Pre-training和 GoogleSigLIP为代表的多模态嵌入算法打通了文本与图像之间的语义壁垒。图像输入 ──► [ Vision Transformer (ViT) ] ──► 图像特征向量 I_i │ 对齐同一特征空间 (余弦相似度最大化) │ 文本描述 ──► [ Text Transformer Encoder ] ──► 文本特征向量 T_i双塔对比机制在同一个高维空间内图像向量与对应描述文字向量的夹角接近 0而与其他图像或文字相互排斥正交。应用落地使得系统天然具备以文搜图、以图搜图以及图文混合跨模态检索的能力。七、 工业级选型决策矩阵与 MTEB 评测体系面对种类繁多的 Embedding 算法与模型架构师应当依据业务场景的硬性约束进行选型。1. 主流 Embedding 技术全景横向对比表征时代 / 核心算法向量类型上下文感知跨语种支持相对计算成本适用典型业务场景TF-IDF / BM25高维稀疏否弱极低 (CPU)精确字段检索、日志过滤、混合检索之词频路Word2Vec / FastText低维稠密 (词级)否弱低 (CPU)快速词汇类比、轻量意图分类、冷启动冷热分流原生 BERT / RoBERTa词/句隐状态是中等中等 (GPU)序列标注、实体识别 (NER)、不推荐直接取向量算相似度SBERT / SimCSE低维稠密 (句级)是良好中等 (GPU)基础文本去重、轻量知识库、标准 FAQ 匹配BGE-M3稠密稀疏多向量是极强 (100语种)较高 (GPU)生产级 RAG 知识库、跨语言多路融合检索OpenAI TE3 (MRL)可变维度稠密是强API 调用 (商用)云原生知识库、对存储成本极敏感的大规模向量库ColBERT (Late Interaction)词级多向量矩阵是良好高 (存储与算力较高)超高精度问答、多跳深度信息检索、复杂判例匹配Late Chunking (Jina)融合长程稠密向量是 (篇章级)强中高 (长序列 GPU)结构复杂的大部头文档研报、技术规范手册解析2. 评测标准权威 MTEBMassive Text Embedding Benchmark在挑选具体的开源模型权重时不应仅依赖官方宣传应参考由 Hugging Face 维护的MTEB 权威排行榜。MTEB 涵盖了八大核心评测任务维度Retrieval信息检索在海量语料库中检索相关文档核心看NDCG10指标RAG 场景最关键权重Semantic Textual Similarity (STS)句子相似度打分与人类标注的相关系数Spearman 相关度Classification文本分类向量作为特征输入逻辑回归分类器的准确率Clustering聚类如对新闻或短文本按照主题进行无监督聚类V-measureReranking重排序对初步召回结果的精准排序能力Pair Classification对分类判断两个句子是否为同义或蕴含关系Summarization文本摘要Bitext Mining双语挖掘跨语言句对匹配。八、 生产级 Python 实战多模型统一向量化与维度裁剪下面提供一份基于 Python 与sentence-transformers库的完整代码实战演示如何使用现代化 Embedding 模型完成动态添加前缀指令批量推理与向量生成基于 MRL套娃表示学习的手动维度物理裁剪向量 L2 归一化与余弦相似度计算。1. 环境准备pip install sentence-transformers torch numpy scikit-learn2. 核心源码实现import numpy as np import torch import torch.nn.functional as F from sentence_transformers import SentenceTransformer from typing import List class ProductionEmbeddingEngine: 生产级向量化服务引擎支持批处理、指令前缀与 MRL 维度裁剪 def __init__(self, model_name: str BAAI/bge-small-zh-v1.5, target_dim: int None): print(f正在加载向量化模型: {model_name} ...) # 优先使用 GPU若无则使用 CPU self.device cuda if torch.cuda.is_available() else cpu self.model SentenceTransformer(model_name, deviceself.device) self.target_dim target_dim def encode_queries(self, queries: List[str]) - np.ndarray: 对用户查询Query进行向量化通常建议附带任务前缀引导 # BGE 等前沿模型对 Query 推荐添加特定前缀以增强非对称检索精度 instruction 为这个句子生成表示以用于检索相关文章 prefixed_queries [f{instruction}{q} for q in queries] return self._encode_and_process(prefixed_queries) def encode_documents(self, documents: List[str]) - np.ndarray: 对知识库文档Passage/Document进行向量化无需添加 Query 前缀 return self._encode_and_process(documents) def _encode_and_process(self, texts: List[str]) - np.ndarray: # 1. 批量计算基础向量 embeddings self.model.encode( texts, batch_size32, show_progress_barFalse, normalize_embeddingsFalse # 先不归一化留待后续维度裁剪后再处理 ) # 2. 如果指定了 MRL 维度裁剪如将 512 维裁剪至 256 维 if self.target_dim is not None and self.target_dim embeddings.shape[1]: # 物理截断多余维度 embeddings embeddings[:, :self.target_dim] # 3. 必须重新进行 L2 归一化确保裁剪后向量模长为 1 norms np.linalg.norm(embeddings, axis1, keepdimsTrue) # 防止除以零 norms np.where(norms 0, 1e-12, norms) normalized_embeddings embeddings / norms return normalized_embeddings def compute_similarity_matrix(query_vecs: np.ndarray, doc_vecs: np.ndarray) - np.ndarray: 由于向量已经过 L2 归一化余弦相似度直接等价于矩阵点积 (Q D.T) return np.dot(query_vecs, doc_vecs.T) # 运行测试与验证 if __name__ __main__: # 初始化引擎测试将其原生 512 维向量裁剪至 256 维 engine ProductionEmbeddingEngine(model_nameBAAI/bge-small-zh-v1.5, target_dim256) # 模拟知识库中的三份技术文档 docs [ Apache Tika 是一个开源的文档内容提取工具包能够解析 PDF、Word 和 PPT 等多种文件格式。, 在 RAG 架构中数据分块策略Chunking对后续的语义检索精度有着决定性的影响。, 深度学习模型训练通常依赖于 GPU 并行计算与反向传播算法进行梯度更新。 ] # 模拟用户的问题 Query user_query [如何从各种格式的 PDF 和 Office 文档中提取正文内容] # 执行向量化 doc_embeddings engine.encode_documents(docs) query_embeddings engine.encode_queries(user_query) print(f文档向量生成完毕矩阵维度: {doc_embeddings.shape}) print(f查询向量生成完毕矩阵维度: {query_embeddings.shape}) # 计算匹配相似度 sim_scores compute_similarity_matrix(query_embeddings, doc_embeddings)[0] print(\n 相似度匹配结果 ) for idx, score in enumerate(sim_scores): print(fDoc [{idx 1}] 匹配得分: {score:.4f} | 内容: {docs[idx]}) best_match_idx int(np.argmax(sim_scores)) print(f\n最佳匹配结果为: Doc [{best_match_idx 1}] (得分最高))九、 总结与未来趋势展望回顾 Embedding 技术的演进脉络其演化的核心驱动力始终围绕着两个基本矛盾语义表达深度 vs 计算复杂度从最初无法表达语义的稀疏 One-Hot到静态查找的 Word2Vec再到依赖庞大 Transformer 实时计算的 BERT/SBERT算法不断在表达精度与推理延迟之间寻找帕累托最优解。粗粒度全篇压缩 vs 局部细粒度对齐从“整句/整段单向量”向 ColBERT 多向量延迟交互以及 Late Chunking 的演进反映了工业界对复杂语境下细粒度局部信息捕捉的迫切需求。未来的关键演化方向包括原生多模态融合Native Multimodal Embedding不再是通过桥接对齐文字与图像而是由单一基础模型在原生自回归训练中直接吞吐文本、语音、视频与代码的多模态统一表示。超长上下文与极端压缩伴随 100K~1M Token 上下文的普及如何在保持极高检索精度的前提下将几万字的长篇规章压缩为更小维度的轻量表征成为降低向量数据库成本的关键工程赛道。与大模型推理结合的动态表示传统双塔表示静态不变未来 Embedding 将更多与小参数量推理模型联动使得表征向量能够随着交互多轮对话的历史动态重构实现真正意义上的自适应情境感知。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进