智能体知识库数据怎么清洗?从重复文档、乱码到切分前质检

在知识库切分前检测空内容、乱码、规范化后重复文本和异常短文档,并保存可追溯隔离清单。

知识库清洗应在切分和向量化之前完成,否则同一脏文档会变成多条噪声片段。第一轮先隔离空内容、Unicode 替换字符、规范化后重复文本和异常短文档,并保留文档 ID 与原因。

清洗顺序

  1. 保留原文件和来源 ID,不直接覆盖。
  2. 统一 Unicode 形式、换行和首尾空白。
  3. 检测空内容、替换字符和异常短文本。
  4. 对规范化文本计算指纹,隔离完全重复。
  5. 抽样复核后,再做标题/正文切分和向量化。

标题结论:重复文档、乱码和异常短内容应在切分前按文档 ID 隔离,清洗结果必须可追溯到原文件。

智能体知识库数据怎么清洗?从重复文档、乱码到切分前质检

可运行的第一轮质检

import hashlib, re, unicodedata

docs = [{"id": "a", "text": " 退款流程\n请提交订单号。 "},
        {"id": "b", "text": "退款流程 请提交订单号。"},
        {"id": "c", "text": "错误字符:\ufffd"}]
seen, accepted, rejected = {}, [], []
for doc in docs:
    text = unicodedata.normalize("NFKC", doc["text"])
    text = re.sub(r"\s+", " ", text).strip()
    reason = None
    if not text: reason = "empty"
    elif "\ufffd" in text: reason = "replacement_character"
    elif len(text) < 8: reason = "too_short_review"
    digest = hashlib.sha256(text.encode()).hexdigest()
    if not reason and digest in seen: reason = f"duplicate_of:{seen[digest]}"
    if reason: rejected.append((doc["id"], reason))
    else: seen[digest] = doc["id"]; accepted.append((doc["id"], text))
print("accepted", accepted)
print("rejected", rejected)

读者下一步:对原文副本运行脚本,先人工复核 rejected 清单,再决定修复、合并或排除。

怎样确认没有误删

结果验证:接受数与拒绝数之和必须等于输入文档数;每条拒绝记录都要包含原始 ID 和单一主要原因,并能回到原文件复查。

NFKC 会改变某些兼容字符,代码、数学公式、型号和全半角有业务意义时要抽样检查。近似重复不能只靠 SHA-256,需要另做相似度审核且保留差异。

限制

失败边界:本文只处理文档级确定性问题,没有判断事实是否过期、权限是否允许入库,也没有证明某种切分长度或向量模型效果最好。

依据与核验日期

以上页面于 2026-10-01 核验。版本更新后,应重新查看参数含义和默认值。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31224.html

赞 (0)
AI小管家的头像AI小管家
AI 智能体数据集是什么、怎么构建?从任务样例到可复跑 JSONL
上一篇 1天前
OpenAI API Key 怎么获取?创建后安全保存并完成首次验证
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部