LangExtract

活跃
GitHub Python Apache-2.0

简介

Google 开源的 Python 库,用于利用 LLM 从非结构化文本中精确提取结构化信息,支持源文本标注和交互式可视化,适用于数据标注和知识抽取场景。

核心特性

  • 精确源文本锚定 — 每条提取结果映射到原文精确位置,支持视觉高亮追溯验证
  • 受控结构化输出 — 基于 few-shot 示例强制一致输出 Schema,利用 Gemini 受控生成保证结果鲁棒性
  • 长文档优化策略 — 通过文本分块、并行处理和多轮扫描克服大文档「大海捞针」问题,提升召回率
  • 交互式可视化 — 生成自包含 HTML 文件,可交互浏览数千条提取实体在原文中的上下文
  • 灵活模型支持 — 支持 Google Gemini 云端模型和 Ollama 本地模型,可自定义模型提供商
  • 任意领域适配 — 仅需几个示例即可定义任意领域的提取任务,无需模型微调

适用场景

💡 临床文档信息提取 — 从病历、临床笔记中提取药物名称、剂量、诊断和患者信息,支持医疗 NLP 流程
💡 学术文献结构化 — 从论文全文中提取人物、情感、关系等结构化数据,辅助文学分析和知识图谱构建
💡 报告自动化解析 — 自动解析 radiology report 等专业报告,提取关键发现和结论
💡 数据标注与知识抽取 — 为训练数据集提供高质量标注,支持NER、关系抽取等NLP任务
💡 文档理解流水线 — 作为 RAG 系统的前置处理模块,从非结构化文档中提取结构化元数据

快速开始

```python
import langextract as lx

result = lx.extract(
    text_or_documents="Lady Juliet gazed longingly at the stars, her heart aching for Romeo",
    prompt_description="Extract characters, emotions, and relationships in order of appearance.",
    examples=[lx.data.ExampleData(
        text="ROMEO. But soft! What light through yonder window breaks?",
        extractions=[lx.data.Extraction(
            extraction_class="character",
            extraction_text="ROMEO",
            attributes={"emotional_state": "wonder"}
        )]
    )],
    model_id="gemini-3.5-flash",
)
lx.io.save_annotated_documents([result], output_name="results.jsonl")
```

相关项目