当前位置: 首页 > news >正文

Embedding入门概述

概述

Embedding,嵌入,一种将离散的符号数据(如单词、句子、图像等)映射到连续的向量空间中的技术,这些向量能够捕捉数据之间的语义、结构等关系。就是把原本难以直接处理的符号数据,转换成计算机更容易理解和操作的数值向量形式。可用于语义搜索、相似性计算和其他NLP任务。

Embedding生成涉及三个主要阶段:

  • 文档准备阶段
  • 批量处理阶段
  • 向量生成阶段

技术特点,概括来说主要有三点:

  • 语义保留:通过训练使向量空间中的位置反映数据的内在关系;
  • 通用性与迁移性:同一嵌入模型可服务于多种下游任务(如分类、聚类、推荐);
  • 降维与特征提取:将高维稀疏数据(如独热编码的文本)压缩为低维稠密向量,减少计算复杂度。

应用场景

包括:

  • NLP
    • 机器翻译:
    • 问答系统:智能客服系统;
    • 情感分析:
    • 文本分类:新闻分类、垃圾邮件识别;
    • NER:命名实体识别,通过嵌入技术,模型能够更好理解文本中的实体及其关系,从而提升命名实体识别的准确性;
    • 语义搜索:通过将查询和文档映射到同一向量空间,实现高效的语义相似度计算;
    • 迁移学习与特征提取:高质量的词嵌入可以迁移至下游任务,无需重新学习词汇含义,从而扩展应用范围。
  • 推荐系统
    • 商品推荐
    • 内容推荐
  • 图像与视频处理
    • 图像识别:安防监控、自动驾驶等领域;
    • 视频检索

相似度

计算两个Embedding之间的相似度的几种距离:

  • 余弦相似度(Cosine Similarity):衡量两个向量的方向相似性,数值越接近1,表示越相似;
  • 欧几里得距离(Euclidean Distance):衡量向量间的几何距离,值越小表示越相似;
  • 曼哈顿距离(Manhattan Distance):计算各个维度上的绝对差之和,适用于稀疏向量;
  • 切比雪夫距离(Chebyshev Distance):最大单维差值,适用于某些对最大差异敏感的任务。

词向量

词向量是用来表示词的向量,把词汇转化为数值向量的技术也叫词嵌入(Word Embedding)。词向量可以捕捉词汇之间的语义和语法关系。

词向量的关键特性:

  • 分布式表示:每个词被表示为一个实数向量,向量的维度远小于词汇表的大小。这种表示方式允许词向量捕捉词与词之间的细微差别和关系;
  • 语义相似性:在词向量空间中,语义上相近的词往往彼此靠近。这意味着可以通过计算向量之间的距离或相似度来衡量词之间的语义相似性;
  • 线性代数操作:词向量支持向量加法和减法,可以用来执行有意义的算术运算,例如著名的例子:​“国王-男人+女人=女王”;
  • 维度降低:词向量通过降维的方式将高维的词汇空间映射到低维的连续向量空间,这有助于减少计算成本并提高模型效率。

词向量的生成方法包括:

  • 独热编码(One-Hot Encoding):这是一种简单的编码方式,但不是真正的词向量,因为它不能捕捉词与词之间的关系,只表示词存在与否;
  • BoW(Bag of Words,词袋)​:同样不形成词向量,而是统计文档中每个词的频率,并且会忽略词序;
  • TF-IDF:改进的BoW模型,通过词频-逆文档频率来反映词的重要性,但仍不捕捉词间关系;
  • Word2Vec:Google提出,包括连续词袋(CBOW)和跳字(Skip-Gram)两种模型,能生成高质量的词向量;
  • GloVe(Global Vectors for Word Representation):可结合全局矩阵因子分解和局部上下文窗口信息;
  • FastText:Facebook AI Research提出的模型,能够处理子词信息,对于罕见词和拼写变体表现更好;
  • BERT:基于Transformer架构的深度学习模型,能够生成上下文敏感的词向量。

对比

