真正的智能体工程不是“生成文本”, 而是让 Agent 在混乱、不完整、噪声巨大的真实环境中正确行动。
在现实业务里,智能体面临的数据往往是:
- 长文档
- 格式乱的 PDF
- 网页文本
- 用户的碎片化自然语言
- 层级复杂的对话历史
- 带噪声的 OCR
- 含截图、代码块、表格的混合内容
这些数据 无法直接喂给模型处理。 否则模型会:
- 跑偏
- 忘记上下文
- 忽略重点
- 无法结构化
- 抽取错误
- 工作流直接中断
所以,任何生产级智能体必须具备: 非结构化数据处理(Unstructured Data Handling)能力。
今天把这套体系讲透,并给你一套可直接落地的“数据预处理 → 独立技能化”的全流程方法。
- 为什么智能体必须处理非结构化数据?
只要智能体接触真实业务,就一定要处理“脏数据”:
| 法律 | PDF 合同、扫描件 |
|---|---|
| 企业 | 周报、日报、会议纪要 |
| 媒体 | 抓取的网页、公众号文章 |
| 运维 | 日志(log)、监控输出 |
| 运营 | 评论、用户反馈 |
| 产品 | 碎片化需求 |
这些内容的特点:
- 内容冗长
- 噪声巨大
- 结构不清晰
- 不适合直接推理
- 需要先清洗、抽取、分段
智能体如果没有预处理,会直接“死”在数据处理环节。
2. 非结构化数据分四类:每类处理方式不同
① 文本(Text)
特点:
- 长度不固定
- 内容无结构
- 部分格式混乱
- 可以直接 chunk 化处理
处理方法:
- 分段(chunking)
- 文本清洗
- 标题抽取
- 内容摘要
- 语义向量化
② PDF / Word / 图片 OCR
特点:
- 富文本格式
- 表格、图片、脚注、页眉
- 结构混乱
- OCR 可能有识别错误
处理方法:
- 解析 PDF → 纯文本
- 清洗格式
- 识别大标题、小标题
- 修复 OCR 错误
- 表格抽取(tabular extraction)
③ 对话(Conversation)
特点:
- 多轮对话
- 上下文强依赖
- 嘈杂、零散
- 隐含意图强
处理方法:
- 角色分离
- 意图抽取
- 上下文压缩
- 保留关键 facts
- 会话归一化(Normalize)
④ 网页(HTML)
特点:
- 大量 HTML 噪声
- 广告、导航、脚本
- 图片/视频混杂
- 逻辑结构抽取困难
处理方法:
- 提取正文(正文抽取)
- 清洗 HTML 标签
- 抽取段落、标题、列表
- 元数据识别
3. 非结构化数据处理的三层架构(核心)
智能体的完整处理链路是:
[1] 输入层(Input Layer)
↓
[2] 清洗层(Cleaning Layer)
↓
[3] 结构化层(Structuring Layer)
↓
[4] 推理层(LLM Reasoning Layer)
下面每层给你具体可实现的工程方法。
4. 输入层(Input Layer):让数据“可读取”
这一层的目标:
- 不管什么格式,统一为可处理的中间格式:Text + Metadata。
例如 PDF:
input.pdf → extract_text + extract_title + extract_toc
网页:
html → clean_html → extract_main_content
对话:
chat_logs → timestamp + role + message
最终,所有内容都需要变成统一格式:
{
"type": "document",
"content": "...纯文本或段落结构...",
"meta": {
"source": "pdf",
"length": 32000,
"title": "..."
}
}
5. 清洗层(Cleaning Layer):清除噪声 / 修复格式
数据清洗的目标:
- 去噪
- 修复断句
- 去除无关信息
- 统一字符格式
你应该为智能体设计一个 清洗技能(CleanSkill) :
CleanSkill 输入:
{
"text": "原始内容"
}
CleanSkill 输出:
{
"clean_text": "清洗后的文本"
}
建议清洗内容包括:
- 去掉脚本、广告、模板文本
- 去掉图片替代字符([image.gif])
- 修复 PDF 换行问题
- 去掉多余空行
- 标准化标点
清洗后,模型输出质量会提升 50%+ 。
6. 结构化层(Structuring Layer):将文本转为“可用格式”
结构化是整个流程的核心。
常见结构化方式:
① 抽取段落(Paragraph Extraction)
将长内容拆成:
[ {"title": "背景", "content": "..."}, {"title": "分析", "content": "..."}, ...]
② 抽取关键信息(Information Extraction)
比如合同类文档:
{
"party_a": "...",
"party_b": "...",
"effective_date": "...",
"price": "..."
}
③ 生成层级结构
(Tree Structure)
比如一本在线文章:
1. 背景
1.1 问题
1.2 目标
2. 方法
3. 结论
让 Agent 能按结构理解。
④ 小结归纳(Summarization)
对每段生成:
{
"summary": "...",
"keywords": ["a","b","c"]
}
便于后续 LLM 推理。
⑤ chunking(分段)
解决:
- 超长文本 → token 超限
- 长度超过模型能力
建议:
- 每段 500–1000 token
- 重叠 50–100 token(避免断裂)
7. 推理层(Reasoning Layer):将结构化内容用于任务执行
当结构化流程完成,LLM 才能:
- 判断内容要点
- 对信息做推理
- 自动生成内容
- 分段执行任务
- 多步工作流正常运转
例如在一份 PDF 合同上执行任务:
[输入] PDF →
[清洗] CleanSkill →
[结构] ExtractSkill →
[推理] AnalyzeSkill →
[总结] SummarySkill →
[生成] ReportSkill
这就是一个完整的 Agent 工作流。
8. 生产级智能体的必备非结构化技能(6 个)
这 6 个技能强烈建议你加入你的智能体系统:
| 技能 | 功能 |
|---|---|
| CleanSkill | 文本清洗 |
| ChunkSkill | 分段 |
| SummarySkill | 小结 |
| InfoExtractSkill | 信息抽取 |
| StructureSkill | 结构化(树状文档) |
| ValidatorSkill | 校验提取结果 |
这 6 個技能可以通用于任何 AI 项目。
9. 非结构化数据的错误处理
Agent 常见错误:
- 提取错字段
- 丢掉段落
- 忽略表格
- 中途跑偏
- 结构化结果不符合 schema
解决方法:
① 每一步都加校验
使用 ValidatorSkill:
{
"valid": true/false,
"error": "...",
"fix_suggestion": "..."
}
② 出错就回退到上一步(rollback)
借助状态机实现回滚逻辑。
③ 长内容分段处理,避免乱码、丢内容
10. 重点总结
- ✔ 所有真实内容都是非结构化的
- ✔ 智能体必须具备 非结构化处理 → 结构化 → 推理 的完整能力
- ✔ 统一中间格式,是整个系统成功的基础
- ✔ 清洗、分段、结构化是最重要的 3 个步骤
- ✔ 生产级智能体必须拥有六大数据处理技能
- ✔ 多步任务必须 □ 清洗 → □ 分段 → □ 结构化 → □ 推理