当前位置: 首页 > 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, 

相关文章:

  • Spark缓存-persist和cache方法
  • 前端-HTML元素
  • Raft 协议:分布式一致性算法的核心思想
  • 电动调节 V 型球阀:工业流体控制的全能解决方案-耀圣
  • HTTP与HTTPS协议的核心区别
  • 通过多线程获取VENC的H264码流数据
  • 刷leetcodehot100返航版--二叉树
  • 计算机视觉与深度学习 | Python实现EMD-SSA-VMD-LSTM时间序列预测(完整源码和数据)
  • Day12-苍穹外卖(完结篇)
  • ctfshow——web入门254~258
  • 98. 验证二叉搜索树
  • 如何优化关键词长度:2025年SEO实用指南
  • 软件设计师考试《综合知识》创建型设计模式考点分析
  • SAP HCM 0008数据存储逻辑
  • 电池的充放电电流中C的含义
  • 【SpringBoot】关于MP使用中配置了数据库表前缀的问题
  • 在宝塔中使用.NET环境管理部署 .NET Core项目
  • 生产级编排AI工作流套件:Flyte全面使用指南 — Development cycle
  • mysql中limit深度分页详细剖析【爽文】
  • 架构师论文《论模型驱动架构软件开发方法及其应用》
  • 全国游泳冠军赛:孙杨、潘展乐同进400自决赛,今晚将正面对决
  • 试点首发进口消费品检验便利化措施,上海海关与上海商务委发文
  • 女子七年后才知银行卡被盗刷18万元,警方抓获其前男友
  • 深圳南澳码头工程环评将再次举行听证会,项目与珊瑚最近距离仅80米
  • 陕西省安康市汉阴县县长陈永乐已任汉阴县委书记
  • 媒体:“西北大学副校长范代娣成陕西首富”系乌龙,但她的人生如同开挂