对比项Word2VecGloVeFastTextBERT
特点最早广泛使用的词嵌入模型之一,其架构简单,训练速度快。它通过上下文信息来学习单词的嵌入向量,能够很好地捕捉单词之间的语义和语法关系结合全局词频统计信息和局部上下文信息来学习词嵌入,能够充分利用全局信息,进一步提高词嵌入的质量。它通过构建共现矩阵,记录单词之间的共现频率,然后优化目标函数来学习单词的嵌入向量针对Word2Vec在处理罕见词和词形变化方面的不足进行改进,通过将单词分解为字符 n - 元组来学习词嵌入,能够更好地处理多语言和词形变化丰富的语言。例如,在处理法语单词的不同词形变化时,FastText 能更有效地捕捉它们的语义关联一种基于Transformer架构的预训练语言模型,通过在大规模语料上进行无监督学习,能够学习到丰富的语言知识和语义信息。可用于Word Embedding、Sentence Embedding、Document Embedding,能够捕捉到更复杂的语义信息
适用场景适用于处理大规模文本数据,尤其是在需要快速训练和部署的场景中。例如,在新闻分类、情感分析等任务中,Word2Vec 提供的词嵌入向量可以作为特征输入到后续的分类模型中,提高模型的性能在需要更精确的词义表示的场景中表现更好,例如在语义相似性计算、问答系统等任务中,GloVe 提供的词嵌入向量能够更准确地反映单词之间的语义关系特别适用于多语言处理和需要处理罕见词的场景,如跨语言翻译、语言学研究等在自然语言处理的许多任务中表现出色,如问答系统、文本分类、语义相似性计算等。例如,在问答系统中,BERT可以将问题和候选答案句子编码为向量,通过比较向量相似度来找到最匹配的答案
局限性对于罕见词和词形变化丰富的语言效果较差,因为它将每个单词视为一个独立的实体,无法很好地处理单词的内部结构和形态变化训练过程相对复杂,计算成本较高,不适合处理非常大规模的数据集引入了字符级别的信息,模型的复杂度有所增加,训练速度相对较慢模型规模较大,训练和推理速度较慢,对计算资源要求较高
词义表示精度相对较低,但也能满足大多数基本的语义分析需求次之,通过全局信息的结合,能够提供更准确的词义表示相对较低,但也能满足大多数基本的语义分析需求在词义表示的精度上表现最佳,能够捕捉到更复杂的语义信息,如上下文相关的词义变化等
语义相似性计算可能存在一定的误差,但对于一些简单的相似性判断也能取得较好的效果表现更好,能够更准确地反映单词、句子或文档之间的语义相似度可能存在一定的误差,但对于一些简单的相似性判断也能取得较好的效果表现更好,能够更准确地反映单词、句子或文档之间的语义相似度
多语言处理能力--具有明显优势,能够更好地处理不同语言之间的词形变化和语义关联支持,但在处理特定语言的细节上可能不如FastText灵活
训练速度最快,适合处理大规模数据集相对较慢,尤其是在数据规模较大时,训练过程较为复杂介于Word2Vec和GloVe之间,虽然引入字符级别信息,但训练效率仍然较高最慢,模型规模较大,训练过程需要大量的计算资源和时间
推理速度较快,能够快速生成词嵌入向量相对较快,但可能受到数据预处理的影响较快,能够快速生成词嵌入向量较慢,尤其是在处理长文本时,需要消耗较多计算资源和时间
资源消耗最低,甚至可在个人电脑上进行训练和推理相对较低,可在普通服务器上运行相对较低,可在普通服务器上运行需求最高,需要高性能GPU或TPU支持

类型

Word Embedding

最经典的Embedding类型,主要用于处理单词级别的数据。它将单词映射到低维向量空间,使语义相似的单词在向量空间中距离更近。
在这里插入图片描述
word2vec是其中的代表模型,它有两种架构:CBOW和Skip-Gram。CBOW根据上下文单词预测目标单词,Skip-Gram则相反。

Word2Vec 训练出的词嵌入向量能很好地捕捉单词的语义关系,像 “king - man + woman ≈ queen” 这样的类比关系就能通过向量运算得到。此外,GloVe 模型通过结合全局词频统计信息和局部上下文信息来学习词嵌入,进一步提高了词嵌入的质量。FastText 则针对 Word2Vec 在处理罕见词和词形变化方面的不足进行了改进,通过将单词分解为字符 n - 元组来学习词嵌入,能够更好地处理多语言和词形变化丰富的语言。例如,在处理法语单词 “jouer”(玩)的不同词形变化 “joue”(玩,第三人称单数)、“jouons”(玩,第一人称复数)等时,FastText 能更有效地捕捉它们的语义关联。

Sentence Embedding

在单词嵌入的基础上,将句子映射到向量空间,用于捕捉句子的语义信息。比Word Embedding更复杂,因为句子的语义不仅取决于单词,还取决于单词的组合和语序。代表如BERT,通过在大规模语料上进行无监督学习,能够学习到丰富的语言知识和语义信息;可将句子编码为一个固定长度的向量,这个向量能够很好地表示句子的语义。

平均词嵌入向量(Average Word Embeddings),即将句子中所有单词的词嵌入向量取平均值作为句子的向量表示,但这种方法忽略了单词的顺序和组合信息,效果不如基于预训练语言模型的方法。Sentence Embedding在文本分类、语义相似性计算、问答系统等任务中有着广泛的应用。

Document Embedding

将文档映射到向量空间,用于表示文档的语义和主题信息。文档通常包含多个句子,Document Embedding需要处理更长的文本序列。一种简单的方法是将文档中所有句子的句子向量取平均值作为文档的向量表示,但这种方法同样忽略句子之间的结构和语义关联。

更有效的方法是使用层次化的模型,如Doc2Vec(Distributed Memory Model of Paragraph Vectors)。Doc2Vec是Word2Vec的扩展,它在训练过程中不仅考虑单词的上下文,还引入文档标签作为额外的上下文信息。模型可以学习到文档级别的语义信息,将文档映射到一个低维向量空间。例如,在处理新闻文章时,Doc2Vec可以将不同主题的文章映射到不同的区域,使得语义相似的文章在向量空间中距离更近。

Document Embedding 在文本聚类、信息检索、文档分类等任务中发挥着重要作用。

核心技术

训练方法

