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 过程中语义信息的保留程度,包括:
结构准确性
: 评估 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。