01-Embedding开发

从一个包含食品评论的 CSV 文件中,筛选出最新且长度合规的 1000 条英文评论,调用智谱 AI(ZhipuAI)的 Embedding 模型为每条评论生成语义向量(embedding),并将结果保存为新的 CSV 文件。

ps:我的博客资源里面有对面的初始数据资源excel,还有运行后得到的excel

import os

import pandas as pd
import tiktoken
from openai import api_key
from zhipuai import ZhipuAI

ZHIPU_API_KEY = "XXXX"


#数据预处理
df=pd.read_csv('datas/fine_food_reviews_1k.csv',index_col=0)
df=df[['Time','ProductId','UserId','Score','Summary','Text']]
df=df.dropna()
df['combined']='Title:'+df.Summary.str.strip()+';Content:'+df.Text.str.strip()

#Token控制的配置
tokenizer_name='cl100k_base' #定义将要用到的分词器
max_tokens=8191#过滤掉所有 token 数 > 8191 的评论
top_n=1000#最终只想处理最近的 1000 条有效评论

df.drop('Time',axis=1,inplace=True)

#从 tiktoken 库中加载对应的分词器(Tokenizer)对象,用于将文本转换为模型可理解的 token 序列。
tokenizer=tiktoken.get_encoding(encoding_name=tokenizer_name)

#对每条评论(combined 字段),用这个 tokenizer 精确计算它包含多少 tokens。
#然后过滤掉超过 max_tokens=8191 的评论,避免调用 embedding API 时出错。
df['count_token']=df.combined.apply(lambda x:len(tokenizer.encode(x)))
df=df[df.count_token <= max_tokens].tail(top_n)

client=ZhipuAI(api_key=ZHIPU_API_KEY)

def embedding_text(text,model="embedding-3"):
    resp=client.embeddings.create(model=model,input=text)
    return resp.data[0].embedding

df['embedding']=df['combined'].apply(embedding_text)

df.to_csv('datas/embedding_output_1k_zhipu_1.csv',index=False)

初始文档

运行后文档

### 关于 Embedding 开发的技术实现 #### 什么是 EmbeddingEmbedding 是一种将离散的数据(如单词、类别标签等)映射到连续向量空间的方法。通过这种方式,可以捕捉数据间的语义关系并用于机器学习或深度学习模型中[^1]。 --- #### 嵌入表的 GPU 实现方式 在高性能计算场景下,尤其是涉及大规模稀疏特征的应用中,嵌入表通常会部署在 GPU 上以加速查询和更新操作。HugeCTR 提供了一种基于二级哈希的设计来优化嵌入特征的查询效率。具体来说: - **一级哈希**:负责将输入键值映射到全局索引范围。 - **二级哈希**:进一步定位目标键值的具体位置,从而减少冲突概率并提升访问速度。 为了降低显存占用,还可以采用稀疏压缩技术对嵌入表进行存储优化。这种方法不仅减少了资源消耗,还提高了系统的整体性能。 --- #### 文本数据的 Embedding 方案 针对文本数据,常见的 Embedding 方法包括 Word2Vec、GloVe 和 Transformer-based 模型(如 BERT)。以下是几种主流方案及其特点: | 方法 | 描述 | |------------|--------------------------------------------------------------------------------------| | Word2Vec | 利用上下文信息训练词向量,适合小型语料库[^3]。 | | GloVe | 结合共现矩阵统计特性生成固定长度的词表示。 | | Transformers | 使用自注意力机制捕获长距离依赖关系,支持动态上下文感知的词嵌入。 | 这些方法各有优劣,在实际项目中需根据需求选择合适的工具和技术栈。 --- #### 高效 Prompt 工程实践 当尝试将大模型应用于特定领域时,良好的 Prompt 设计至关重要。这一步骤旨在引导模型生成高质量响应,同时避免潜在风险。一些关键技术要点如下: - 构建清晰简洁的指令模板; - 应用多轮对话增强逻辑连贯性; - 引入对抗测试验证鲁棒性[^2]; 下面展示了一个简单的 Python 示例程序,演示如何定制化调用 OpenAI API 并传递个性化参数给 GPT 类服务端口: ```python import openai def generate_response(prompt, api_key): openai.api_key = api_key response = openai.Completion.create( engine="text-davinci-003", prompt=prompt, max_tokens=150, temperature=0.7, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0 ) return response.choices[0].text.strip() if __name__ == "__main__": user_input = input("请输入您的问题:") result = generate_response(user_input, "your_api_key_here") print(f"GPT的回答:\n{result}") ``` 上述脚本允许开发者轻松集成第三方 NLP 功能至自有产品线之中。 --- #### 数据流管理挑战 无论采取何种形式完成 embedding 表初始化过程之后,都需要妥善解决跨设备间同步难题——即怎样高效地把预处理后的样本集从远程数据库迁移到本地 CPU 缓冲区最后再传送到图形处理器单元内部执行运算任务。这一系列动作背后隐藏着诸多复杂度较高的子课题等待攻克。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值