将企业数据「喂」给 Agent 的管道。RAG(检索增强生成)的 Retriever 部分——文档解析、分块、Embedding、检索策略,每一步都决定最终效果。
| 数据类型 | 格式 | 推荐工具 | 注意事项 |
|---|---|---|---|
| 文本 + 排版 | pdf-parse / PyMuPDF | 表格、图表需要特殊处理 | |
| Markdown | 结构化文本 | 直接读取 | 最友好的格式,按标题分块 |
| Word (.docx) | 富文本 | python-docx | 样式信息可能丢失 |
| 网页 | HTML | Playwright / BeautifulSoup | 需要去重、反爬 |
| 飞书 / Notion | 结构化 | 官方 API | 各平台 API 不同 |
| 数据库 | 结构化 | SQL 查询 → 文本 | 需要 schema 描述 |
| 代码仓库 | 代码文件 | tree-sitter | 保留代码结构,按函数分块 |
分块是 RAG 中最被低估的环节。块太大,相关上下文被淹没;块太小,语义不完整。
按字符数或 token 数硬切
✓ 实现简单结果稳定
✗ 可能切断语义单元(句子、段落)
按段落、标题、换行符等自然边界切
✓ 保留语义完整性效果好
✗ 块大小不均匀需要额外处理
先按段落,不够再按句子,再不够按单词
✓ 兼顾完整性和灵活性推荐实践
✗ 实现稍复杂
向量检索擅长语义相似,关键词搜索(BM25)擅长精确匹配。两者结合效果最好:
用户的问题往往太短、口语化、或者包含多义词。直接检索效果差。
用户原始问题
「我们的手机用的是什么芯片」
LLM 改写后
「公司手机产品的处理器芯片型号及供应商」
大块(Parent)保证语义完整,小块(Child)保证检索精度。 先用小块召回,再用大块提供上下文。适合长文档场景。