1 什么是Embedding
- 在大模型中,"embedding"指的是将某种类型的输入数据(如文本、图像、声音等)转换成一个稠密的数值向量的过程。
- 这些向量通常包含较多维度,每一个维度代表输入数据的某种抽象特征或属性。
- Embedding 的目的是将实际的输入转化为一种格式,使得计算机能够更有效地处理和学习
在这里插入图片描述
- 文本Embedding在自然语言处理(NLP)中,文本embedding是一个常见的概念。是将文字或短语转换成数值向量的过程。这些向量捕捉了单词的语义特征,例如意义、上下文关系等。比如,使用词嵌入技术(如Word2Vec、GloVe或BERT),模型可以将具有相似意义的词映射到向量空间中的相近位置。- 图像Embedding对于图像,embedding过程通常涉及使用卷积神经网络(CNN)等模型来提取图像中的特征,并将这些特征转换为一个高维向量。这样的向量可以代表图像的内容、风格、色彩等信息,从而用于图像识别、分类或检索任务。- 声音Embedding在声音处理领域,embedding通常指的是将音频信号转换为一个表示其特征的向量,这包括音调、节奏、音色等。通过这样的转换,可以进行声音识别、音乐生成等任务。
2 为什么使用Embedding
- Embedding的主要优势是能够将实体转换为计算机易于处理的数值形式,同时减少信息的维度和复杂度。
- 有助于提高处理效率,而且也使得不同实体之间的比较(如计算相似度)变得可行。
- embedding通常通过大量数据的训练而得到,能够捕捉到复杂的模式和深层次的关系,这是传统方法难以实现的
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
3 数据向量化的处理流程
1. 收集这一步骤是数据收集阶段,涉及到从不同的来源(如数据库、网站、文档等)收集需要分析的文本数据。这些数据可以是文章、评论、报告等形式。重点是确定数据源,并确保数据的相关性和质量。
2. 切块对于大型文档,直接处理可能会因为模型的输入限制(如Token数量限制)而变得不可行。在这种情况下,需要将大文档分割成更小的部分。这些部分应该尽可能保持语义的完整性,例如按段落或章节切分。切块的目的是确保每块文本的大小适合模型处理,同时尽量减少上下文信息的丢失。
3. 嵌入在切块后,每个文本块将被转换为数值向量,即通过OpenAI的embedding API进行嵌入。这一步涉及调用API,将文本数据发送到OpenAI的服务器,服务器会返回文本的向量表示。这些向量捕捉了文本的深层语义特征,使得文本之间的比较、搜索和分析变得可能。
4. 结果存储嵌入向量生成后,需要将它们存储起来以便于后续的检索和分析。对于大型数据集,推荐使用专门的向量数据库(如Faiss、Annoy、Elasticsearch等),这些数据库优化了向量的存储和相似性搜索操作。存储不仅要保证数据的可检索性,也要考虑查询效率和存储成本
4 Embedding实战
- 演示是通过OPENAI的embedding进行,根据最新的api测试
在这里插入图片描述
- 测试代码如下
代码语言:javascript
复制
response=openai.embeddings.create(input="abc s da d asd a da d ",model="text-embedding-ada-002"# 选择一个合适的模型,如ada)print("测试数据:",response.data[0].embedding)- 文本转化向量
在这里插入图片描述
- 如何计算两个向量的相似度?余弦相似度是一种用来衡量两个向量方向上的相似性的方法。在文本分析中,它常用于比较两段文本的语义相似性。当我们使用向量化模型(如OpenAI的text-embedding-ada-002模型)将文本转化为向量后,每个向量的维度表示某种语义特征,向量中的值反映了相应特征的强度。
余弦相似度的计算公式为:
在这里插入图片描述
其中,
vec1⋅vec2
表示两个向量的点积,
|vec1|
和
|vec2|
分别是这两个向量的欧几里得范数(即向量的长度)。 这个比例的本质是测量两个向量之间夹角的余弦值,范围从-1到1: 当余弦值为1时,表示两个向量方向完全相同。 当余弦值为0时,表示两个向量正交,即在高维空间中不相关。 当余弦值为-1时,表示两个向量方向完全相反。 在文本相似度测量中,如果两个文本的向量化表示在方向上更接近,它们的余弦相似度就更高,这意味着它们在语义上更相似。因此,通过计算向量之间的余弦相似度,我们可以有效地评估两段文本的相似性。这种方法适用于处理高维空间中的数据,如自然语言处理中的文本数据。
- 整体实战代码 文本检索匹配
代码语言:javascript
复制
importtime from typingimportListimportosimportpandasaspd # 导入 tiktoken 库。Tiktoken 是 OpenAI 开发的一个库,用于从模型生成的文本中计算 token 数量。importtiktoken from openaiimportOpenAIimportnumpyasnp os.environ['OPENAI_API_KEY']='sk-api-0REliWJkobjeqQlObLN0T3BlbkFJ0j4bHtDhEEQGEAboNYah'openai=OpenAI()defembed_text(text):""" 使用OpenAI API将文本向量化 """response=openai.embeddings.create(input=text,model="text-embedding-ada-002"# 选择一个合适的模型,如ada)returnresponse.data[0].embedding defcosine_similarity(vec1,vec2):""" 计算两个向量之间的余弦相似度 """returnnp.dot(vec1,vec2)/(np.linalg.norm(vec1)*np.linalg.norm(vec2))deffind_top_similar_texts(input_text,text_list,top_n=3):""" 找出与输入文本最相似的top_n个文本 """input_vec=embed_text(input_text)similarities=[]fortextintext_list:text_vec=embed_text(text)similarity=cosine_similarity(input_vec,text_vec)similarities.append((text,similarity))# 按相似度排序并返回最高的top_n个结果 similarities.sort(key=lambda x:x[1],reverse=True)returnsimilarities[:top_n]# 示例文本库 text_corpus=["The quick brown fox jumps over the lazy dog.","A fast brown fox leaps over a sleepy dog.","Exploring the mountains of the moon.","Data science involves the analysis of large amounts of data.","The capital of France is Paris.","Programming in Python is fun and versatile."]# 输入文本 input_text="Python is"# 执行查找 top_similar_texts=find_top_similar_texts(input_text,text_corpus)# 打印结果fortext,similarityintop_similar_texts:print(f"Text: {text}\nSimilarity: {similarity:.2f}\n")# # # 示例文本 # text1="The quick brown fox jumps over the lazy dog."# text2="A fast brown fox leaps over a sleepy dog."# text3="Exploring the mountains of the moon."# # # 向量化文本 # vec1=embed_text(text1)# vec2=embed_text(text2)# vec3=embed_text(text3)# # # 计算相似度 # similarity12=cosine_similarity(vec1,vec2)# similarity13=cosine_similarity(vec1,vec3)# #print(f"Similarity between text 1 and text 2: {similarity12:.2f}")#print(f"Similarity between text 1 and text 3: {similarity13:.2f}")response=openai.embeddings.create(input="abc s da d asd a da d ",model="text-embedding-ada-002"# 选择一个合适的模型,如ada)print("测试数据:",response.data[0].embedding)- 结果
在这里插入图片描述
- 最终检索到匹配度前三的文本向量 后续会使用到向量数据库 完成知识库的搭建
那么,我们该如何学习大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、大模型全套的学习路线
学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。
L1级别:AI大模型时代的华丽登场
L2级别:AI大模型API应用开发工程
L3级别:大模型应用架构进阶实践
L4级别:大模型微调与私有化部署
一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。
以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。