RAGエンジンコンポーネントの追加
1つのプラグインには任意の数のRAGエンジンを追加できます。プラグインディレクトリでコマンドlbp comp KnowledgeEngineを実行し、プロンプトに従ってRAGエンジンの設定を入力します。
components/knowledge_engine/ディレクトリにsimple_rag.yamlとsimple_rag.pyファイルが生成されます。.yamlファイルはRAGエンジンの基本情報と設定スキーマを定義し、.pyファイルはこのエンジンのハンドラです:
マニフェストファイル: RAGエンジン
creation_schema と retrieval_schema
旧バージョンのKnowledgeRetrieverコンポーネントが単一のspec.configを使用していたのとは異なり、KnowledgeEngineは2つの独立したスキーマを使用します:
- creation_schema: ナレッジベース作成時にユーザーが入力するパラメータ。取り込みと検索時に
creation_settingsを通じてプラグインに渡されます。 - retrieval_schema: ナレッジベースのクエリ時にユーザーが調整できるパラメータ。
retrieval_settingsを通じてプラグインに渡されます。
能力宣言
KnowledgeEngineはサポートする能力を宣言でき、LangBotはこれらの能力宣言に基づいてUIの表示と利用可能な操作を決定します:その他の検索動作(リランキング、ハイブリッド検索など)はプラグインの
retrieval_schemaで制御され、能力フラグは不要です。プラグインハンドラ
以下のコードがデフォルトで生成されます(components/knowledge_engine/<エンジン名>.py)。ingest、retrieve、delete_documentの3つのコアメソッドを実装する必要があります。完全なコードはlangbot-plugin-demoのSimpleKnowledgeEngineで見つけることができます。
ライフサイクルフック
KnowledgeEngineは、ナレッジベースの作成・削除時に呼び出される2つのライフサイクルフックを提供します:ドキュメントの取り込み
ingestメソッドは、ユーザーがナレッジベースにドキュメントをアップロードした時に呼び出されます:
ナレッジ検索
retrieveメソッドは、ナレッジベースがクエリされた時に呼び出されます:
LangBotホストは
retrieval_settingsをプラグインに渡す前にデフォルトのtop_k値(デフォルト5)を自動的に注入します。プラグインはcontext.retrieval_settings.get('top_k', 5)でアクセスできます。filtersフィールドにはretrieval_settingsから抽出されたChromaスタイルのwhereフィルター条件が含まれます。呼び出し元が検索設定でfiltersを指定した場合(例:時間範囲、ファイルタイプ、カスタムメタデータフィールドによるドキュメントフィルタリング)、ホストがこのフィールドを設定し、プラグインは検索時にフィルタリングを適用できます。フィルターが指定されていない場合、このフィールドは空のdictです。ドキュメントの削除
delete_documentメソッドは、ユーザーがナレッジベースからドキュメントを削除した時に呼び出されます:
ホストRAG API
KnowledgeEngineコンポーネントはself.pluginを通じて、LangBotホストが提供する埋め込みモデル呼び出し、ベクトルデータベース操作、ファイル読み取りなどのRAG関連APIを呼び出すことができます。
埋め込みモデルの呼び出し
ベクトルの書き込み
ベクトル検索
vector_searchが返す各結果はdictで、id(ベクトルID)、score(距離スコア)、metadata(upsert時に提供したメタデータ)の3つのフィールドを含みます。検索結果にテキスト内容が必要な場合は、取り込み時にmetadataにテキストを保存してください。ベクトルの削除
filtersパラメータはChromaスタイルのwhere構文によるメタデータフィルタリングをサポートしています。複数のトップレベルキーはAND条件として結合されます。サポートされる演算子:$eq、$ne、$gt、$gte、$lt、$lte、$in、$nin。例:{"file_id": {"$eq": "abc"}}。注意: Chroma、Qdrant、SeekDBは完全なメタデータを保存し、任意のフィールドでフィルタリングできます。MilvusとpgvectorはDB側にtext、file_id、chunk_uuidのみ保存しており、それ以外のフィールドでのフィルタリングは無視されます。RAGエンジンのテスト
作成後、プラグインディレクトリでコマンドlbp runを実行してデバッグを開始します。その後、LangBotで:
- 「ナレッジベース」ページに移動
- 「ナレッジベースを作成」をクリック
- プラグインが提供するRAGエンジンを選択し、エンジンの
creation_schemaに基づいて設定を入力 - 作成後、ドキュメントをアップロードして取り込み機能をテスト(エンジンが
DOC_INGESTION能力を宣言している場合) - パイプラインにナレッジベースをバインドし、検索機能をテスト
