专栏名称: Hugging Face
The AI community building the future.
目录
相关文章推荐
深圳发布  ·  抢票丨《太白金星有点烦》 ·  2 天前  
深圳特区报  ·  明星都来了!TA们眼中的深圳…… ·  2 天前  
深圳特区报  ·  @深圳企业,有需要?请按1号键! ·  3 天前  
51好读  ›  专栏  ›  Hugging Face

社区供稿 | ReaderLM v2: HTML 转 Markdown 和 JSON 的前沿小型语言模型

Hugging Face  · 公众号  ·  · 2025-01-20 23:30

正文

2024 年 4 月,我们发布了 Jina Reader (https://jina.ai/reader),这是一个非常实用的 API,用户只需在 URL 前添加 r.jina.ai 前缀,就能将任何网页转换为大模型友好的 Markdown。紧接着,在同年 9 月,我们又发布了两款专门用于将原始 HTML 转换为干净 Markdown 的小型语言模型: reader-lm-0.5b reader-lm-1.5b

今天,我们正式推出 ReaderLM 的第二代模型 —— ReaderLM-v2! 这是一款拥有 15 亿参数的小型语言模型,它不仅可以将原始 HTML 精确地转换为格式美观的 Markdown,还能直接生成 JSON 数据。

相较于前代, 它的准确性更高,在处理长文本方面表现更出色,支持高达 512K tokens 的输入输出组合长度。 并支持 29 种语言,包括中文、英语、日语、韩语、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、越南语、泰语、阿拉伯语等。

🔗 官网链接:
https://jina.ai/models/ReaderLM-v2
🤗 开源模型链接:
https://huggingface.co/jinaai/ReaderLM-v2

ReaderLM-v2 的显著提升得益于全新的训练范式和更高质量的训练数据。 特别是在处理长文本内容和生成 Markdown 语法方面,它远超前代。

第一代模型将 HTML 转 Markdown 视为一种“选择性复制”任务,从 HTML 中提取并复制必要的内容,而 v2 则将其视为真正的翻译过程。 这一根本性的转变使得模型能够熟练运用 Markdown 语法,轻松生成代码块、嵌套列表、表格以及 LaTeX 公式等复杂元素。

我们将 ReaderLM-v2 与 ReaderLM 1.5b、Claude 3.5 Sonnet 以及 Gemini 2.0 Flash 在处理 HackerNews 首页 HTML 转 Markdown 任务上的表现进行了对比。

结果表明, ReaderLM-v2 不仅能够完整保留原始 HTML 中的信息,包括 HackerNews 链接,并巧妙地运用 Markdown 语法构建内容结构。 它使用嵌套列表组织局部元素,如点赞数、时间戳和评论,同时通过恰当的标题层级(如 h1 和 h2 标签)来保持全局格式的一致性。

我们第一个版本的一个主要挑战,就是 生成长序列后出现的退化问题 ,具体表现为:模型要么开始重复相同的 token,要么陷入短序列 token 的循环,直到达到最大输出长度。

而现在, ReaderLM-v2 通过在训练过程中引入对比损失,显著缓解了这一问题,使其性能不受上下文长度或已生成 token 数量的影响,表现始终如一。

为了更深入地检验 ReaderLM-v2 的实力,我们特意选用了一个难度颇高的测试案例:将我们公司官网的法律页面(https://jina.ai/legal)转换为 Markdown 格式。这个页面的长度是 HackerNews 首页的 20 倍左右,且末尾还包含一个复杂表格。

尽管如此,ReaderLM-v2 不负众望,成功生成了完整的 Markdown 表格,并且整篇文档中都维持了出色的结构一致性,甚至在表格之后依然保持了清晰的标题层级和列表格式。这样的表现是前一代 reader-lm-1.5b 望尘莫及的,因为长序列的生成对前代模型来说是个大挑战,很容易出现退化现象。

除了 Markdown 转换,ReaderLM-v2 还新增了 直接 HTML 转 JSON 生成的功能 , 用户可以根据预定义的 JSON Schema,直接从原始 HTML 中提取所需信息。这种端到端的方法,避免了中间 Markdown 转换步骤,大大提高了数据清洗和提取的效率。

我们以 HackerNews 首页的原始 HTML 为输入,并提供了一个 JSON Schema,其中定义了需要提取的字段,包括帖子标题、URL、摘要、关键词、作者和评论数等。某些字段可以直接从 HTML 代码中提取,但另一些字段(例如关键词)则需要模型从内容中进行推断。令人惊喜的是, ReaderLM-v2 成功地提取并生成了所有这些字段,展现出令人印象深刻的准确性。

在定量和定性基准测试中,ReaderLM-v2 在 HTML 转 Markdown 任务上的表现优于 Qwen2.5-32B-Instruct Gemini2-flash-expr GPT-4o-2024-08-06 等更大的模型,同时在 HTML 转 JSON 提取任务上展现出相当的性能,而且使用的参数量明显更少。

ReaderLM-v2-pro 是专为企业客户提供的高级版本,经过了额外的训练和优化。

我们的人工评估涵盖了 10 个不同的 HTML 来源,包括英文、日文和中文的新闻文章、博客文章、产品着陆页、电子商务网站以及法律文档。测试材料包含了多行表格、动态布局、链接表格、数学公式(包括行内和显示公式)、代码块以及深度嵌套列表等具有挑战性的元素。定性评估主要关注三个关键维度,模型的评分从 1(最低)到 5(最高),然后将分数标准化到每个方面最高 1.0,以便进行比较。

这些测试结果有力地证明, 一个经过精心设计的 15 亿参数模型,不仅能够与那些更大规模的模型相媲美,甚至在结构化数据提取任务中常常表现得更为出色。 ReaderLM-v2 ReaderLM-v2-pro 的逐步提升也清晰地展现了我们全新训练策略的有效性:它能在显著提高模型性能的同时,仍然保持高效的计算能力。

如何使用 ReaderLM-v2

1. 通过 Reader API

ReaderLM-v2 现已集成到我们的 Reader API 中, 🔗: https://jina.ai/reader/

使用方法非常简单:在请求头中指定 x-engine: readerlm-v2 ,并设置 -H 'Accept: text/event-stream' 来启用响应流式传输即可。

curl https://r.jina.ai/https://news.ycombinator.com/ -H 'x-engine: readerlm-v2' -H 'Accept: text/event-stream'

可以在较低的速率限制下抢先试用,无需 API 密钥。如需更高的速率限制,可以考虑购买 API Key。

不过要注意,使用 ReaderLM-v2 请求会消耗 3 倍的 API 额度。目前,这项功能还处于测试阶段,我们正在与 GCP 团队紧密合作,不断优化 GPU 效率,提升模型的可用性。

2. 在 Google Colab 体验

Google Colab:
https://colab.research.google.com/drive/1FfPjZwkMSocOLsEYH45B3B4NxDryKLGI?usp=sharing

这个 Colab Notebook 使用 HackerNews 首页作为示例,展示了 ReaderLM-v2 的 HTML 转 Markdown 转换、JSON 提取以及指令遵循等功能。并且已针对 Colab 的免费 T4 GPU 进行了优化,并需要 vllm triton 以实现加速和运行。

欢迎使用各种网站进行测试!但要 意,免费的 T4 GPU 有一些限制,它不支持 bfloat16 或 flash attention 2,这会导致内存使用更高,长输入处理速度更慢。

尽管如此,ReaderLM v2 在这些限制下仍然成功处理了我们的整个法律页面,实现了每秒 67 个输入令牌和每秒 36 个输出令牌的处理速度。对于生产环境,我们建议使用 RTX 3090/4090 等高性能显卡。

HTML 转 Markdown:指令式转换

除了标准转换之外,你也可以 通过提供 Prompt 指令,引导模型提取特定的信息,实现更灵活的 HTML 到 Markdown 转换。


我们提供了一个 create_prompt 辅助函数。 只需将 HTML 内容传入此函数,即可生成用于模型推理的 prompt,对应输出的 results 将是以 Markdown 代码块形式呈现的 Markdown 文本。

prompt = create_prompt(html)
result = llm.generate(prompt, sampling_params=sampling_params)[0].outputs[0].text.strip()

你也可以通过修改 create_prompt 的参数来探索不同的输出方式,例如添加 Prompt 引导模型提取特定信息。

prompt = create_prompt(html, instruction="Extract the first three news and put into in the makdown list")
result = llm.generate(prompt, sampling_params=sampling_params)[0].outputs[0].text.strip()

但因为我们的训练数据可能并未涵盖每种类型的指令,特别是需要多步推理的复杂任务。直接使用标准的 HTML 转 Markdown 转换通常更为可靠。

HTML 转 JSON:基于 Schema 的 结构化提取

如果需要从 HTML 中提取结构化数据,我们推荐使用 JSON Schema。通过定义一个符合你需求的 JSON Schema,让模型以 JSON 格式返回所需的数据。

import json

schema = {
"type""object",
"properties": {
"title": {"type""string""description""News thread title"},
"url": {"type""string""description""Thread URL"},
"summary": {"type""string""description""Article summary"},
"keywords": {"type""list""description""Descriptive keywords"},
"author": {"type""string""description""Thread author"},
"comments": {"type""integer""description""Comment count"}
},
"required": ["title""url""date""points""author""comments"]
}

prompt = create_prompt(html, schema=json.dumps(schema, indent=2))
result = llm.generate(prompt, sampling_params=sampling_params)[0].outputs[0].text.strip()

模型会以 JSON 代码块的形式返回数据,你可以解析此字符串,将其转换为字典或 JSON 对象,以便进行后续操作。

3. 生产部署:ReaderLM-v2 的云平台支持

ReaderLM-v2 现已上线 AWS SageMaker、Azure 和 Google Cloud Platform Marketplace。对于需要在上述平台之外,或在企业内部进行本地部署的用户,请注意 ReaderLM-v2 ReaderLM-v2-pro 均以 CC BY-NC 4.0 许可发布。

AWS Marketplace:
https://aws.amazon.com/marketplace/pp/prodview-jwfct4j4rvxk2?sr=0-21&ref_=beagle&applicationId=AWSMPContessa

定量评估

为了对 ReaderLM-v2 的性能进行全面且客观的评估,我们选取了 GPT-4o-2024-08-06 Gemini2-flash-expr Qwen2.5-32B-Instruct 等先进模型,在 3 个结构化数据抽取任务上进行了对比测试。

我们的评估框架整合了内容准确性与结构保真度两方面的指标。其中,ReaderLM-v2 是公开可用的开源版本,而 ReaderLM-v2-pro 则是专为企业客户提供的高级版本,经过了额外的训练和优化。

请注意,我们的第一代模型 reader-lm-1.5b 仅在主要内容抽取任务上进行了评估,因为它不支持指令抽取或 JSON 抽取功能。

评估指标

对于 HTML 转 Markdown 任务,我们采用七个互补的指标。其中:↑ 表示越高越好,↓ 表示越低越好

  • ROUGE-L (↑):衡量生成文本与参考文本之间的最长公共子序列,反映内容保留和结构相似性。其值范围在 0 到 1 之间,数值越高表示序列匹配程度越好。
  • WER(词错误率) (↓):量化将生成文本转换为参考文本所需的最少词级编辑次数。数值越低表示所需的修正越少。
  • SUB(替换) (↓):计算所需的词替换次数。值越低表示词级准确度越高。
  • INS(插入) (↓):测量需要插入多少词才能匹配参考文本。值越低表示完整性越好。
  • Levenshtein 距离 (↓):计算所需的最小字符级编辑次数。值越低表示字符级准确度越高。
  • Damerau-Levenshtein 距离 (↓):类似于 Levenshtein,但同时也考虑字符转置。值越低表示字符级匹配越好。
  • Jaro-Winkler 相似度 (↑):强调字符串开头的匹配,特别适用于评估文档结构保留。范围:0-1,值越高表示相似度越好。

对于 HTML 转 JSON 任务,我们将其视为检索任务,采用信息检索中常用的四个指标:

  • F1 分数 (↑):精确率和召回率的调和平均值,用于衡量整体准确度。其值范围在 0 到 1 之间。
  • 精确率 (↑):所有抽取结果中,正确抽取的比例。范围:0-1。
  • 召回率 (↑):在所有可用的信息中,正确抽取的比例。范围:0-1。
  • 通过率 (↑):输出为有效的 JSON 且符合预定义模式的比例。范围:0-1。

评估结果表明,在所有测试任务中, ReaderLM-v2 系列模型均展现出优异的性能表现。

主要内容提取:HTML 转 Markdown 性能

主要内容抽取任务 中, ReaderLM-v2-pro 在七个评估指标中的五个上取得了最优成绩 ,具体来说:ROUGE-L (0.86)、WER (0.39)、Levenshtein (0.20)、Damerau (928.15) 和 Jaro-Winkler (0.83) 分数。

相较于基础版本的 ReaderLM-v2 和其他对比模型,ReaderLM-v2-pro 在内容保留和结构准确性方面均有显著提升。

指令式转换: HTML 转 Markdown 性能

指令型抽取任务 中,ReaderLM-v2 和 ReaderLM-v2-pro 在 ROUGE-L (0.72)、替换率 (70.16)、Levenshtein 距离 (0.37) 和 Jaro-Winkler 相似度 (0.75,与基础版本并列) 等指标上均表现出色。

尽管 GPT-4o 在 WER 和 Damerau 距离上略有优势,但 ReaderLM-v2-pro 在整体内容结构和准确性方面表现更佳。

基于 Schema 的 HTML 转 JSON 性能

JSON 抽取任务 中,ReaderLM-v2 展现出强大的竞争力,其 F1 分数与更大模型的差距仅为 0.01-0.02,同时保持了较高的通过率 (0.99)。

定性评估:用户视角下的性能表现

在分析初代模型 reader-lm-1.5b 的评估结果时,我们发现仅依靠量化指标可能无法全面衡量模型的性能。

数值化的评估结果有时并不能完全反映用户对模型输出质量的感知,比如,在某些情况下,较低的指标分数反而对应着视觉上更令人满意的 Markdown 输出,而较高的指标分数却可能产生次优的结果。

为了弥补这一缺陷,我们针对 10 个不同的 HTML 来源进行了系统的定性评估,这些来源涵盖了英文、日文和中文的新闻报道、博客文章、产品页面、电子商务网站以及法律文档。测试语料库重点关注了具有挑战性的格式元素,例如多行表格、动态布局、LaTeX 公式、链接表格以及嵌套列表,旨在从更贴近实际应用的角度,全面评估模型的性能。

评估维度

我们的人工评估主要关注以下三个关键维度,并采用 1-5 分的评分标准:

内容完整性 : 评估 HTML 转 Markdown 过程中语义信息的保留程度,包括:

  • 文本内容的准确性和完整性
  • 链接、图片、代码块、公式和引用的保留
  • 文本格式和链接/图片 URL 的保留

结构准确性 : 评估 HTML 结构元素到 Markdown 的准确转换:

  • 标题层次的保留
  • 列表嵌套的准确性
  • 表格结构的保真度
  • 代码块和引用的格式

格式规范性 : 衡量对 Markdown 语法标准的遵守程度:

  • 标题(#)、列表(*、+、-)、表格、代码块的正确语法使用
  • 没有多余空格或非标准语法的整洁格式
  • 一致且可读的渲染输出

在对超过 10 个 HTML 页面进行人工评估时,我们对每个评估维度都设定了 50 分的最高分。 最终的评估结果显示,ReaderLM-v2 在所有维度上均表现出色!

内容完整性 方面, ReaderLM-v2 在复杂元素识别方面表现出色,特别是 LaTeX 公式、嵌套列表和代码块。 它在处理复杂内容结构时展现出高保真度,相比之下,其他模型常常出现一些问题,比如 reader-lm-1.5b 会丢失 H1 标题、 claude-3-5-sonnet 会截断内容,而 Gemini-2.0-flash 总会保留原始 HTML 标签。

以这篇 ICLR 博客文章为例,下图展示了原网页中复杂的 LaTeX 方程,右侧面板显示源 HTML 代码。

下图对比展示了 ReaderLM-v2 的 Markdown 输出及其最终的渲染效果。

通过 ReaderLM-v2 处理后,只需简单的后处理步骤,就能近乎完美地还原原始内容。这包括将 LaTeX 公式从 HTML 格式转换为 Markdown 格式。具体来说,需要将 HTML 中用于表示 LaTeX 公式的 \[...\] 替换为标准的 Markdown 公式分隔符,例如,用 $…$ 表示行内公式,$$…$$ 表示行间公式。 这样做可以有效地避免 Markdown 解析时可能出现的语法冲突。

结构准确性 方面,ReaderLM-v2 在处理常见网页结构时展现出了优秀的性能。例如,在 HackerNews 的案例中,它不仅成功地重建了完整的链接,还优化了列表的呈现。对于 reader-lm-v1 难以处理的复杂非博客 HTML 结构,ReaderLM-v2 也能轻松应对。

格式规范性 方面,ReaderLM-v2 在处理 Hacker News、博客以及微信文章等内容时,展现出了明显的优势。虽然其他大型语言模型在处理类似 Markdown 的源内容时表现尚可,但当面对需要更多解析的网站时就有些吃力了。

我们的分析显示, gpt-4o 在处理较短的网站时表现出色,它对网站结构和格式的理解优于其他模型。然而,在处理较长内容时, gpt-4o 在内容完整性方面存在困难,经常遗漏文本的开头和结尾部分。

我们以 Zillow 的网站为例,提供了 gpt-4o ReaderLM-v2 ReaderLM-v2-pro 输出的对比分析。

原始 Zillow HTML 页面
gpt-4o (左)、ReaderLM-v2 (中) 和 ReaderLM-v2-pro (右) 渲染的 Markdown 输出对比。

对于一些更具挑战性的场景,如产品落地页和政府文档,ReaderLM-v2 和 ReaderLM-v2-pro 依然能够保持稳定的性能,但仍有进一步提升的空间。 在处理 ICLR 博客文章中复杂的数学公式和代码时,大多数模型都面临困难。而 ReaderLM-v2 表现出色,在这方面的表现明显优于基准的 Reader API。







请到「今天看啥」查看全文