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

AI大模型(一)embedding模型的基础使用

OpenAI嵌入式Embedding模型

表示学习与嵌入的概念

首先了解到图片的本质是什么,英文的本质是什么,中文的本质是什么计算机是如何存储的
在这里插入图片描述

在这里插入图片描述
表示学习:通过学习算法自动的从原始数据中学习到一种表示形式或特征表示(如矩阵)
嵌入:表示学习的一种形式,通常于将高维数据映射到低维空间中的表示形式
在这里插入图片描述
如果世界上没有苹果这个词,那么应该如何描述苹果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
都是苹果,他们可能颜色不同大小不同纹理不同,但是在向量空间中离得很近
在AI大模型中所有的数据都是一个个的向量,这些向量数据就是AI大模型的基石
在这里插入图片描述
在这里插入图片描述
表示学习的特点:
在这里插入图片描述
embedding的价值:
在这里插入图片描述
在这里插入图片描述

embedding的种类
在这里插入图片描述

词嵌入和必要条件

在这里插入图片描述
wordEmbeding vs langguage model
在这里插入图片描述
大模型边界划分:
在这里插入图片描述

使用Python虚拟环境的主要目的有几个关键点,即使在已有系统环境的情况下也非常必要:

隔离性 :虚拟环境为Python项目提供了一个独立的环境,使得每个项目可以拥有自己特定版本的依赖库,而不会干扰其他项目或系统的全局Python环境。这样可以避免版本冲突,比如项目A需要库A的1.0版本,而项目B需要2.0版本,通过虚拟环境,每个项目都能得到满足。
可复现性 :确保在不同的开发环境中(包括生产环境)项目能一致运行。虚拟环境配合requirements.txt,可以精确记录并重现项目的全部依赖,这对于团队协作和部署非常关键。
管理便捷 :可以轻松地安装、升级或卸载该环境内的Python包,而不必担心会影响到其他项目或系统级别的Python设置。
清洁开发环境 :保持系统环境的干净,避免安装大量仅用于特定项目或测试的库(测试的库可以安装在测试的虚拟环境中),使得系统级的Python保持简洁,有利于系统稳定性和安全性。
便于部署 :在准备应用部署时,可以很容易地创建一个与开发环境完全一致的环境,确保应用在生产环境中的表现与开发和测试环境一致。
简而言之,虚拟环境增强了开发过程的灵活性、可靠性;

embedding开发

embedding降低维的概念
通过线性变换(如特征值分解)找到数据方差最大的方向(主成分),将数据投影到这些方向上。或者可以根据:捕捉高维数据中的非线性关系(如局部结构或流形),在低维空间中保持相似性。

降维必然导致信息损失,但关键在于保留哪些信息:PCA保留方差最大的方向(通常对应主要特征),t-SNE保留局部邻域关系。所以虽然降维了,但是有些关键信息还是留下了。

举例:原始300维的Word2Vec向量 → 通过PCA降到2维。 ◦ 语义保留效果:同类词(如“猫”“狗”)在低维空间中可能靠近,但部分细节(如“猫”与“老虎”的细微差异)可能丢失。

embedding处理流程:
在这里插入图片描述
从openai的官网上下载要分析的数据:
在这里插入图片描述
summary评论的摘要,text评论的内容
下面开始embedding分析:

#需要安装依赖库
# pip install tiktoken openai pandas matplotlib plotly scikit-learn numpy
import pandas as pd
import osimport tiktoken
from openai import OpenAI#科学上网端口
# os.environ['http_proxy'] = '127.0.0.1:7890'
# os.environ['https_proxy'] = '127.0.0.1:7890''''
该数据集包含截至2012年10月用户在亚马逊上留下的共计568,454条美食评论,
我们将使用该数据集的一个子集,
其中包括最近1,000条评论。这些评论都是用英语撰写的,
'''
df=pd.read_csv('datas/fine_food_reviews_1k.csv',index_col=0)
# 设置表头
df = df[['Time','ProductId','UserId','Score','Summary','Text']]#删除csv中空的数据
df = df.dropna()
#需要处理文本数据合并摘要和评论
df['combined']="Title:"+df.Summary.str.strip() + "; Content:"+df.Text.str.strip()
#print(df.head(2))
#以上代码数据预处理完成#生成Embedding之后的向量,并且保存
# 建议使用官方推荐的第二代嵌入模型:text-embedding-ada-002
embedding_model = "text-embedding-ada-002"#对文本进行处理的分词器
tokenizer_name = 'cl100k_base'
max_tokens =8191
top_n=1000
df=df.sort_values('Time')
df.drop("Time", axis=1, inplace=True)# 创建一个分词器
tokenizer = tiktoken.get_encoding(encoding_name=tokenizer_name)# 控制输入数据的token数量
#计算token的数量
df['count_token'] = df.combined.apply(lambda x: len(tokenizer.encode(x)))
#判断token的数量不能超过官方的阈值:超过了就不要
df=df[df.count_token <= max_tokens].tail(top_n)
print(len(df))
print(df)# 初始化openai的客户端
client = client = OpenAI()def embedding_text(text, model='text-embedding-ada-002'):"""通过OpenAI的Embedding模型处理文本数据:param text: 需要处理的文本数据:param model::return:"""resp =client.embeddings.create(input=text, model=model)print(resp)return resp.data[0].embeddingdf['embedding'] = df.combined.apply(embedding_text)df.to_csv('datas/embedding_output_1k.csv')print(df['embedding'][0])

输出的embedding数组数据类似于下图

[0.007734900340437889, -0.02523442730307579, 0.011334920302033424, -0.01346750371158123, 0.0023074415512382984, 0.01909039355814457, -0.0008408618741668761, -0.019899539649486542, -0.01902182027697563, -0.014660653658211231, 0.018048102036118507, 0.005091457162052393, -0.03250303864479065, 0.0013277217512950301, 0.014770368114113808, 0.02007782645523548, 0.017307525500655174, -0.024562424048781395, -0.019337251782417297, -0.02505614049732685, -0.04372138902544975, -0.007186326198279858, 0.0206675436347723, -0.008557762019336224, -0.008688048459589481, 0.014043507166206837, 0.02716815285384655, -0.01921382173895836, -0.008976050652563572, 0.02335556037724018, 0.0015797230880707502, 0.008989764377474785, -0.010642345063388348, -0.01762295514345169, -0.007206897716969252, -0.012397783808410168, -0.02775787003338337, 0.004364595748484135, 0.02213498204946518, -0.020777259021997452, 0.021805835887789726, -0.01560694444924593, 0.01373493392020464, -0.008098331280052662, 0.002033154247328639, 0.018925819545984268, -0.017238954082131386, -0.030939601361751556, -0.015099513344466686, 0.013035501353442669, 0.034861911088228226, 0.002544014248996973, -0.03974422439932823, 0.002115440322086215, 0.004395453259348869, 0.020214971154928207, -0.020475544035434723, -0.0010782917961478233, 0.009634340181946754, -0.031652748584747314, 0.0004352167306933552, 0.0304458849132061, -0.04215795174241066, 0.010347486473619938, 0.007755471859127283, -0.020914403721690178, -0.002472013933584094, 0.01317264512181282, -0.013385217636823654, -0.0068126097321510315, 0.009538339450955391, 0.005722317844629288, -0.004947456531226635, 0.005009171087294817, 0.006013748236000538, -0.004683454986661673, -0.02002296969294548, -0.002285155700519681, 0.014468652196228504, -0.007440041750669479, 0.010861774906516075, -0.03080245852470398, -0.02073611691594124, 0.04602539911866188, 0.022409267723560333, 0.021586406975984573, -0.006600037217140198, 0.014797797426581383, -0.022409267723560333, -0.01323436014354229, 0.00027407295419834554, 0.027264153584837914, -0.007652614265680313, -2.4803710402920842e-05, -0.00600003357976675, 0.02354755997657776, -0.005921176169067621, 0.03162531927227974, -0.005554317031055689, -0.01885724812746048, 0.028073299676179886, 0.0043508815579116344, 0.005626317113637924, -0.021037831902503967, -0.01821267418563366, 0.003946308046579361, -0.021243548020720482, -0.02154526300728321, 0.0248915683478117, -0.005406887270510197, -0.010107485577464104, 0.014756654389202595, 0.006157748866826296, -0.038208212703466415, -0.020050399005413055, -0.002792587038129568, -0.012603498995304108, -0.028018442913889885, -0.001853153225965798, -0.020941831171512604, -0.009202336892485619, 0.014057221822440624, 0.011417207308113575, -0.015209227800369263, 0.0016568663995712996, 0.02997959591448307, 0.005204600747674704, 0.00521145761013031, -0.014866368845105171, -0.009572625160217285, 0.047917984426021576, 0.009243480861186981, 0.008235475048422813, 0.0014365795068442822, -0.026016145944595337, 0.017732670530676842, -0.028196729719638824, 0.0008794335299171507, 0.0022131551522761583, -0.008496047928929329, 0.016608092933893204, 0.039085932075977325, 0.008201188407838345, -0.012541784904897213, -0.009236623533070087, 0.027853870764374733, -0.008530333638191223, 0.042541954666376114, -0.012480069883167744, -0.019776111468672752, 0.012665214017033577, -0.01926868036389351, 0.023986419662833214, 0.004158880561590195, -0.00018225102394353598, 0.019062964245676994, 0.017650384455919266, 0.007734900340437889, -0.019158964976668358, 0.003593163099139929, -0.002009154064580798, 0.0002322870132047683, 0.009538339450955391, -0.03198189288377762, -0.007124611176550388, 0.03014416992664337, 0.0326676107943058, 0.0005515745142474771, 0.007584042381495237, -0.0005708603421226144, -0.007419470231980085, 0.019419537857174873, -0.03658992052078247, 0.028004728257656097, 0.0016954380553215742, 0.00122657825704664, 0.011924638412892818, -0.0022285839077085257, -0.030610457062721252, 0.020009255036711693, 0.017074381932616234, -0.008427475579082966, 0.02869044616818428, 0.04459910839796066, -0.011766922660171986, -0.027140723541378975, 0.03370990231633186, -0.012082353234291077, 0.010923489928245544, 0.0006432892987504601, 0.0031251604668796062, 0.015620659105479717, 0.022752126678824425, -0.022587554529309273, -0.6341521143913269, -0.012157782912254333, 0.012370355427265167, -0.009675483219325542, 0.018651533871889114, 0.020352113991975784, 0.02360241860151291, 0.00015235799946822226, -0.01686866581439972, 0.010443487204611301, -0.022930413484573364, 0.008379475213587284, 0.020928116515278816, -0.016086947172880173, -0.020777259021997452, -0.03349047526717186, 0.0032074465416371822, -0.013995506800711155, -0.014304080046713352, -0.0004761455347761512, -0.01756809838116169, 0.034861911088228226, -0.0037988785188645124, 
http://www.xdnf.cn/news/503965.html

相关文章:

  • AGI大模型(21):混合检索之混合搜索
  • Git Worktree 使用
  • 【Einops】Einops rearrange方法详解
  • C# 创建线程的方式
  • 一字典两世界:优雅移除 `NSDictionary` 指定键的最佳实践
  • 编程基础:什么是变量
  • 《 C语言中const修饰指针变量的用法与解析》
  • 解决米勒补偿右边零点的方法
  • 【蓝桥杯省赛真题51】python石头运输 第十五届蓝桥杯青少组Python编程省赛真题解析
  • mcp学习笔记
  • day 28
  • ECS/GEM是半导体制造业的标准通信协议中host和equipment的区别是什么,在交互过程中,如何来定位角色谁为host,谁为equipment
  • Spring Boot 中 MyBatis 与 Spring Data JPA 的对比介绍
  • 【Python 算法零基础 3.递推】
  • 【C语言】链接与编译(编译环境 )
  • 配置ssh服务-ubuntu到Windows拷贝文件方法
  • Java Records:简洁的数据建模新方式
  • ubuntu 24.04安装ros1 noetic
  • 历史数据分析——中证白酒
  • 数据库3——视图及安全性
  • 计算机网络体系结构深度解析:从理论到实践的全面梳理
  • 电动调节 V 型球阀:工业流体控制的全能解决方案-耀圣
  • 高考AI试题查询系统
  • 网络切片:给用户体验做“私人定制”的秘密武器
  • 80. Java 枚举类 - 使用枚举实现单例模式
  • 自制操作系统(三、文件系统实现)
  • 8天Python从入门到精通【itheima】-14~16
  • 【PhysUnits】4.2 Integer Trait
  • c/c++的opencv的轮廓匹配初识
  • 提升Qt应用性能--全面解析关键技术与策略