方法¶
提取算法指南以及何时使用每种方法。
概述¶
方法是底层算法,从文本中提取知识。它们决定: - 如何处理文本 - 如何识别实体和关系 - 提取的质量和风格
方法类别¶
典型方法¶
直接提取,无需检索。
最适合:较小的文档、直接提取
graph LR
A[Document] --> B[LLM Processing]
B --> C[Extract Structure]
基于 RAG 的方法¶
检索增强生成 将信息检索与文本生成相结合。
最适合:大型文档、复杂查询
graph LR
A[Document] --> B[Chunk & Index]
B --> C[Retrieve Relevant]
C --> D[Generate Answer]
D --> E[Extract Structure]
典型方法¶
itext2kg¶
描述:高质量基于三元组的提取
特点: - 针对三元组质量优化 - 迭代精炼 - 适合知识库构建
最适合: - 知识图谱构建 - 高质量要求 - 三元组提取
用法:
itext2kg_star¶
描述:增强版 iText2KG
特点: - 提高提取质量 - 更好地处理复杂情况 - 增强的实体链接
最适合: - 质量至关重要时 - 复杂提取场景 - 生产系统
用法:
kg_gen¶
描述:知识图谱生成器
特点: - 可配置的生成 - 灵活的 schema - 快速处理
最适合: - 自定义 schema - 快速原型 - 灵活需求
用法:
atom¶
描述:带证据的时序知识图谱
特点: - 时序事实提取 - 证据归属 - 置信度评分
最适合: - 时序分析 - 事实验证 - 时间线提取
用法:
基于 RAG 的方法¶
light_rag¶
描述:轻量级基于图谱的 RAG
特点: - 最快的 RAG 方法 - 二元边(source → target) - 速度/质量的良好平衡 - 适合大多数用例
最适合: - 通用提取 - 中大型文档 - 快速结果
用法:
graph_rag¶
描述:带社区检测的 Graph-RAG
特点: - 社区检测用于组织 - 层次化摘要 - 最适合非常大的文档 - 较慢但彻底
最适合: - 非常大的文档(书籍、长论文) - 复杂主题结构 - 研究论文
用法:
hyper_rag¶
描述:基于超图谱的 RAG
特点: - N 元超边(2+ 个实体) - 捕获复杂关系 - 更丰富的图谱结构
最适合: - 多方关系 - 项目协作 - 复杂组织结构
用法:
hypergraph_rag¶
描述:高级超图谱 RAG
特点: - 增强的超图谱能力 - 高级关系建模
最适合: - 复杂超图谱场景 - 高级关系分析
用法:
cog_rag¶
描述:认知 RAG
特点: - 认知检索机制 - 以推理为中心
最适合: - 推理任务 - 问答系统
用法:
选择指南¶
按文档大小¶
| 大小 | 推荐 |
|---|---|
| 小型(< 1K 词) | itext2kg, kg_gen |
| 中型(1-10K) | light_rag, itext2kg_star |
| 大型(10-50K) | light_rag, graph_rag |
| 非常大(> 50K) | graph_rag |
按用例¶
| 用例 | 推荐 |
|---|---|
| 快速提取 | light_rag |
| 最佳质量 | itext2kg_star |
| 大型文档 | graph_rag |
| 复杂关系 | hyper_rag |
| 时序事实 | atom |
| 知识库 | itext2kg |
按优先级¶
| 优先级 | 推荐 |
|---|---|
| 速度 | light_rag |
| 质量 | itext2kg_star |
| 成本 | light_rag |
| 完整性 | graph_rag |
比较表¶
| 方法 | 速度 | 质量 | 内存 | 最佳用途 |
|---|---|---|---|---|
| itext2kg | ⭐⭐⭐ | ⭐⭐⭐ | ⭐ | 质量优先 |
| itext2kg_star | ⭐⭐⭐ | ⭐⭐⭐ | ⭐ | 生产质量 |
| kg_gen | ⭐⭐⭐ | ⭐⭐ | ⭐ | 灵活性 |
| atom | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | 时序数据 |
| light_rag | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | 通用 |
| graph_rag | ⭐ | ⭐⭐⭐ | ⭐⭐⭐ | 大型文档 |
| hyper_rag | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | 复杂关系 |
列出可用方法¶
from hyperextract.methods import list_methods
methods = list_methods()
for name, info in methods.items():
print(f"{name}: {info['description']}")
print(f" Type: {info['type']}")