你提供的代码片段主要是从数据框 `df` 中提取内容并生成嵌入向量。代码的逻辑是正确的,但有一些地方可以进行优化和改进。 代码优化建议 1. 使用列表推导式:在提取 `texts` 时,可以使用列表推导式来简化代码。 2. 避免重复计算:在 `len(emds)` 和 `len(emds[0])` 的计算中,可以避免重复调用 `len` 函数。 3. 使用 `tqdm` 显示进度:在处理大量数据时,使用 `tqdm` 可以更直观地显示进度。 优化后的代码 ```python from tqdm import tqdm import pnlp # 使用列表推导式提取文本内容 texts = [v.content for v in df.itertuples()] # 初始化嵌入向量列表 emds = [] # 使用 tqdm 显示进度 for idx, batch in tqdm(enumerate(pnlp.generate_batches_by_size(texts, 10)), desc="Processing batches"): response = get_embedding_direct(batch) for v in response.data: emds.append(v.embedding) print(f"batch: {idx} done") # 检查嵌入向量的数量和维度 assert len(emds) == 3964 and len(emds[0]) == 1536, "嵌入向量的数量或维度不正确" ``` 需要注意的逻辑点 1. 数据一致性:确保 `df` 中的 `content` 字段不为空,否则在生成嵌入向量时可能会出错。 2. API 调用限制:`get_embedding_direct` 函数可能有调用频率限制,确保在循环中处理批次时不会触发限制。 3. 内存管理:如果 `texts` 或 `emds` 非常大,考虑分块处理或使用生成器来减少内存占用。 这些优化和改进可以帮助提高代码的可读性和效率,同时确保数据处理的正确性。 [2025-03-21 10:20:06 | AI写代码神器 | 439点数解答]