不同的训练方法适用于不同的场景和数据类型:

  • 基于上下文的训练方法:常用,尤其是在自然语言处理领域。以Word2Vec为例,它通过上下文单词来学习目标单词的嵌入向量。CBOW架构根据上下文单词预测目标单词,而Skip - Gram架构则根据目标单词预测上下文单词。在训练过程中,模型会不断调整单词的嵌入向量,使得在上下文中出现的单词的向量组合能够更好地预测目标单词,或者目标单词的向量能够更好地预测上下文单词。优点是能够很好地捕捉单词之间的语义关系,缺点是对于罕见词和词形变化丰富的语言效果较差。
  • 基于全局统计信息的训练方法:代表如GloVe。结合全局词频统计信息和局部上下文信息来学习词嵌入。GloVe模型通过构建一个共现矩阵,记录单词之间的共现频率,然后通过优化一个目标函数来学习单词的嵌入向量。优点是能够充分利用全局信息,进一步提高词嵌入的质量,缺点是训练过程相对复杂,计算成本较高。
  • 基于预训练语言模型的训练方法:BERT模型通过在大规模语料上进行无监督学习,能够学习到丰富的语言知识和语义信息。在Sentence Embedding中,BERT可以将句子编码为一个固定长度的向量,这个向量能够很好地表示句子的语义。优点是能够捕捉到更复杂的语义信息,缺点是模型规模较大,训练和推理速度较慢。

优化策略

为了提高Embedding模型的性能和效率

  • 负采样:用于基于上下文的训练方法。基本思想是,在训练过程中,除了选择目标单词的上下文单词作为正样本外,还会随机选择一些非上下文单词作为负样本。通过这种方式,模型可以更好地学习单词之间的语义关系,提高训练效率和模型性能。例如,在Word2Vec的Skip - Gram架构中,负采样可以显著提高模型的训练速度和词嵌入的质量。
  • 学习率调整:学习率是影响模型训练效果的重要参数之一。在训练过程中,合理调整学习率可以加快模型的收敛速度,提高模型的性能。常见的学习率调整策略包括固定学习率、学习率衰减和自适应学习率等。例如,Adam优化器是一种自适应学习率的优化算法,它可以根据模型的梯度信息自动调整学习率,具有收敛速度快、性能稳定等优点。
  • 正则化:一种防止模型过拟合的优化策略。在Embedding模型中,常用的正则化方法包括L1正则化和L2正则化。L1正则化通过在损失函数中加入权重的绝对值项,可以使得模型的权重更加稀疏,从而提高模型的解释性。L2正则化通过在损失函数中加入权重的平方项,可限制模型的权重大小,防止模型过拟合,提高泛化能力。
  • 分布式训练:随着数据规模的不断增大,单机训练已经无法满足模型训练的需求。分布式训练是一种将模型训练任务分解到多个计算节点上进行并行计算的优化策略,充分利用多个计算节点的计算资源,加快模型的训练速度。

最佳实践

为了提升Embedding的效果和系统稳定性,建议遵循以下最佳实践:

  1. 文档准备
  • 清理和标准化文本:去除特殊字符、HTML 标签、停用词等无关内容;
  • 合理切分大文本:过长的文本会影响嵌入质量,可按句子或段落拆分;
  • 避免冗余信息:确保嵌入的数据对任务有价值,避免噪声数据影响相似性计算。
  1. 错误处理
  • 处理 API 错误:如OpenAI可能返回 Rate Limit Exceeded,应实现重试机制;
  • 验证向量维度:确保生成的向量尺寸一致,以防止计算错误;
  • 检查空输入:如果输入为空,返回错误而不是提交无效请求。
  1. 批量处理
  • 高效管理多个文档并进行批量处理;
  • 遵循模型提供商的最大批量限制:例如OpenAI可能限制每次最多1000个token;
  • 并行处理,如利用Rust的async并发特性提高处理效率。

模型

主流Embedding模型对比

模型名称核心特性中文场景优势性能指标适用场景
BGE-M3- 多语言支持,覆盖194种语言
- 支持8192 tokens超长文本
- 集成稠密/稀疏/混合检索
中文STS平均分达83.54,长文本理解能力突出- 响应延迟28ms(RTX3090)
- 首条命中率提升42%
跨语言检索、技术文档、法律条文
M3E- 中英双语专项优化
- 轻量化设计,模型体积仅BGE-M3的60%
中文问答场景召回率比通用模型高18%- 推理速度35ms
- 内存占用仅3.2GB
轻量化部署、边缘计算、短文本交互
DeepSeek-R1- 与DeepSeek LLM同源适配
- 通用场景基线模型
基础问答场景平均准确率67%- 512 tokens耗时22ms
- 长文本检索精度衰减明显
快速原型验证、非专业领域问答
Nomic-Embed-Text- 开源免费
- 支持32K tokens超长窗口
中文语义捕捉弱于BGE-M3(测试低15-20%)- 长文本处理耗时42ms
- 专业领域召回率仅58%
学术研究、低成本多语言实验

关键维度深度分析

  • 语言支持
    • BGE-M3在跨语言对齐能力上表现最优,尤其擅长中日韩混合文本的语义关联;
    • M3E对中英混杂内容(如技术文档中的代码注释)处理更精准。
  • 长文本处理
    • BGE-M3采用分层注意力机制,在8192 tokens内保持语义连贯性(测试显示5000+ tokens文档的召回率比Nomic高28%);
    • Nomic-Embed-Text虽支持更长窗口,但中文段落边界检测误差率高达12%。
  • 领域适应性
    • 法律/医疗领域:BGE-M3通过微调可使专业术语召回率从71%提升至89%;
    • 金融数据:M3E对表格数值的向量映射误差比BGE-M3低0.08(余弦相似度)。
  • 硬件需求
模型显存占用(FP16)量化兼容性CPU推理速度(i9-13900K)
BGE-M36.8GB支持4bit/8bit量化78ms/token
M3E3.2GB仅支持8bit量化45ms/token
DeepSeek-R15.1GB不支持量化62ms/token

实测案例对比
政务文档检索场景:

  • 测试数据:10万份PDF/Word文件(平均长度1200 tokens)
  • 结果对比:
模型MAP@10首条命中率长文档漏检率
BGE-M30.7983%7%
M3E0.6875%15%
DeepSeek-R10.5261%22%

技术手册问答场景:

  • 使用BGE-M3+DeepSeek组合的准确率比纯DeepSeek高31%,响应延迟仅增加5ms

选型建议

  • 优先选择BGE-M3:
    • 需处理多语言混合内容
    • 文档长度超过2000 tokens
    • 对数据安全要求高(或本地部署)
  • 考虑M3E:
    • 硬件资源有限(如边缘设备)
    • 主要处理中英短文本(<512 tokens)
  • 慎用场景:
    • DeepSeek-R1:仅建议用于非关键业务原型验证
    • Nomic-Embed-Text:避免用于专业领域中文检索

挑战与未来

挑战

  1. 模型复杂度与效率问题
    • 计算资源需求高:以BERT为代表的预训练语言模型规模庞大,训练和推理过程需要大量的计算资源;
    • 推理速度慢:在实际应用中,模型的推理速度直接影响用户体验。BERT等模型在处理长文本时,推理速度较慢,难以满足实时性要求较高的场景。
  2. 数据质量与标注问题
    • 数据噪声:在训练Embedding模型时,数据质量至关重要。然而,实际中的数据往往存在噪声;这些噪声数据会影响模型的学习效果,导致生成的嵌入向量质量下降。
    • 标注数据稀缺:对于一些需要监督学习的任务,如情感分析、文本分类等,标注数据的获取成本较高。高质量的标注数据需要专业的标注人员进行标注,这不仅耗时耗力,而且成本高昂。例如,在医疗领域的文本分类任务中,需要医学专家对大量的医疗文本进行标注,这在实际操作中非常困难,导致标注数据稀缺,限制了模型的性能提升。
  3. 多模态融合的困难
    • 模态差异大:在多模态学习中,不同模态的数据具有不同的特征和语义信息。将这些不同模态的数据进行有效融合是一个巨大的挑战。例如,文本数据是离散的符号序列,而图像数据是连续的像素矩阵,两者在特征表示上存在很大差异,如何将它们映射到统一的向量空间并进行有效的融合是一个亟待解决的问题。
    • 语义对齐困难:即使将不同模态的数据映射到同一向量空间,如何确保它们在语义上对齐也是一个难题。例如,在图像描述生成任务中,需要将图像的视觉信息与文本的语义信息进行对齐,生成准确的图像描述。然而,由于模态之间的差异,很难找到一种有效的对齐方式,使得生成的描述能够准确反映图像的内容。
  4. 模型可解释性不足
    • 黑盒模型:许多Embedding模型,尤其是基于深度学习的模型,被视为黑盒模型。这些模型的内部工作机制复杂,难以解释其生成的嵌入向量是如何捕捉数据的语义信息的。例如,BERT模型通过多层Transformer架构学习单词的嵌入向量,但很难理解每一层的具体作用以及如何通过这些层的学习得到最终的语义表示。这使得在实际应用中,用户难以对模型的决策过程进行理解和信任。
    • 缺乏直观解释:对于一些需要可解释性的应用场景,如医疗诊断、金融风险评估等,模型的可解释性至关重要。

未来

未来可能的发展方向:

  1. 模型优化与轻量化
    • 模型压缩技术:为了降低模型的复杂度和计算资源需求,未来可能会出现更多高效的模型压缩技术。例如,通过剪枝、量化等方法,去除模型中冗余的参数和计算单元,减小模型的规模,同时尽量保持模型的性能。研究人员已经在探索一些模型压缩方法,如对BERT模型进行剪枝,将其参数量减少一半,同时保持较高的性能,这将使模型更易于部署和应用。
    • 轻量化模型设计:开发轻量化的Embedding模型,使其在保持较高性能的同时,能够更高效地运行。例如,一些研究团队正在探索设计更小规模的Transformer架构,或者结合其他轻量级的神经网络结构,如MobileNet等,来构建适合移动设备和边缘计算的Embedding模型。这些轻量化模型将能够更好地满足实时性和资源受限场景的需求。
  2. 数据增强与自监督学习
    • 数据增强技术:为了提高模型的鲁棒性和泛化能力,数据增强技术将得到更广泛的应用。通过数据增强,可以生成更多样化的训练数据,减少数据噪声的影响。例如,在文本数据中,可以通过同义词替换、句子重组等方式进行数据增强;在图像数据中,可以通过旋转、缩放、裁剪等操作生成更多的图像样本。这些增强后的数据能够使模型学习到更丰富的特征和语义信息,提高模型的性能。
    • 自监督学习:自监督学习是一种不需要大量标注数据的学习方法,它通过设计一些预训练任务,让模型从大量的无标注数据中学习有用的特征和语义信息。未来,自监督学习将在Embedding模型中发挥更重要的作用。例如,通过设计一些预测任务,如预测文本中的下一个单词、预测图像中的缺失部分等,让模型在无标注数据上进行预训练,然后再在少量标注数据上进行微调,从而提高模型的性能和泛化能力。
  3. 多模态融合的深化
    • 模态对齐技术:未来将出现更有效的模态对齐技术,以解决多模态数据在语义对齐方面的困难。例如,通过设计一些跨模态的对齐目标函数,或者引入一些对齐约束机制,使不同模态的数据在向量空间中能够更好地对齐。研究人员已经在探索一些基于注意力机制的对齐方法,通过计算不同模态数据之间的注意力权重,实现更精准的语义对齐,这将推动多模态学习的发展。
    • 多模态预训练模型:开发更强大的多模态预训练模型,能够同时处理多种模态的数据,并学习到更丰富的语义信息。例如,CLIP模型是一种典型的多模态预训练模型,它通过联合训练图像和文本数据,学习到图像和文本之间的语义关联。未来,可能会出现更多类似的多模态预训练模型,这些模型将在多模态应用中发挥重要作用,如跨模态检索、多模态问答等。
  4. 模型可解释性提升
    • 解释方法的创新:为了提高模型的可解释性,未来将出现更多创新的解释方法。例如,通过可视化技术,将模型的内部工作机制和决策过程直观地展示出来;或者开发一些基于规则的解释系统,根据模型的输出生成易于理解的解释规则。研究人员已经在探索一些可视化方法,如通过绘制注意力权重图来展示模型对不同单词或图像区域的关注程度,这将有助于用户更好地理解模型的决策过程。
    • 可解释性模型设计:在模型设计阶段,考虑可解释性因素,开发一些具有可解释性的Embedding模型。例如,设计一些基于符号逻辑的模型,或者结合一些传统的统计方法和机器学习方法,使模型的决策过程更加透明和可解释。这些可解释性模型将在一些对可解释性要求较高的领域得到广泛应用,如医疗、金融等。

