想法@IT·互联网

写给非机器学习人员的 embedding 入门

2024-08-07  本文已影响0人  shengjk1

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

一、背景

目前在实现 NL2SQL 就是将人的自然语言通过 LLMs 的一系列处理,在这个过程中,会把文本向量化后存储到向量数据库中,然后通过向量搜索,这个过程中发现文本 embedding 后,通过向量化搜索效果很是惊人,就跟程序能读懂人的语言一样。于是对 embedding 产生了兴趣

二、什么是 embedding

embedding 是自然语言处理 (NLP)中的一种变革性技术,它改进了机器理解和处理人类语言的方式。其将原始文本转换为数字向量,让计算机更好地理解它。

因为计算机只能用数字思考,无法独立理解人类的语言。借助文本嵌入,计算机可以更轻松地阅读、理解文本,并对查询提供更准确的响应。

下图可以更加形象的理解:
[图片上传失败...(image-1d26d-1723119257918)] embedding 是一种将文本中的单词或短语转换为机器可以理解的数字数据的方法。可以将其视为将文本转换为数字列表,其中每个数字都表示文本的一部分含义。这种技术可以帮助机器掌握单词之间的上下文和关系。

三、为什么需要 embedding

embedding 在机器学习和自然语言处理中的重要性主要体现在以下几个方面:

3.1 降维处理

3.2 捕捉语义关系

3.3 更好的特征表示

3.4 提高计算效率

3.5 适应性强

四、emdedding 原理

embedding 的原理主要基于将高维数据映射到低维空间的技术,以下是其核心概念和原理:

4.1 向量空间模型

4.2 训练方法

4.3 常用算法

4.4 相似性度量

4.5 特征学习

4.6 利用上下文

五、embedding 应用场景

embedding 的应用场景非常广泛,主要包括以下几个领域:

1. 自然语言处理(NLP)

2. 推荐系统

3. 计算机视觉

4. 图结构数据

5. 生物信息学

6. 音频处理

7. RAG

embedding 技术能够在许多领域提供有效的数据表示,增强模型的性能,并提高计算效率。它在自然语言处理、计算机视觉、推荐系统以及生物信息学等多个领域都有重要应用。

六、embedding 使用

这里我们用 huggingface m3e-base 模型的例子

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('moka-ai/m3e-base')

#Our sentences we like to encode
sentences = [
    '* Moka 此文本嵌入模型由 MokaAI 训练并开源,训练脚本使用 uniem',
    '* Massive 此文本嵌入模型通过**千万级**的中文句对数据集进行训练',
    '* Mixed 此文本嵌入模型支持中英双语的同质文本相似度计算,异质文本检索等功能,未来还会支持代码检索,ALL in one'
]

#Sentences are encoded by calling model.encode()
embeddings = model.encode(sentences)

#Print the embeddings
for sentence, embedding in zip(sentences, embeddings):
    print("Sentence:", sentence)
    print("Embedding:", embedding)
    print("")

七、总结

Embedding技术显著改善了机器对自然语言的理解能力,通过将高维文本数据转换为低维向量,计算机能够更有效地处理和响应人类语言。它的多领域适应性和强大的特征表示能力,使其在现代AI应用中扮演了至关重要的角色。

上一篇 下一篇

猜你喜欢

热点阅读