Skip to main content
パーサー(Parser)コンポーネントにより、プラグインはLangBotにドキュメント解析機能を提供できます。ユーザーがナレッジベースにドキュメントをアップロードする際、LangBotはRAGエンジンのingestステップの前にパーサーを呼び出し、PDF、Word、Markdownなどのバイナリファイルから構造化テキストを抽出します。 ParserとKnowledgeEngineの関係:
  • Parser はファイルをテキストに変換する役割(file → text)
  • KnowledgeEngine はテキストのインデックス作成と検索を行う役割(text → chunks → vectors)
RAGエンジン自体がドキュメント解析機能を持っている場合(DOC_PARSING能力を宣言)、ユーザーはRAGエンジンの内蔵解析機能を使用するか、外部Parserプラグインを使用するかを選択できます。

パーサーコンポーネントの追加

1つのプラグインには任意の数のパーサーを追加できます。プラグインディレクトリでコマンド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. アップロード後、ドキュメントが正しく取り込まれたことを確認