跳转到主要内容
解析器(Parser)组件允许插件为 LangBot 提供文档解析能力。在用户上传文档到知识库时,LangBot 会在 RAG 引擎摄取(ingest)之前调用解析器,将 PDF、Word、Markdown 等二进制文件提取为结构化文本。 Parser 与 KnowledgeEngine 的关系:
  • Parser 负责将文件转换为文本(file → text)
  • KnowledgeEngine 负责将文本索引和检索(text → chunks → vectors)
如果 RAG 引擎自身已具备文档解析能力(声明了 DOC_PARSING 能力),用户可以选择使用 RAG 引擎内置的解析能力,也可以选择使用外部 Parser 插件。

添加解析器组件

单个插件中能添加任意数量的解析器,请在插件目录执行命令 lbp comp Parser,并根据提示输入解析器的配置。
现在即会在 components/parser/ 目录下生成 pdf_parser.yamlpdf_parser.py 文件,.yaml 定义了解析器的基础信息和支持的 MIME 类型,.py 是该解析器的处理程序:

清单文件:解析器

supported_mime_types

supported_mime_types 声明该解析器支持解析的文件类型。常见 MIME 类型:

插件处理

默认会生成如下代码(components/parser/<解析器名称>.py),您需要实现 parse 方法。

解析方法

parse 方法在文档上传到知识库时被调用(在 RAG 引擎摄取之前):
ParseContext 包含以下信息:
ParseResult 应返回解析结果:
TextSection 表示文档中的一个段落/分节:

与 KnowledgeEngine 的协作

当用户上传文档时,LangBot 会根据以下逻辑决定解析流程:
  • 若用户选择了外部 Parser 插件,LangBot 会先调用 Parser 的 parse 方法,然后将解析结果通过 IngestionContext.parsed_content 传递给 RAG 引擎的 ingest 方法。
  • 若 RAG 引擎声明了 DOC_PARSING 能力且用户未选择外部解析器,则由 RAG 引擎自行处理文档解析。
KnowledgeEngine 可通过检查 IngestionContext.parsed_content 来判断是否存在预解析内容:

跨插件调用解析器

在调用其他插件提供的解析器之前,可以先通过 self.plugin.list_parsers 枚举当前可用的解析器:
若返回空列表,说明宿主当前没有已连接且支持该 MIME 类型的 Parser 插件。 拿到 plugin_authorplugin_name 后,即可通过 self.plugin.invoke_parser 调用对应解析器:

测试解析器

创建完成后,在插件目录执行命令 lbp run,启动调试。然后在 LangBot 中:
  1. 进入”知识库”页面
  2. 选择一个知识库并进入文档管理
  3. 上传文件时,在解析器选择器中选择您的插件提供的解析器
  4. 上传文件后检查文档是否正确摄取