Skip to main content
本文同步自 LangBot Blog。 阅读 Blog 原文. 发布于 2026-03-10 · 作者:LangBot Team LangBot v4.9.0 RAG Plugin Architecture LangBot v4.9.0 代号 “Knowledge Without Borders”(知识无边界),这个命名精准地概括了本次版本的核心变化:知识库能力从内置实现全面重构为插件化架构 这不是一次小修小补——它重新定义了 LangBot 中”知识”的边界。

为什么要做这件事?

在 v4.9.0 之前,LangBot 的知识库分为两套体系:
  • 内置知识库:使用 Chroma 作为向量数据库,嵌入模型由 LangBot 直接调用,文档解析、分块、索引全部内置。
  • 外部知识库:通过 KnowledgeRetriever 插件组件桥接 Dify、RAGFlow、FastGPT 等外部服务,只做检索,不管文档摄取。
这两套体系在 UI 上以 Tab 切换的方式呈现,数据模型和管理逻辑完全割裂。 问题在于:
  1. 扩展性差:想换一个向量数据库?想用自己的分块策略?对不起,内置实现写死了。
  2. 维护成本高:每次 RAG 能力迭代,都需要改 LangBot 核心代码,发版才能生效。
  3. 体验割裂:内置和外部两种知识库的管理方式完全不同,用户学习成本高。
v4.9.0 的解决方案很直接:把 RAG 能力从 LangBot 核心中抽出来,交给插件

核心变更一览

1. 统一知识库模型

移除 internal / external 的区分。所有知识库统一管理,通过 rag_engine_plugin_id 区分背后使用的 RAG 引擎。UI 上不再有两个 Tab,只有一个知识库列表,创建时选择引擎即可。

2. 新增 KnowledgeEngine 组件

这是本次最核心的新增。KnowledgeEngine(知识引擎)替代了旧的 KnowledgeRetriever,承担完整的知识库生命周期管理:
  • 文档摄取(Ingest):从文件解析到向量索引的完整流程
  • 知识检索(Retrieve):查询时返回相关知识块
  • 文档删除(Delete):清理文档及关联的向量数据
  • 生命周期钩子:知识库创建/删除时的回调
换句话说,一个 KnowledgeEngine 插件可以完全控制知识库的索引和检索策略,而不仅仅是做检索。 插件市场中的知识引擎插件

3. 新增 Parser 组件

文档解析也被独立为插件组件。Parser 负责将 PDF、Word、Markdown 等二进制文件转换为结构化文本,然后交给 RAG 引擎做分块和索引。 Parser 和 KnowledgeEngine 的关系: 数据流:Parser → KnowledgeEngine 如果 RAG 引擎自身声明了 DOC_PARSING 能力,也可以跳过外部 Parser,自行处理文档解析。

4. 宿主 RAG API

LangBot 核心不再直接执行 RAG 操作,但仍然提供了关键的基础设施,封装在 RAGRuntimeService 中供插件通过 RPC 调用:
  • 嵌入模型调用invoke_embedding() —— 插件无需自己管理模型连接
  • 向量数据库操作vector_upsert() / vector_search() / vector_delete() —— 写入、搜索、删除
  • 文件读取get_knowledge_file_stream() —— 从存储中获取原始文件
这意味着插件可以专注于 RAG 策略(分块方式、检索算法、重排序逻辑),而把向量存储和嵌入模型这些”重”操作交给宿主。

5. 废弃 KnowledgeRetriever

旧的 KnowledgeRetriever 组件已被移除。如果你之前开发过外部知识库插件,需要迁移到 KnowledgeEngine。好消息是 KnowledgeEngine 的 API 更清晰,迁移并不复杂。

开发一个 RAG 引擎插件

以下是开发自定义 RAG 引擎的完整流程。

创建组件

按提示输入引擎名称和描述,SDK 会自动生成目录结构: 插件目录结构

定义配置 Schema

.yaml 清单文件中定义两类配置:
  • creation_schema:用户创建知识库时填写的参数(如分块大小、嵌入模型)
  • retrieval_schema:检索时可调整的参数(如分数阈值、Top-K)
LangBot 会根据这些 Schema 动态渲染创建和检索的配置表单,不同的 RAG 引擎展示不同的配置项。

声明能力

实现核心方法

最关键的三个方法: 文档摄取:
知识检索:
文档删除:

桥接外部知识库服务

如果你的目标不是自建 RAG 流程,而是桥接 Dify、RAGFlow、FastGPT 等外部服务,实现方式更简单——不需要声明 DOC_INGESTION 能力,只实现 retrieve 方法即可:
这样在 LangBot 中创建知识库时选择该引擎,不会显示”文档”标签页,知识的管理完全在外部服务中进行。

开发 Parser 插件

Parser 的开发更加简洁:
在清单文件中声明支持的 MIME 类型:
实现 parse 方法:
Parser 和 KnowledgeEngine 之间还支持跨插件调用——一个 RAG 引擎插件可以主动调用另一个插件提供的 Parser:

升级须知

  • 旧版本中创建的内置知识库和外部知识库会由迁移工具自动迁移,更新后到知识库页面确认即可。
  • KnowledgeRetriever 组件已废弃,旧插件需要迁移到 KnowledgeEngine
  • 插件市场可以找到已有的 RAG 引擎插件。

写在最后

v4.9.0 的知识库插件化是 LangBot 插件系统的又一次扩展。从 v4.0 的事件处理器和工具,到知识检索器,再到现在的 RAG 引擎和解析器——LangBot 的核心能力正在逐步从”内置”走向”可插拔”。 这个方向的终局是:LangBot 核心只提供流水线编排和基础设施,所有业务能力都由插件驱动 想要自定义分块策略?写个 KnowledgeEngine 插件。想支持 PDF 解析?写个 Parser 插件。想桥接企业内部的知识库服务?同样是一个插件。 知识,不再有边界。
相关链接: