Jina AI 详解:搜索基础设施工厂与它的 Reader 门面
RAG 和 Agent 系统的痛点,一半在模型之外:网页抓不下来、PDF 解不出正文、搜索只给标题摘要——垃圾进、垃圾出。柏林公司 Jina AI 给出的答案是一整套"搜索基础设施":最广为人知的是 jina-ai/reader(约 12k Star,Apache 2.0)——任意 URL 加个前缀 https://r.jina.ai/ 就变成 LLM 友好的 Markdown,搜索查询加上 s.jina.ai/ 前缀直接返回前五条结果的正文;底座则是 Jina Embeddings 与 Reranker 模型家族(长期占据 MTEB 榜前列)。本文从 Reader 双端点、参数体系、自托管到公司全景,完整拆解。
1、项目概述
Reader 是 Jina AI 的开源阅读器与搜索器:把任意 URL 转换为 LLM 友好输入(r.jina.ai),把搜索查询转换为带正文的结果(s.jina.ai),官方口径"免费、稳定、可扩展,可作为核心产品在生产使用"。仓库约 12k Star、883 Fork、Apache 2.0 协议,TypeScript 主体,2024 年 4 月发布并上线 r.jina.ai——Jina AI 的第一个 SaaS API;同年 5 月 s.jina.ai 上线。GitHub 组织 jina-ai 同时维护着 Embeddings/Reranker 模型、神经搜索框架 Jina、CLI 工具等数十个仓库,本篇以 Reader 为主轴兼顾公司全景。
基本盘:
- 两个前缀两种能力:r.jina.ai/URL 读单页,s.jina.ai/QUERY 搜索并读取,无需 SDK,浏览器即可用
- 能读的东西:网页(无头 Chrome 渲染 / curl-impersonate 轻抓自动二选一)、PDF(PDF.js)、Office 文档(LibreOffice 转换)、图片(VLM 自动配说明文字)
- 二进制直传:PDF 与 Word/Excel/PowerPoint 可 POST file 字段直传,无需先托管
- 免费但有配额:匿名调用限速最严,API Key 解锁更高配额与内建代理池;速率表见官网定价页
- 自托管:ghcr.io/jina-ai/reader:oss 预构建镜像,内置无头 Chrome、LibreOffice 与中日韩字体
2、两个端点:读与搜
Reader 只做两件事,但把这两件事做到了"加前缀即用"的极简。
读(r.jina.ai):
- 单页抓取:前缀拼接即得 Markdown,Title 与 URL Source 头部信息附带,正文经 readability 提纯
- 双引擎智能切换:默认 auto——无头 Chrome(Puppeteer)应对 JS 渲染,curl-impersonate 走轻量路径,按站点特征选择
- SPA 特殊处理:hash 路由用 POST 传 url 参数;预加载页用 x-timeout 或 x-wait-for-selector 等真内容
- 输出格式可选:markdown / html / text / screenshot / pageshot / frontmatter(YAML 头 + 正文)
搜(s.jina.ai):
- 与普通搜索 API 的本质差异:不是返回标题+URL+摘要,而是搜索后自动抓取前五条结果的完整正文
- 站内搜索:查询参数 site= 限定域名(可多个),官方示例 site=jina.ai&site=github.com
- 免去自行处理浏览器渲染、封锁、JS 与 CSS 的全部脏活——RAG 检索层的一步到位方案
端点要点:
1. "加前缀"的产品设计是传播利器:零 SDK 零文档即可上手,很多用户的第一个 Jina 产品体验就是一条 URL
2. 图片 VLM 配文是贴心细节:text-only 下游模型也能"看懂"页面里的图——只是足够推理的提示,不是完整视觉
3. s 端点复用 r 端点的全部技术栈:抓取、渲染、反爬一套代码两种入口
4. JSON 模式、整站抓取(Colab 教程)、交互式代码构建器(官网 API 表单)补齐了复杂用法
3、参数体系:请求头里的精调旋钮
两个前缀只是门面,真正的深度在 x- 系列请求头——数十个参数把抓取行为调到颗粒度极细。
# 基本用法:前缀直取
curl https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence
# 搜索:查询需 URL 编码
curl 'https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election%3F'
# 站内搜索
curl 'https://s.jina.ai/When%20was%20Jina%20AI%20founded%3F?site=jina.ai'
# 常用请求头组合
curl -H 'X-Respond-With: frontmatter' \
-H 'X-With-Generated-Alt: true' \
https://r.jina.ai/https://example.com
# token 预算控制(截断 vs 拒绝)
curl -H 'X-Max-Tokens: 2000' ... # 超长截断,保输出
curl -H 'X-Token-Budget: 2000' ... # 超预算直接拒绝,保成本
# 语义分块:RAG 管线直接可用
curl -H 'X-Markdown-Chunking: h3' ...
# 预设一键打包
curl -H 'X-Preset: research' ... # reader / index / research / agent / spider参数分选(官方文档归纳):
- 引擎与时机:x-engine(browser / curl / auto)、x-respond-timing 六档(html / visible-content / mutation-idle / resource-idle / media-idle / network-idle)——延迟与完整度的显式权衡
- 内容保留策略:x-retain-images(all / none / alt)、x-retain-links(all / none / text / gpt-oss 引用格式)、x-retain-media 五档——按下游管线裁剪 token
- 缓存与代理:x-cache-tolerance(容忍秒数)、x-no-cache(绕缓存)、x-proxy-url(自带代理)、x-set-cookie(转发 Cookie,不缓存)
- 定位与等待:x-target-selector(CSS 选区)、x-wait-for-selector(等元素)、x-timeout(最长 180 秒)
- token 治理:x-max-tokens 截断护栏、x-token-budget 超限拒绝(成本控制场景)
参数要点:
1. 五种预设覆盖典型场景:reader(给人看)、index(向量化)、research(可引用)、agent(日常浏览)、spider(整站爬取)——不用记参数先选预设
2. 链接/图片"正文保锚文本、尾部附 URL 清单"的组合(retain-links: text + with-links-summary)是嵌入管线的省 token 妙招
3. x-markdown-chunking 直接输出语义分块数组——RAG 切片这步都替你做了
4. 完整参数表以 r.jina.ai/docs 与源码 crawler-options.ts 为准,头部参数仍在持续演进
4、反爬对策与自托管
抓取服务躲不开反爬,Reader 给了逐级升压的对策阶梯;不想用 SaaS 也可整套搬回家。
反爬阶梯(官方建议顺序):
- 第一级:用 API Key——匿名流量限速最狠、信任池最低,认证即提配额
- 第二级:x-no-cache 绕开可能已缓存被拦页面的旧响应
- 第三级:x-engine: browser 强制真浏览器——有些站只给 JS 环境发真内容
- 第四级:x-proxy: auto 走托管代理池(需 Key)——住宅与机房 IP 轮换,自动应对常见反爬挑战,可指定国家如 x-proxy: us
- 第五级:自带代理 x-proxy-url——住宅 / ISP 代理(BrightData、Oxylabs 等)作为最终手段,支持 http(s) 与 socks4/5
# 自托管:拉镜像即跑(默认无状态,无缓存无限速)
docker pull ghcr.io/jina-ai/reader:oss
docker run --rm -p 3000:8081 ghcr.io/jina-ai/reader:oss
# 测试: curl http://localhost:3000/https://example.com
# 加 S3 兼容桶缓存(MinIO 亦可,docker compose 起)
docker run --rm -p 3000:8081 \
-e GCP_STORAGE_ENDPOINT=https://s3.example.com \
-e GCP_STORAGE_BUCKET=reader-cache \
-e GCP_STORAGE_ACCESS_KEY=... \
-e GCP_STORAGE_SECRET_KEY=... \
ghcr.io/jina-ai/reader:oss
# 端口说明:8080 = h2c 生产级(Cloud Run 同款),8081 = HTTP/1.1 兜底
# 镜像内置:无头 Chrome + LibreOffice + 中日韩字体
# 源码开发
git clone https://github.com/jina-ai/reader.git
cd reader && npm install
npm run assets:download # 拉取 MaxMind 地理库等不可再分发资产
npm run dev托管要点:
1. 开源分支与 SaaS 的差异:MongoDB 存储层被剥离,oss 分支开箱即无状态,可选 MinIO/S3 桶缓存(2026-04 重新同步)
2. 架构演进史写在 Updates 里:2024 Firebase 起家 → 2025-03 迁 Cloud Run + MongoDB Atlas → 本地 Docker 路径由此解锁
3. 不可再分发资产需自取:MaxMind GeoLite 库、思源黑体、UA 清单,npm run assets:download 一键拉取且幂等
4. 2025-12 起支持二进制直传:PDF/Office 文档 POST file 字段即解析,文档不必先有公网 URL
5、Jina AI 全景与定位对比
Reader 只是门面,Jina AI 的版图是"搜索基础设施全家桶"。
公司产品线(GitHub 组织 + 官网归纳):
- Reader / Search:r. 与 s. 双端点,本文主角
- Embeddings / Reranker:jina-embeddings-v5 等模型家族,多语言多模态,MTEB 榜常客,API 与开源权重并行
- 深度研究:g.jina.ai 生成式搜索与 DeepResearch API(官网产品线)
- 开发者工具:cli(全部 API 封装成 Unix 管道命令)、jina-grep-cli(嵌入驱动的语义 grep,MLX 加速)、air-gap 部署工具包
- 研究产出:嵌入反演(从向量还原原文的隐私攻击研究)、嵌入指纹识别、jzip 向量压缩、OmniDocBench 文档解析基准——研究即产品的前沿探针
同类服务三选一:
- Jina Reader:前缀即用 + 参数最深 + 免费档可用,配全家桶(嵌入 / 重排 / 深度研究)(约 12k Star,Apache 2.0)
- Firecrawl:API 优先的抓取平台,站点爬取与结构化提取见长,商业化更重
- Crawl4AI:开源本地优先的爬虫,LLM 友好输出,自托管无配额概念
选型建议:
1. 快速给 RAG / Agent 加网页理解能力、不想自建 → Jina Reader 免费档起步
2. 重度整站抓取、结构化字段提取 → Firecrawl
3. 数据不出内网、无限速自控 → Crawl4AI 或 Reader oss 镜像自托管
4. 组合玩法:Reader 抓正文 + Jina Embeddings 向量化 + Reranker 精排——一家打通检索全链路
6、总结
Jina AI 是柏林的搜索基础设施工厂,Reader 是它最出名的门面(约 12k Star、Apache 2.0、TypeScript):r.jina.ai 一个前缀把任意 URL 变成 LLM 友好的 Markdown——网页双引擎智能抓取、PDF 与 Office 文档解析、图片 VLM 配文、二进制直传;s.jina.ai 一个前缀把搜索变成"自带正文的前五条结果",站内限定、免 JS 处理;数十个 x- 请求头把引擎、时机、内容保留、缓存代理、token 预算、语义分块调到颗粒度极细,五种预设覆盖阅读、索引、研究、代理、爬虫场景;反爬对策从 API Key 到托管代理池再到自带代理五级升压;oss 镜像(内置 Chrome + LibreOffice + CJK 字体)支持无状态或 S3 缓存自托管。公司层面,Embeddings / Reranker 模型、CLI 工具、深度研究与嵌入反演等前沿研究构成完整矩阵。
适用与边界:它适合一切需要"把网页变成模型输入"的场景——RAG 检索、Agent 联网、文档问答、语料构建,免费档足够原型验证,API Key 后配额与代理池面向生产;匿名调用限速严格,重度使用需付费评估;国内网络访问 r.jina.ai 可能不稳(本次调研从本地网络直连超时,经代理可用),生产依赖前先验证链路;反爬无银弹——五级阶梯用尽仍有站点抓不动,极端场景需自备住宅代理;与 Firecrawl(爬取平台)、Crawl4AI(本地开源)按"托管便利 vs 自主可控"取舍,或混搭使用。


