langextract
用大模型从任意文本中精准提取结构化信息,自动映射到原文位置,支持交互式可视化审查
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用大模型从任意文本中精准提取结构化信息,自动映射到原文位置,支持交互式可视化审查
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:一份长达上百页的临床病历摆在眼前,AI 助手要在几秒内把所有药品名称、剂量、服用时间一一摘出来,还必须标注每条信息对应原文哪一行——不是靠猜测,而是有凭有据。这样的需求,在 LangExtract 出现之前,往往需要专业的 NER(命名实体识别)模型配合大量标注数据才能实现。而现在,一行 Python 代码就能搞定。
LangExtract 最初诞生于 Google 内部的医学信息提取需求。处理临床文本是 NLP 领域出了名的硬骨头:医生书写的病历行文自由、术语缩写多、句子结构不规则,传统规则引擎几乎束手无度。早期的 LangExtract 团队发现,与其针对每个科室训练专用模型,不如让大语言模型(LLM)自己学会「读懂指令、精准摘取」的能力——用户只需写几行提示词(prompt)和几个示例(few-shot examples),模型就能自动适应任何领域的提取任务。
这个思路迅速扩展。2025 年 8 月,Google 正式以开源项目形式发布 LangExtract,并同步发布于 Google Developers Blog 和 InfoQ 等技术平台,迅速积累超过 36,000 颗 GitHub 星标。
第一,来源可溯(Source Grounding)。 这是 LangExtract 最引以为傲的特性。每次提取结果都会附带 char_interval 字段,精确指向原文中的字符位置。也就是说,模型说「这段话提取了'阿司匹林'」,用户可以立刻在原文中定位到这个词,而不是凭置信度猜测。这个机制对于医疗、法律、金融等高风险场景至关重要——结论必须有据可查。
第二,结构化输出保证(Schema Enforcement)。 LangExtract 通过 Pydantic 数据模型严格约束输出格式。用户通过 few-shot examples 指定期望的结构——比如「提取角色名、情绪状态、关系类型」——模型就会严格按这个 schema 吐出 JSON 数据,不会有答非所问的自由发挥。
第三,长文档专项优化。 大模型处理长文本时容易「捡了芝麻丢了西瓜」,重要细节淹没在海量 token 中。LangExtract 采用了优化的文本分块(chunking)策略,配合并行处理和多轮提取机制,确保大文档中每个角落的信息都不会被漏掉。
LangExtract 的使用哲学是「极简上手,深度可调」。标准使用流程只需三步:
第一步:定义提取任务。 编写 prompt 说明要提取什么,再提供 1-2 个高质量的 few-shot examples。prompt 越清晰、examples 越规范,效果越好。
第二步:调用 API。 一行 lx.extract() 即可。默认使用 Gemini 3.5 Flash 作为引擎,也支持 OpenAI GPT 系列、本地 Ollama 模型。
第三步:可视化结果。 提取结果可保存为 JSONL 文件,通过 lx.visualize() 生成一个自包含的交互式 HTML 文件——在浏览器里打开,所有实体按颜色分类标注在原文中,支持放大缩小和筛选。
图1:LangExtract 项目 Logo(来源:项目 GitHub 仓库)

图2:LangExtract 对《罗密欧与朱丽叶》文本进行实体提取的交互式可视化演示,实体按类型(角色、情绪、关系)分类着色标注在原文中(来源:项目 GitHub 仓库)
从代码结构来看,LangExtract 采用了清晰的模块化架构:
langextract/core/ — 核心提取引擎,处理分块、并行调度和 schema 验证langextract/providers/ — 模型接入层,内置 Gemini、OpenAI、Ollama 三个 provider,通过插件机制(entry-points)支持第三方扩展langextract/visualization.py — HTML 可视化生成器,不依赖任何前端框架langextract/schema.py — Pydantic 数据模型定义开发者如果想接入其他模型,只需实现统一的 provider 接口,在 pyproject.toml 中注册 entry-point,即可与内置 provider 无缝协作。这种「模型无关」的设计让 LangExtract 不绑定任何云厂商,用户可以自由切换。
LangExtract 没有独立的 Web UI,所有交互通过 Python API 完成。安装仅需一行 pip install langextract,运行时需要指定 API key(Gemini、OpenAI 或本地 Ollama)。从难度上看,部署属于「极简」级别——pip 安装 + 配置 API key 即可运行,GPU 非必须。
但使用门槛并非为零:用户需要理解 prompt engineering 和 few-shot learning 的基本概念,知道如何撰写高质量的 extraction prompt、如何构建代表性 examples。这对 AI 开发者来说是基本功,但对非技术用户(如医疗数据管理员)可能有一定学习曲线。
必须承认,LangExtract 并非万能。首先,它是纯 Python 库而非独立服务,没有 Web 界面也没有 REST API,不适合需要团队共享或远程调用的场景。其次,提取质量高度依赖 prompt 和 examples 的质量——如果 prompt 写得太模糊,或者 examples 本身有歧义,模型输出的结果同样不可靠。第三,Gemini API 有调用频率限制和生命周期(retirement date),生产环境使用需要关注版本管理。
LangExtract 代表了一个重要趋势:大模型不只能生成内容,更能成为精准的信息提取工具。传统 NLP 需要为每个任务训练专用模型,而 LangExtract 证明了「通用指令 + 少量示例」就能达到接近专用模型的效果。这对医疗、法律、政务等需要从非结构化文本中提取结构化数据的行业,具有直接的实用价值。
36,000 颗 GitHub 星标的背后,是开源社区对这一方向的强烈共鸣。随着 Google 持续维护和社区 provider 的扩展,LangExtract 有望成为 LLM 应用栈中「文本抽取」这一环节的事实标准。