参考

  • 大模型应用开发:核心技术与领域实践

相关文章:

Embedding入门概述

概述 Embedding&#xff0c;嵌入&#xff0c;一种将离散的符号数据&#xff08;如单词、句子、图像等&#xff09;映射到连续的向量空间中的技术&#xff0c;这些向量能够捕捉数据之间的语义、结构等关系。就是把原本难以直接处理的符号数据&#xff0c;转换成计算机更容易理解…...

革新桌面自动化:微软UFO²操作系统深度解析与未来展望

一、系统架构&#xff1a;多智能体协同的OS级创新 微软UFO&#xff08;Unified Framework for Operations&#xff09;是首个深度集成于Windows底层的多智能体操作系统&#xff0c;其核心架构由HostAgent控制中枢与模块化AppAgent执行单元构成。 ​HostAgent作为系统级调度器…...

【Java】分布式事务解决方案

分布式事务是指在分布式系统中&#xff0c;为了保证多个节点上的操作要么全部成功提交&#xff0c;要么全部失败回滚&#xff0c;所采取的一系列技术手段和协议。 CAP理论 在一个分布式系统中以下三个基本属性无法被同时满足&#xff1a; C(一致性)&#xff1a;一致性是指写…...

es数据导出

有大数据量导出的需求 整体思路&#xff1a;分页查询es&#xff0c;一页查询2000条&#xff0c;下一页查询的截止时间取上一页最后一条记录的创建时间&#xff08;因为分页是按照创建时间逆序排列的&#xff09;&#xff0c;组装最后导出的list&#xff0c;利用EasyExcel导出到…...

chrony服务器(2)

安装与配置 [rootserver ~]# systemctl status ntp # 查看ntp状态 安装 # 默认已安装&#xff0c;若需要安装则可执行&#xff1a; [rootserver ~]# yum install chrony -y [rootserver ~]# systemctl start chronyd [rootserver ~]# systemctl enable chronyd Chrony配置文…...

C++入门小馆: STL 之queue和stack

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…...

从零搭建云原生后端系统 —— 一次真实项目实践分享

一、引言&#xff1a;为什么选择云原生技术打造后端&#xff1f; 在当今数字化加速的时代&#xff0c;业务需求变化频繁&#xff0c;应用需要快速开发、快速上线、快速迭代。传统单体应用后端架构在灵活性、扩展性和稳定性方面越来越难以满足需求。 而云原生&#xff08;Clou…...

东田数码科技前端面经

东田数码科技有限公司前端面经 一个月三次面试&#xff0c;也是逐渐积攒了许多经验&#xff0c;也有遇到面试官问到的重复的问题&#xff0c;也有一些我不懂的问题&#xff0c;以下是4.27东田前端面经&#xff0c;希望给大家做参考。 1-自我介绍 我是ac鸽&#xff0c;就读与…...

【音视频】SDL窗口显示

SDL视频显示函数简介 SDL_Init()&#xff1a; 初始化SDL系统SDL_CreateWindow()&#xff1a;创建窗口SDL_WindowSDL_CreateRenderer()&#xff1a;创建渲染器SDL_RendererSDL_CreateTexture()&#xff1a;创建纹理SDL_TextureSDL_UpdateTexture()&#xff1a; 设置纹理的数据S…...

小球在摆线上下落的物理过程MATLAB代码

‌物理建模‌&#xff1a; 使用摆线参数方程定义轨迹&#xff1a;x r(θ - sinθ), y r(1 - cosθ)通过微分方程求解角度θ随时间变化关系&#xff0c;考虑能量守恒定律计算实时速度分量和切向加速度 ‌可视化特性‌&#xff1a; 灰色虚线显示完整摆线轨迹红色小球实时显示当…...

【设计模式】享元模式

