LlamaIndex 集成指南:使用 PatentsviewReader 加载专利摘要数据
2026/9/11 12:22:27 网站建设 项目流程

LlamaIndex 集成指南:使用 PatentsviewReader 加载专利摘要数据

【免费下载链接】llama_indexLlamaIndex is the leading document agent and OCR platform项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index

导读

本指南介绍 LlamaIndex 官方集成包llama-index-readers-patentsview的核心组件PatentsviewReader,说明如何借助 Patentsview 开放 API,将一组专利号批量转换为可供 LlamaIndex 索引与检索的Document对象。读完本文,你将掌握该 Reader 的安装方式、API Key 配置、load_data调用规范、返回数据格式以及底层请求行为,并能直接在自己的 RAG 应用中接入专利摘要数据。

一、组件定位:从专利号到 LlamaIndex Document

PatentsviewReader是 LlamaIndex 生态中的官方数据连接器(Reader),其作用是读取"专利摘要"(patent abstract)。它实现了 LlamaIndex Core 中定义的BaseReader抽象基类,因此可以无缝接入索引构建、文档加载等标准数据管线。

从源码结构看,该集成包的导入入口定义在 llama_index/readers/patentsview/init.py,对外暴露的 API 为:

from llama_index.readers.patentsview import PatentsviewReader

其类继承关系在测试 test_readers_patentsview.py 中被明确验证:PatentsviewReader的 MRO 中包含BaseReader,即它是标准 Reader 体系的一员,可与VectorStoreIndexSummaryIndex等 LlamaIndex 索引直接配合使用。

二、安装与环境准备

2.1 安装集成包

在 README.md 中给出的安装方式为:

pip install llama-index-readers-patentsview

