ingestステップの前にパーサーを呼び出し、PDF、Word、Markdownなどのバイナリファイルから構造化テキストを抽出します。
ParserとKnowledgeEngineの関係:
- Parser はファイルをテキストに変換する役割(file → text)
- KnowledgeEngine はテキストのインデックス作成と検索を行う役割(text → chunks → vectors)
DOC_PARSING能力を宣言)、ユーザーはRAGエンジンの内蔵解析機能を使用するか、外部Parserプラグインを使用するかを選択できます。
パーサーコンポーネントの追加
1つのプラグインには任意の数のパーサーを追加できます。プラグインディレクトリでコマンドlbp comp Parserを実行し、プロンプトに従ってパーサーの設定を入力します。
components/parser/ディレクトリにpdf_parser.yamlとpdf_parser.pyファイルが生成されます。.yamlファイルはパーサーの基本情報とサポートするMIMEタイプを定義し、.pyファイルはこのパーサーのハンドラです:
マニフェストファイル: パーサー
supported_mime_types
supported_mime_typesはこのパーサーがサポートするファイルタイプを宣言します。一般的なMIMEタイプ:
| MIMEタイプ | 説明 |
|---|---|
application/pdf | PDFドキュメント |
application/vnd.openxmlformats-officedocument.wordprocessingml.document | Wordドキュメント(.docx) |
text/markdown | Markdownファイル |
text/plain | プレーンテキストファイル |
text/html | HTMLファイル |
プラグインハンドラ
以下のコードがデフォルトで生成されます(components/parser/<パーサー名>.py)。parseメソッドを実装する必要があります。
解析メソッド
parseメソッドは、ドキュメントがナレッジベースにアップロードされた時(RAGエンジンの取り込み前)に呼び出されます:
KnowledgeEngineとの連携
ユーザーがドキュメントをアップロードする際、LangBotは以下のロジックで解析フローを決定します:- ユーザーが外部Parserプラグインを選択した場合、LangBotはまずParserの
parseメソッドを呼び出し、その結果をIngestionContext.parsed_contentを通じてRAGエンジンのingestメソッドに渡します。 - RAGエンジンが
DOC_PARSING能力を宣言しており、ユーザーが外部パーサーを選択していない場合、RAGエンジンが自身でドキュメント解析を処理します。
IngestionContext.parsed_contentをチェックして、事前解析されたコンテンツが利用可能かどうかを判断できます:
クロスプラグインパーサー呼び出し
KnowledgeEngineプラグインはself.plugin.invoke_parserを通じて、他のプラグインが提供するパーサーを呼び出すことができます:
パーサーのテスト
作成後、プラグインディレクトリでコマンドlbp runを実行してデバッグを開始します。その後、LangBotで:
- 「ナレッジベース」ページに移動
- ナレッジベースを選択してドキュメント管理に入る
- ファイルのアップロード時、パーサーセレクターでプラグインが提供するパーサーを選択
- アップロード後、ドキュメントが正しく取り込まれたことを確認