享元模式属于结构型设计模式 核心思想是通过共享技术&#xff0c;实现相似对象的高效复用。用 1%的资源支撑100%的需求——通过对象状态的分离与共享&#xff0c;用最小内存支持海量对象 内部状态&#xff1a;对象中不变的部分共享 外部状态&#xff1a;对象中变化的部分非共享…...

R中实现数值求导的包numDeriv

介绍 numDeriv 是一个用于数值求导的 R 包&#xff0c;它提供了计算函数导数的简单方法&#xff0c;支持一阶导数和高阶导数的计算。 计算一阶导数 grad(func, x, method"Richardson", sideNULL, eps1e-4, method.argslist(), ...) 参数&#xff1a; func&#x…...

常用的多传感器数据融合方法

1. 概述 根据具体需求&#xff08;实时性、计算资源、噪声特性&#xff09;选择合适的方法&#xff0c;实际应用中常结合多种方法&#xff08;如UKF与神经网络结合&#xff09;。 传统方法 &#xff08;KF/EKF/UKF/PF&#xff09;依赖数学模型&#xff0c;适合动态系统&#…...

[Lc_week] 447 | 155 | Q1 | hash | pair {}调用

447_Q1 题解 class Solution {typedef pair<int,int> PII;// 自定义哈希函数struct HashPII {size_t operator()(const PII& p) const {return hash<int>()(p.first) ^ (hash<int>()(p.second) << 1);}};public:int countCoveredBuildings(int n,…...

HTML5 新特性详解:语义化标签、表单与音视频嵌入

前言 HTML5作为当前Web开发的核心技术&#xff0c;为开发者提供了更强大、更语义化的工具集。本文将深入探讨HTML5的三大核心特性&#xff1a;语义化标签、增强的表单功能以及原生的音视频支持&#xff0c;帮助开发者构建更现代化、更易维护的网页应用。 一、HTML5语义化标签…...

关于 React Fiber 架构、Hooks 原理

下面将详细介绍你提到的关于 React Fiber 架构、Hooks 原理等相关知识点&#xff1a; React Fiber 架构概述 1. 架构演变 在 React 16 版本之前&#xff0c;采用的是栈调和&#xff08;Stack Reconciler&#xff09;&#xff0c;流程是 JSX 经过 render 函数转换为虚拟 DOM&…...

音视频之H.265/HEVC熵编码

H.265/HEVC系列文章&#xff1a; 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...

【视频生成模型】通义万相Wan2.1模型本地部署和LoRA微调

目录 1 简介2 本地部署2.1 配置环境2.2 下载模型 3 文生视频3.1 运行命令3.2 生成结果 4 图生视频4.1 运行命令4.2 生成结果 5 首尾帧生成视频5.1 运行命令5.2 生成结果 6 提示词扩展7 LoRA微调 1 简介 2 本地部署 2.1 配置环境 将Wan2.1工程克隆到本地&#xff1a; git cl…...

Java高频面试之并发编程-09

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;详细说说ThreadLocal ThreadLocal 是 Java 中用于实现线程本地变量的工具类&#xff0c;主要解决多线程环境下共享变量的…...

[Vulfocus解题系列]Apache HugeGraph JWT Token硬编码导致权限绕过(CVE-2024-43441)

[Vulfocus解题系列]Apache HugeGraph JWT Token硬编码导致权限绕过&#xff08;CVE-2024-43441&#xff09; Apache HugeGraph 是一款快速、高度可扩展的图数据库。它提供了完整的图数据库功能&#xff0c;具有出色的性能和企业级的可靠性。 Apache HugeGraph 存在一个 JWT t…...

MySQL最新安装、连接、卸载教程(Windows下)

文章目录 MySQL最新安装、连接、卸载教程&#xff08;Windows下&#xff09;1.MySQL安装2.MySQL连接2.1 命令行连接2.2 图形化连接&#xff08;推荐&#xff09; 3.MySQL卸载参考 MySQL最新安装、连接、卸载教程&#xff08;Windows下&#xff09; 1.MySQL安装 MySQL 一共可以…...

Scala 函数柯里化及闭包

一、柯里化 1.1 定义 柯里化是将一个接受多个参数的函数转换为一系列接受单个参数的函数的过程。每个函数返回一个新函数&#xff0c;直到所有参数都被收集完毕&#xff0c;最终返回结果。 1.2 示例 非柯里化函数&#xff08;普通多参数函数&#xff09; def add(a: Int, b…...

EasyRTC嵌入式音视频通信SDK助力视频客服,开启智能服务新时代

一、背景 在数字化服务浪潮下&#xff0c;客户对服务体验的要求日益提升&#xff0c;传统语音及文字客服在复杂业务沟通、可视化指导等场景下渐显不足。视频客服虽成为企业服务升级的关键方向&#xff0c;但普遍面临音视频延迟高、画质模糊、多端适配难、功能扩展性差等问题&a…...

OceanBase数据库-学习笔记1-概论

多租户概念 集群和分布式 随着互联网、物联网和大数据技术的发展&#xff0c;数据量呈指数级增长&#xff0c;单机数据库难以存储和处理如此庞大的数据。现代应用通常需要支持大量用户同时访问&#xff0c;单机数据库在高并发场景下容易成为性能瓶颈。单点故障是单机数据库的…...

Android 理清 Gradle、AGP、Groovy 和构建文件之间的关系

在 Android 开发中&#xff0c;我们常常会接触到一系列看似相近却各有分工的名词&#xff0c;比如&#xff1a;Gradle、Groovy、AGP、gradle-wrapper.properties、build.gradle、settings.gradle 等等。 它们彼此之间到底是什么关系&#xff1f;各自又承担了什么角色&#xff1…...

ubuntu 安装ollama后,如何让外网访问?

官网下载linux版本&#xff1a;https://ollama.com/download/linux 1、一键安装和运行 curl -fsSL https://ollama.com/install.sh | sh 2、下载和启动deepseek-r1大模型 ollama run deepseek-r1 这种方式的ollama是systemd形式的服务&#xff0c;会随即启动。默认开启了 …...

安卓的Launcher 在哪个环节进行启动

安卓Launcher在系统启动过程中的关键环节启动&#xff0c;具体如下&#xff1a; 内核启动&#xff1a;安卓设备开机后&#xff0c;首先由引导加载程序启动Linux内核。内核负责初始化硬件设备、建立内存管理机制、启动系统进程等基础工作&#xff0c;为整个系统的运行提供底层支…...

【银河麒麟高级服务器操作系统】在VMware虚拟机情况下出现软锁处理过程

系统环境及配置 系统环境 物理机/虚拟机/云/容器 VMware虚拟机&#xff0c;宿主机型号是YK SR750 网络环境 外网/私有网络/无网络 私有网络 硬件环境 机型 VMware Virtual Platform 处理器 Intel(R) Xeon(R) Gold 6348 CPU 2.60GHz 内存 64GB 整机类型/架构 x86…...

Ubuntu 22.04.4操作系统初始化详细配置

上一章节&#xff0c;主要讲解了Ubuntu 22.04.4操作系统的安装&#xff0c;但是在实际生产环境中&#xff0c;需要对Ubuntu操作系统初始化&#xff0c;从而提高系统的性能和稳定性。 一、查看Ubuntu系统版本和内核版本 # 查看系统版本 testubuntu:~$ sudo lsb_release -a Rel…...

[ACTF2020 新生赛]Upload

先写一个万能的一句话木马 使用一句话木马 发现这个是有内容过滤的 过滤了 <? 发现这个过滤的很死那就只能使用 不带 ? 的短标签了 使用script 标签 这个的使用只限于对方的php是5版本的 正好是低版本的 所以直接上传 改一下后缀为 phtml 成功上传 但是我们没有…...

Harbor2.0仓库镜像清理策略

背景 在持续集成和持续部署的流程中&#xff0c;频繁的构建和部署会生成大量的镜像版本。这些历史镜像如果不及时清理&#xff0c;会占用大量的存储空间&#xff0c;导致 Harbor 仓库膨胀&#xff0c;影响系统性能。 目前 公司的Harbor存储已经占用1T&#xff0c;好多的repo的…...

从零开始了解数据采集(二十一)——电子制造行业趋势分析案例

这次分享一个偏行业性的趋势分析案例&#xff0c;在项目中为企业实实在在的提高了良品率。不懂什么是趋势分析的同学&#xff0c;可以翻看前面的文章。 在广东某电子制造厂中&#xff0c;管理层发现最近几个月生产良品率有所波动&#xff0c;但无法明确波动原因&#xff0c;也…...

从零开始开发一个简易的五子棋游戏:使用 HTML、CSS 和 JavaScript 实现双人对战

介绍 五子棋&#xff0c;作为一种经典的棋类游戏&#xff0c;不仅考验玩家的策略与判断力&#xff0c;还能在繁忙的生活中带来一丝轻松。今天&#xff0c;我们将用 HTML、CSS 和 JavaScript 来开发一个简易的五子棋游戏&#xff0c;玩家可以在浏览器中与朋友展开一场刺激的对决…...

用Node.js施展文档比对魔法:轻松实现Word文档差异比较小工具,实现Word差异高亮标注(附完整实战代码)

引言&#xff1a;当「找不同」遇上程序员的智慧 你是否经历过这样的场景&#xff1f; 法务同事发来合同第8版修改版&#xff0c;却说不清改了哪里 导师在论文修改稿里标注了十几处调整&#xff0c;需要逐一核对 团队协作文档频繁更新&#xff0c;版本差异让人眼花缭乱 传统…...

计算机基本理论与 ARM 相关概念深度解析

一、计算机基本理论 1. 计算机的组成 计算机硬件系统由五大部件构成&#xff1a; 运算器&#xff1a;负责算术运算&#xff08;如加减乘除&#xff09;与逻辑运算&#xff08;如与、或、非&#xff09;&#xff0c;是数据处理的核心单元。控制器&#xff1a;从存储器中逐条提…...

adb常用的20个命令

ADB&#xff08;Android Debug Bridge&#xff09;是Android开发工具中的一个命令行工具&#xff0c;常用于与Android设备进行交互、调试和测试。以下是ADB常用的20个命令&#xff1a; ‌adb devices‌&#xff1a;列出所有已连接的设备及其状态。‌adb connect <device_ip…...

C++如何使用调试器(如GDB、LLDB)进行程序调试保姆级教程(2万字长文)

C作为一门高性能、接近底层的编程语言&#xff0c;其复杂性和灵活性为开发者提供了强大的能力&#xff0c;同时也带来了更高的调试难度。与一些高级语言不同&#xff0c;C程序往往直接操作内存&#xff0c;涉及指针、引用、多线程等特性&#xff0c;这些都可能成为错误的温床。…...

【计算机哲学故事1-2】输入输出(I/O):你吸收什么,便成为什么

“我最近&#xff0c;是不是废了……”她瘫在沙发上&#xff0c;手机扣在胸口&#xff0c;盯着天花板自言自语。 我坐在一旁&#xff0c;随手翻着桌上的杂志&#xff0c;没接话&#xff0c;等着她把情绪发泄完。 果然&#xff0c;几秒后&#xff0c;她重重地叹了口气&#xf…...

驱动开发硬核特训 · Day 22(上篇): 电源管理体系完整梳理:I2C、Regulator、PMIC与Power-Domain框架

&#x1f4d8; 一、电源子系统总览 在现代Linux内核中&#xff0c;电源管理不仅是系统稳定性的保障&#xff0c;也是实现高效能与低功耗运行的核心机制。 系统中涉及电源管理的关键子系统包括&#xff1a; I2C子系统&#xff1a;硬件通信基础Regulator子系统&#xff1a;电源…...

Linux一个系统程序——进度条

一、回车与换行 \n :回车加换行 \r:换行 观察我们发现以上的两个代码除了缺少/n没有任何区别&#xff0c;但是运行代码之后我们会发现有何大的不同&#xff0c;图一会先在屏幕上打印helloworld在进行休眠2&#xff0c;但是图二会先休眠2在打印helloworld&#xff0c;原因是pr…...

从零到精通:深入剖析GoFrame的gcache模块及其在项目中的实战应用

一、引言 在后端开发的世界里&#xff0c;Go语言凭借其简洁的语法、高效的并发模型和强大的标准库&#xff0c;已成为许多开发者的首选。从Web服务到分布式系统&#xff0c;Go的身影无处不在&#xff0c;而其生态也在不断壮大。作为Go生态中的一颗新星&#xff0c;GoFrame&…...

【Linux系统】静态库与动态库

库制作与原理 1. 什么是库 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复用的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个人的代码都从零开始&#xff0c;因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式&#xff…...

从零实现分布式WebSocket组件:设计模式深度实践指南

一、为什么需要WebSocket组件&#xff1f; 实时通信需求 传统HTTP轮询效率低&#xff0c;WebSocket提供全双工通信适用于即时聊天、实时数据监控、协同编辑等场景 分布式系统挑战 多节点部署时需解决会话同步问题跨节点消息广播需借助中间件&#xff08;Redis/RocketMQ等&…...

使用 OpenCV 和 dlib 进行人脸检测

文章目录 1. 什么是 dlib2. 前期准备介绍2.1 环境准备2.2 dlib 的人脸检测器 3. 代码实现3.1 导入库3.2 加载检测器3.3 读取并调整图像大小3.4 检测人脸3.5 绘制检测框3.6 显示结果 4. 完整代码5. 优化与改进5.1 提高检测率5.2 处理 BGR 与 RGB 问题 6. 总结 人脸检测是计算机视…...

03.使用spring-ai玩转MCP

接着上篇&#xff1a;https://blog.csdn.net/sinat_15906013/article/details/147052013&#xff0c;我们介绍了&#xff0c;什么是MCP&#xff1f;使用cline插件/cherry-studio安装了Mcp Server&#xff0c;本篇我们要借助spring-ai实现MCP Client和Server。 使用spring-ai的…...

LeetCode12_整数转罗马数字

LeetCode12_整数转罗马数字 标签&#xff1a;#哈希表 #数字 #字符串Ⅰ. 题目Ⅱ. 示例 0. 个人方法&#xff1a;模拟官方题解二&#xff1a;硬编码数字 标签&#xff1a;#哈希表 #数字 #字符串 Ⅰ. 题目 七个不同的符号代表罗马数字&#xff0c;其值如下&#xff1a; 符号值I…...

展销编辑器操作难度及优势分析​

也许有人会担心&#xff0c;如此强大的展销编辑器&#xff0c;操作起来是否会很复杂?答案是否定的。展销编辑器秉持着 “简单易用” 的设计理念&#xff0c;致力于让每一位用户都能轻松上手&#xff0c;即使是没有任何技术背景的小白&#xff0c;也能在短时间内熟练掌握。​ 编…...

展销编辑器在未来的发展前景​

展销编辑器在展销行业的发展前景极为广阔&#xff0c;有望引领行业迈向更加智能化、个性化、沉浸式的新时代&#xff0c;对行业变革产生深远影响。​ 随着人工智能、虚拟现实、增强现实等技术的不断发展和融合&#xff0c;展销编辑器将实现更加智能化的功能。例如&#xff0c;借…...

央视两次采访报道爱藏评级,聚焦生肖钞市场升温,评级币成交易安全“定心丸”

CCTV央视财经频道《经济信息联播》《第一时间》两档节目分别对生肖贺岁钞进行了5分钟20秒的专题报道。长期以来&#xff0c;我国一直保持着发行生肖纪念钞和纪念币的传统&#xff0c;生肖纪念钞和纪念币在收藏市场保持着较高的热度。特别是2024年初&#xff0c;央行发行了首张贺…...

登高架设作业指的是什么?有什么安全操作规程?

登高架设作业是指在高处从事脚手架、跨越架架设或拆除的作业。具体包括以下方面&#xff1a; 脚手架作业 搭建各类脚手架&#xff0c;如落地式脚手架、悬挑式脚手架、附着式升降脚手架等&#xff0c;为建筑施工、设备安装、高处维修等作业提供安全稳定的工作平台。对脚手架进行…...