该包的元数据定义在 pyproject.toml:

  • 包名:llama-index-readers-patentsview(当前版本1.1.0
  • Python 版本要求:>=3.10,<4.0
  • 核心依赖:llama-index-core>=0.13.0,<0.15
  • 许可证:MIT

也就是说,安装后你同时需要可用的llama-index-core环境(版本 0.13 至 0.15 区间),Reader 运行时的请求依赖requests库。

2.2 获取 Patentsview API Key

Patentsview API 现在强制要求 API Key。在 README.md 中明确提示:API Key 需通过 Patentsview 官方支持渠道申请,PatentsviewReader默认从环境变量PATENTSVIEW_API_KEY中读取该值。

配置环境变量后即可使用:

export PATENTSVIEW_API_KEY="your_api_key_here"

三、快速上手:加载专利摘要

3.1 基础用法

README.md 提供了最简示例,在代码中结合环境变量传入 API Key:

import os from llama_index.readers.patentsview import PatentsviewReader loader = PatentsviewReader(api_key=os.getenv("PATENTSVIEW_API_KEY")) patents = ["8848839", "10452978"] abstracts = loader.load_data(patents)

3.2 将摘要送入索引

load_data返回List[Document],与 LlamaIndex 的标准文档格式完全兼容,可直接用于构建索引:

from llama_index.core import VectorStoreIndex index = VectorStoreIndex.from_documents(abstracts) query_engine = index.as_query_engine() response = query_engine.query("该专利的核心技术是什么?")

四、深入解析:PatentsviewReader 的实现细节

PatentsviewReader的完整实现位于 base.py,理解其内部逻辑有助于你在生产环境中合理使用。

4.1 初始化与 API Key 解析

构造函数__init__的签名如下:

def __init__(self, api_key: Optional[str] = None)

内部逻辑(见 base.py 第 24-42 行):

  1. 优先使用传入的api_key参数;
  2. 若未传入,则回退读取环境变量PATENTSVIEW_API_KEY
  3. 若两者皆无,直接抛出ValueError("The API key [PATENTSVIEW_API_KEY] is required.")

该行为在测试用例test_init_without_api_key中被验证(测试文件第 42-48 行)。API Key 最终以请求头X-Api-Key的形式附加到每次请求中。

4.2 请求体结构

初始化时,Reader 预置了一份请求体(base.py 第 29-33 行):

self.json = { "q": {"patent_id": None}, "f": ["patent_id", "patent_abstract"], "o": {"size": 1000}, # API's max return }

三个关键字段含义如下:

字段作用说明
q查询条件patent_id精确匹配专利号,运行时被填充为用户传入的专利号列表
f返回字段只请求patent_idpatent_abstract,避免多余负载
o输出选项size固定为 1000,即 API 单次返回的最大条数上限

请求通过POST发送到 Patentsview 官方接口https://search.patentsview.org/api/v1/patent(base.py 第 13 行),请求体为上述 JSON,请求头携带X-Api-Key

4.3 load_data:参数校验与限流重试

load_data接收List[str]形式的专利号列表,返回List[Document]。其执行流程包含两处关键校验:

校验一:空列表拦截(base.py 第 55-56 行)

if not patent_number: raise ValueError("Please input patent number")

校验二:数量上限拦截(base.py 第 58-61 行)

if len(patent_number) > 1000: raise ValueError( f"List patent number size is too large: {len(patent_number)} elements. Maximum allowed is 1000." )

超过 1000 个专利号会直接抛出ValueError,该行为同样有测试覆盖(test_load_data_overload,见测试文件第 50-55 行)。这是因为 API 单次返回上限即为 1000 条,超大列表只会导致结果被截断,因此提前拒绝。

限流重试机制:当响应状态码为429(Too Many Requests)时,Reader 会读取响应头中的Retry-After字段(默认回退为 60 秒),等待后自动重发一次请求(base.py 第 66-70 行)。这意味着在调用频率较高的场景下,Reader 具备基础的自我保护能力,但仍建议你在应用层自行控制请求节奏。

响应解析:请求成功后(状态码 200),从响应 JSON 的patents列表中逐条提取数据,为每个专利构造一个Document(base.py 第 72-84 行):

  • Document.textpatent_abstract字段(专利摘要文本);
  • Document.metadata{"patent_id": ...}(专利号),可后续用于过滤与溯源。

测试中的模拟响应mock_json_response展示了标准响应结构(测试文件第 19-36 行):

{ "error": false, "count": 2, "total_hits": 2, "patents": [ {"patent_id": "8848839", "patent_abstract": "Four score and seven years ago..."}, {"patent_id": "10452978", "patent_abstract": "When in the course of human events..."} ] }

其他非 200 状态码(如 401 鉴权失败、5xx 服务端错误)会抛出Exception("Request failed with status code: ...")

五、实用技巧与注意事项

  1. 控制批量大小:受 API 单次 1000 条上限约束,若需加载超过 1000 个专利,建议分片调用load_data后合并结果列表。
  2. 复用 Reader 实例load_data内部会更新预置请求体中的q.patent_id,可多次调用,但请注意并发场景下共享实例存在请求体被覆盖的潜在风险,必要时为每个批次创建新实例。
  3. 结合 metadata 使用patent_id已写入Document.metadata,可在构建索引后借助MetadataFilters按专利号精确筛选检索范围。
  4. 环境变量优先:官方推荐通过PATENTSVIEW_API_KEY环境变量注入密钥,避免在代码或版本库中硬编码;测试与 CI 环境可借助 mock 模拟请求,具体可参考 test_readers_patentsview.py 中基于unittest.mock.patch的写法。

六、小结

PatentsviewReader是一个轻量、聚焦的数据连接器:输入一组专利号,输出可直接用于 LlamaIndex 索引的专利摘要Document列表。其核心价值在于把专利数据接入 RAG 管线的复杂度收敛为一次load_data调用,同时通过参数校验、限流重试与标准BaseReader接口,保证了在 LlamaIndex 生态中的可靠性与兼容性。对于需要以专利文献为知识库构建问答、摘要或分析类应用的开发者,这是接入官方数据源的直接路径。

【免费下载链接】llama_indexLlamaIndex is the leading document agent and OCR platform项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询