使用 CLI 从单个来源或存储桶中批量删除 Communications Mining 的数据,既可以按时间范围删除,也可以使用基于期限的保留来删除整个数据集。
CLI 提供了三种批量删除数据的方法,例如在清理历史数据或应用保留策略时。
| 命令 | 作用域 | 将其用于 |
|---|---|---|
re delete bulk | 一个来源 | 按时间范围删除注释 |
re delete bulk-emails | 一个存储桶 | 按时间范围删除原始电子邮件 |
re prune | 您列出的数据集中的每个来源和存储桶 | 将基于年龄的保留应用于整个数据集、注释和原始电子邮件 |
re delete bulk 和 re delete bulk-emails 在运行后立即删除。没有确认提示,没有空运行,也没有备份——先备份一个。仅 re prune 会备份其删除的内容。
有关命令采用的选项,请运行re <command> --help ,或参阅命令参考。
对于所有三个命令,时间段基于注释或电子邮件的 timestamp 字段,而不是上传到 Communications Mining™ 的日期时间。
对于 re delete bulk 和 re delete bulk-emails,范围的两端都是可选项:均不提供,命令将覆盖整个源或存储桶。已包含 --from-timestamp; --to-timestamp 适用于注释,但不适用电子邮件。
删除数据前备份数据
在删除或修改注释之前,您可能需要备份带注释的注释,以免意外丢失模型训练器的手动工作:
re get comments \
<project_name/source_name> \
--dataset <project_name/dataset_name> \
--reviewed-only true \
--file <output_file_name.jsonl>
re get comments \
<project_name/source_name> \
--dataset <project_name/dataset_name> \
--reviewed-only true \
--file <output_file_name.jsonl>
如果已将源添加到多个数据集,则应为每个数据集运行前面提到的命令。
该命令捕获 --include-annotated=false 保留的注释,而不是因删除操作而移除的注释。要捕获这些数据,请导出您将要删除的同一范围:对于来源,请使用re get comments搭配--from-timestamp和--to-timestamp ,如批量下载中所述;对于存储桶:
re get emails \
<project_name/bucket_name> \
--from-timestamp FROM_TIMESTAMP \
--to-timestamp TO_TIMESTAMP \
--file <output_file_name.jsonl>
re get emails \
<project_name/bucket_name> \
--from-timestamp FROM_TIMESTAMP \
--to-timestamp TO_TIMESTAMP \
--file <output_file_name.jsonl>
仅当您将 --attachments true 传递给 re get comments 时,系统才会导出附件内容,并且只会在您将 --attachments <directory> 传递给 re create comments 时,才会再次上传附件内容。否则,备份将保存附件元数据,但不会保存文件本身。
从来源中删除注释
删除批注会改变模型性能。
如果要将要删除的注释添加到一个或多个本可对其进行批注的数据集,则删除已批注的注释将导致以后这些数据集中的模型性能发生变化。已发布的模型不受影响。
(可选)您可以将 CLI 配置为跳过带批注的注释。
以下命令将删除来源中FROM_TIMESTAMP和TO_TIMESTAMP之间的所有注释,但带注释的注释除外。时间戳应采用RFC 3339 格式,例如1970-01-02T03:04:05Z 。
re delete bulk \
--source <project_name/source_name> \
--include-annotated=false \
--from-timestamp FROM_TIMESTAMP \
--to-timestamp TO_TIMESTAMP
re delete bulk \
--source <project_name/source_name> \
--include-annotated=false \
--from-timestamp FROM_TIMESTAMP \
--to-timestamp TO_TIMESTAMP
如果确定要删除带注释的注释,则可以设置--include-annotated=true 。
在这里, --include-annotated=false保留在包含来源的任何数据集中批注的注释,包括您看不到的数据集。re prune使用范围较小的规则。
删除注释不会删除解析注释的原始电子邮件。
从存储桶中删除电子邮件
要删除原始电子邮件本身,请按时间范围定位存储桶:
re delete bulk-emails \
--bucket <project_name/bucket_name> \
--from-timestamp FROM_TIMESTAMP \
--to-timestamp TO_TIMESTAMP
re delete bulk-emails \
--bucket <project_name/bucket_name> \
--from-timestamp FROM_TIMESTAMP \
--to-timestamp TO_TIMESTAMP
这将删除该范围中的所有电子邮件,包括已解析为您一直使用的来源以外的电子邮件。不会删除已从这些电子邮件中解析的注释。
要改为删除单个电子邮件,请一次最多传递 32 个 ID:
re delete emails \
--bucket <project_name/bucket_name> \
<email_id>...
re delete emails \
--bucket <project_name/bucket_name> \
<email_id>...
始终至少传递一个 ID。re delete emails 和 re delete comments 都不会检查空列表,并且不携带 ID 的删除请求可能会删除超出预期的更多内容,因此请注意未展开的占位符和空的 Shell 变量。
在数据集中剪除旧数据
re prune 在单次运行中将基于时长的保留应用于一个或多个数据集,并删除:
- 来自所列出的数据集中的每个来源的、超过截止日期的注释。
- 这些来源读取的每个存储桶中超过截止时间的电子邮件。
截止日期是运行开始的确切时刻减去 --older-than-days 的值,而不是以日历日为边界。
re prune 将永久删除数据。其写入的备份是撤消运行的唯一方法,并且包含个人数据。将备份写入安全位置并妥善保存,并始终先进行空运行。
剪裁运行的工作原理
- 解析作用域。您传递给
--datasets的数据集中的每个来源以及这些来源从中读取的每个存储桶都在范围内。 - 检查共享来源。如果范围内的来源也属于您未列出的数据集,则运行将中止并命名该数据集。只能检查您有权读取的数据集。
- 确认。该命令总结了作用域和适用的注意事项,然后等待您执行。
--dry-run和-y会跳过此步骤。 - 备份。首先删除每个范围内数据集中已审核的注释,然后选择要删除的注释和电子邮件。
- 验证后删除。运行会根据清单中的记录计数和校验和检查每个备份文件,在删除任何内容之前,如有一个不匹配的情况会中止。
空运行在第 4 步后停止:它将写入真实备份并报告将要删除的内容,但既不验证,也不删除。
运行剪裁
以 --dry-run 开头。
re prune \
--datasets <project_name/dataset_name> \
--older-than-days 730 \
--backup-dir <backup_directory> \
--dry-run
re prune \
--datasets <project_name/dataset_name> \
--older-than-days 730 \
--backup-dir <backup_directory> \
--dry-run
当计数看起来不错时,在不带 --dry-run 的情况下运行相同的命令。
默认情况下,如果在您列出的其中一个数据集中查看该注释,则无论该注释是否存在,系统都会保留。仅在您无法访问的数据集中批注的注释不重要,将被删除。传递 --include-annotated 可删除旧注释,无论它们是否带批注,请记住上述对模型性能的影响。
清理单个邮箱
--mailbox会将删除的内容限制为从一个邮箱同步的数据,当存储桶收到多个邮箱并且只有一个邮箱需要修剪时,此功能非常有用。平台会根据确切的邮箱名称筛选电子邮件。根据Mailbox ID用户属性,注释不区分大小写,仅当源的转换标签记录邮箱名称时,电子邮件解析才会设置该属性。
不包含匹配的 Mailbox ID 的注释将永远不会被匹配,因此,如果作用域内的注释不包含该属性,则邮箱作用域内的运行不会删除任何这些注释。在依赖 re get sources 之前,请使用 --mailbox 检查转换标签。
--mailbox 不会缩小注释备份的范围。
备份包含的内容
每次运行都会在 --backup-dir 下创建一个新文件夹,并以运行开始的 UTC 时间命名。re prune 从不重用现有文件夹。
<backup_directory>/20260807T104500Z/
├── manifest.json
├── annotations/<dataset-id>/<source-id>.jsonl
├── deleted-comments/<source-id>.jsonl
└── deleted-emails/<bucket-id>.jsonl
<backup_directory>/20260807T104500Z/
├── manifest.json
├── annotations/<dataset-id>/<source-id>.jsonl
├── deleted-comments/<source-id>.jsonl
└── deleted-emails/<bucket-id>.jsonl
| PATH | 内容 |
|---|---|
manifest.json | 运行摘要以及每个备份文件的索引。 |
annotations/ | 每个范围内数据集中的每条已审核注释及其批注、每个数据集一个文件和来源,而不仅仅是要删除的文件。 |
deleted-comments/ | 选择要删除的注释,每个来源一个文件,格式与 re get comments 相同,但不包含注释。 |
deleted-emails/ | 选择要删除的电子邮件,每个存储桶一个文件,包括其原始 MIME 内容。 |
清单文件记录运行的参数(run_id、cutoff、include_annotated、mailbox、datasets),删除集的大小(comment_count、email_count)以及每个备份文件的其涵盖的 resource、其 file 相对于备份文件夹的路径、其记录 count 以及 crc32 校验和。
comment_count 和 email_count 是选定运行的删除集大小。清单是在删除任何内容之前写入的,之后不会更新,因此清单不会记录已成功删除的内容。
从备份中恢复
需手动还原,并使用普通 re create 命令。备份文件按 ID 命名:re get datasets、re get sources 和 re get buckets 会在名称旁边列出 ID,清单文件在其 resource 字段中提供了每个删除集文件涵盖的来源或存储桶。清单中每个文件的 count 表示其保存的记录数量,这值得与还原的内容进行比较。
将已删除的注释还原到其来源:
re create comments \
--source <project_name/source_name> \
--file <backup_directory>/<run_id>/deleted-comments/<source-id>.jsonl
re create comments \
--source <project_name/source_name> \
--file <backup_directory>/<run_id>/deleted-comments/<source-id>.jsonl
默认剪除会保留您列出的数据集中的已批注注释,因此批注仅需要在使用 --include-annotated 运行后恢复。从注释备份中恢复 — re create annotations 读取该文件,然后仅上传注释,注释本身保持不变:
re create annotations \
--source <project_name/source_name> \
--dataset <project_name/dataset_name> \
--file <backup_directory>/<run_id>/annotations/<dataset-id>/<source-id>.jsonl
re create annotations \
--source <project_name/source_name> \
--dataset <project_name/dataset_name> \
--file <backup_directory>/<run_id>/annotations/<dataset-id>/<source-id>.jsonl
将已删除的电子邮件还原到其存储桶:
re create emails \
--bucket <project_name/bucket_name> \
--file <backup_directory>/<run_id>/deleted-emails/<bucket-id>.jsonl
re create emails \
--bucket <project_name/bucket_name> \
--file <backup_directory>/<run_id>/deleted-emails/<bucket-id>.jsonl
批注备份将涵盖数据集中的每条已审核注释,而不仅仅是已删除的注释,因此还原注释时会重新应用运行时的批注。审核自运行以来完成的工作会覆盖备份中的注释。
将原始电子邮件上传回存储桶会导致平台将其解析为从该存储桶读取的来源,从而重新创建注释。除非您有意,否则不要同时还原同一来源的电子邮件和注释。如果您还原电子邮件而不是注释,请等待注释重新出现,然后再恢复注释,这只能应用于已经存在的注释。
re create comments 和 re create emails 会上传,因此 CLI 会要求您是否同意为其支付 AI Unit 费用。re create annotations 不收费。
限制和注意事项
备份和还原:
- 未备份注释附件内容。只有附件元数据会恢复,因此附件内容无法还原。系统会整体备份电子邮件,因此会保留其 MIME 内容包含的附件。
- 不会恢复已排除的提取字段注释。它们存在于备份中,但上传格式无法重新应用它们。
- 空运行会写入真实备份。它将读取所有要删除的数据,并将其写入
--backup-dir,因此请像任何其他备份一样安全地处理其输出。
删除范围和行为:
- 只有您列出的数据集中的批注会保护注释。仅在您无法访问的数据集中已批注的批注将被视为未批注:将其删除,并且不会备份该批注。
- 电子邮件是按期限删除整个存储桶的。如果没有
--mailbox,系统将从每个作用域内的存储桶中删除截止日期之前的所有电子邮件,包括提供其他来源或数据集的电子邮件,无论这些来源或数据集是否在作用域内。 - 所列数据集以外的源超出范围。即使存储桶中的电子邮件被删除,他们的注释也不会被删除。这可能会留下其原始电子邮件已不存在的注释。
- 共享源检查仅可查看您可读的内容。如果范围内的来源也属于您无法访问的项目中的数据集,则该数据集将丢失在此处删除的注释,并且运行时无法向您发出警告。
- 删除不是事务性的。如果操作中途失败(例如出现网络错误),则已删除的数据将保持删除状态。备份保持不变,因此请重新运行命令,或从备份还原。