プラグイン: Advanced Markdown Chunker – RAG用のよりスマートなMarkdownチャンク分割

みなさん、こんにちは。

私はDifyでMarkdownベースのナレッジベースを試してきましたが、同じ厄介な問題に何度も遭遇しました:コードブロックが途中で切れる、ネストされたリストが奇妙な場所で分割される、ドキュメントの構造と一致しないチャンクが生成されるなどです。

そこで、Advanced Markdown Chunkerというプラグインを作成し、ここに共有しようと思いました。

そのアイデアはシンプルです:固定された1つの方法でテキストを分割するのではなく、プラグインはドキュメントを分析して、主に何で構成されているか(コード、リスト、深く構造化されたセクション、または単なるテキスト)を理解し、4つの内部戦略のうち1つを選択します。実際には以下のような動作になります:

  • コードが多めのドキュメント(APIリファレンス、チュートリアル)は、コードブロックを原子的に保持する(関数の途中で分割しない)コード認識モードが適用されます。
  • リストが多めのドキュメント(変更履歴、リリースノート、機能リスト)は、ネストされたリストとその紹介文を一緒に保持するリスト認識モードが適用されます。
  • 複数の見出しレベルを持つ「古典的な」ドキュメントは、階層構造を尊重して構造的に処理されます。
  • それ以外のすべては、混合またはシンプルなMarkdown用の安全なデフォルト戦略にフォールバックします。

さらに、プラグインはMarkdownを馬鹿げた場所で壊さないように努めます:コードブロック、テーブル、リストはそのまま保持され、チャンクは所属する見出しを「記憶」し、隣接するチャンクは一部重複(最大約35%)を共有して、境界で文脈が突然消失しないようにします。

各チャンクには、メタデータ(コンテンツタイプ、見出しパス、ソース行番号、小さな重複プレビュー)を付加することもでき、後で検索を実行したり、インデックスされた内容をデバッグする際に役立ちます。これらすべてはDify内でのみローカルで実行され、外部API呼び出しやLLMはMarkdownを分割するために必要ありません。

これは主にMarkdownに基づくRAGセットアップ(ドキュメント、コードの多いAPI/SDKガイド、変更履歴/リリースノート、技術仕様、アーキテクチャドキュメントなど)を対象としています。

リンク:

DifyでMarkdownを使用していて、デフォルトのチャンキングが少し単純すぎる다고感じている方は、フィードバック、奇妙なエッジケース、あるいは「これで完全にドキュメントが壊れた」という報告をいただければ大変ありがたいです :slightly_smiling_face:

「いいね!」 1

こんにちは、いくつか問題があります。私はUIを使用しており、コーディングはしていません。

  • 動作するMarkdownファイルの例がありません。入力がない場合、期待される結果が何なのか混乱しています。
  • Difyには「document_loader」が存在しません。現在は「data source file」と「doc extractor」に置き換えられています。
  • すでに手動でMarkdownに変換済みの公式法的文書は、構造的(ヘッダーに基づく)かつ階層的な形式として解析されません。単純な分割としてしか解析されません。以下に例を示します。
# PERATURAN BADAN PENGAWAS OBAT DAN MAKANAN NOMOR 7 TAHUN 2023 TENTANG KRITERIA DAN TATA LAKSANA REGISTRASI OBAT KUASI 

## Menimbang 

a. bahwa untuk melindungi masyarakat dari obat kuasi yang tidak memenuhi persyaratan keamanan, khasiat, dan mutu, diperlukan pengaturan mengenai standar dan/atau persyaratan keamanan, khasiat, dan mutu obat kuasi; 

b. bahwa sesuai dengan ketentuan Pasal 3 ayat (1) huruf d Peraturan Presiden Nomor 80 Tahun 2017 tentang Badan Pengawas Obat dan Makanan, Badan Pengawas Obat dan Makanan memiliki fungsi pelaksanaan tugas pengawasan sebelum beredar dan pengawasan selama beredar; 

c. bahwa berdasarkan ketentuan Pasal 126 ayat (4) Peraturan Pemerintah Nomor 5 Tahun 2021 tentang Penyelenggaraan Perizinan Berusaha Berbasis Risiko, Badan Pengawas Obat dan Makanan berwenang mengatur kriteria dan tata laksana registrasi obat kuasi sebagai bagian dari standar dan/atau persyaratan obat kuasi; 

d. bahwa berdasarkan pertimbangan sebagaimana dimaksud dalam huruf a, huruf b, dan huruf c, perlu menetapkan Peraturan Badan Pengawas Obat dan Makanan tentang Kriteria dan Tata Laksana Registrasi Obat Kuasi; 

## Mengingat 

1. Peraturan Pemerintah Nomor 5 Tahun 2021 tentang Penyelenggaraan Perizinan Berusaha Berbasis Risiko (Lembaran Negara Republik Indonesia Tahun 2021 Nomor 15, Tambahan Lembaran Negara Republik Indonesia Nomor 6617); 

2. Peraturan Presiden Nomor 80 Tahun 2017 tentang Badan Pengawas Obat dan Makanan (Lembaran Negara Republik Indonesia Tahun 2017 Nomor 180); 

3. Peraturan Badan Pengawas Obat dan Makanan Nomor 21 Tahun 2020 tentang Organisasi dan Tata Kerja Badan Pengawas Obat dan Makanan (Berita Negara Republik Indonesia Tahun 2020 Nomor 1002) sebagaimana telah diubah dengan Peraturan Badan Pengawas Obat dan Makanan Nomor 13 Tahun 2022 tentang Perubahan atas Peraturan Badan Pengawas Obat dan Makanan Nomor 21 Tahun 2020 tentang Organisasi dan Tata Kerja Badan Pengawas Obat dan Makanan (Berita Negara Republik Indonesia Tahun 2022 Nomor 629); 

4. Peraturan Badan Pengawas Obat dan Makanan Nomor 22 Tahun 2020 tentang Organisasi dan Tata Kerja Unit Pelaksana Teknis di Lingkungan Badan Pengawas Obat dan Makanan (Berita Negara Republik Indonesia Tahun 2020 Nomor 1003) sebagaimana telah beberapa kali diubah terakhir dengan Peraturan Badan Pengawas Obat dan Makanan Nomor 24 Tahun 2022 tentang Perubahan Kedua atas Peraturan Badan Pengawas Obat dan Makanan Nomor 22 Tahun 2020 tentang Organisasi dan Tata Kerja Unit Pelaksana Teknis di Lingkungan Badan Pengawas Obat dan Makanan (Berita Negara Republik Indonesia Tahun 2022 Nomor 1111); 

## MEMUTUSKAN 

Menetapkan: 

PERATURAN BADAN PENGAWAS OBAT DAN MAKANAN TENTANG KRITERIA DAN TATA LAKSANA REGISTRASI OBAT KUASI. 

## BAB I 
### KETENTUAN UMUM 

#### Pasal 1 

Dalam Peraturan Badan ini yang dimaksud dengan: 

1. Obat Kuasi adalah sediaan yang mengandung bahan aktif dengan efek farmakologi yang bersifat non sistemik atau lokal dan untuk mengatasi keluhan ringan. 

2. Izin Edar adalah bentuk persetujuan registrasi obat kuasi untuk dapat diedarkan di wilayah Indonesia. 

3. Registrasi Obat Kuasi yang selanjutnya disebut Registrasi adalah prosedur pendaftaran dan evaluasi Obat Kuasi secara elektronik untuk mendapatkan persetujuan Izin Edar. 

4. Industri Farmasi adalah badan usaha yang memiliki izin dari lembaga pemerintah yang menyelenggarakan urusan di bidang kesehatan untuk melakukan kegiatan pembuatan obat atau bahan obat. 

5. Industri Obat Tradisional yang selanjutnya disingkat IOT adalah industri yang membuat semua bentuk sediaan obat tradisional. 

6. Usaha Kecil Obat Tradisional yang selanjutnya disingkat UKOT adalah usaha yang membuat semua bentuk sediaan obat tradisional, kecuali bentuk sediaan tablet, efervesen, suppositoria, dan kapsul lunak. 

7. Usaha Mikro Obat Tradisional yang selanjutnya disingkat UMOT adalah usaha yang hanya membuat sediaan Obat Bahan Alam dalam bentuk param, tapel, pilis, cairan obat luar, dan rajangan. 

8. Industri Kosmetika adalah industri yang memproduksi kosmetika yang telah memiliki izin usaha industri sesuai dengan ketentuan peraturan perundang-undangan. 

9. Importir adalah badan usaha berbentuk badan hukum atau bukan badan hukum yang memasukkan Obat Kuasi ke dalam wilayah Indonesia. 

10. Lisensi adalah izin yang diberikan oleh pemberi lisensi kepada penerima lisensi berdasarkan perjanjian tertulis untuk menggunakan hasil penelitian dan pengembangan yang menyangkut keamanan, khasiat, mutu, dan alih teknologi dalam pembuatan dan/atau penggunaan nama dagang serta penjualan suatu Obat Kuasi. 

11. Cara Pembuatan yang Baik adalah seluruh aspek kegiatan pembuatan yang bertujuan untuk menjamin agar produk yang dihasilkan senantiasa memenuhi persyaratan mutu yang ditetapkan sesuai dengan tujuan penggunaannya. 

12. Cara Pembuatan Obat yang Baik yang selanjutnya disingkat CPOB adalah cara pembuatan obat dan/atau bahan obat yang bertujuan untuk memastikan agar mutu obat dan/atau bahan obat yang dihasilkan sesuai dengan persyaratan dan tujuan penggunaannya. 

13. Cara Pembuatan Obat Tradisional yang Baik yang selanjutnya disingkat CPOTB adalah seluruh aspek kegiatan pembuatan obat tradisional yang bertujuan untuk menjamin agar produk yang dihasilkan memenuhi persyaratan mutu yang ditetapkan sesuai dengan tujuan penggunaannya. 

14. Cara Pembuatan Kosmetika yang Baik yang selanjutnya disingkat CPKB adalah seluruh aspek kegiatan pembuatan kosmetika yang bertujuan untuk menjamin agar produk yang dihasilkan senantiasa memenuhi persyaratan mutu yang ditetapkan sesuai dengan tujuan penggunaannya. 

15. Sertifikat CPOB adalah dokumen sah yang merupakan bukti bahwa Industri Farmasi telah memenuhi persyaratan CPOB dalam membuat satu jenis bentuk sediaan obat. 

16. Sertifikat CPOTB adalah dokumen sah yang merupakan bukti bahwa industri dan usaha obat tradisional telah memenuhi seluruh persyaratan teknis CPOTB dalam membuat satu jenis bentuk sediaan obat tradisional. 

17. Sertifikat Pemenuhan Aspek CPOTB secara Bertahap adalah dokumen sah yang merupakan bukti bahwa usaha obat tradisional yang secara bertahap telah memenuhi aspek persyaratan teknis CPOTB dalam membuat satu jenis bentuk sediaan obat tradisional. 

18. Sertifikat CPKB adalah dokumen sah yang merupakan bukti bahwa Industri Kosmetika telah menerapkan CPKB dalam pembuatan kosmetika. 

19. Produk Jadi adalah suatu produk yang telah melalui semua tahap proses pembuatan. 

20. Produk Ruahan adalah bahan yang telah selesai diolah dan tinggal memerlukan kegiatan pengemasan untuk menjadi Produk Jadi. 

21. Obat Kuasi Kontrak adalah Obat Kuasi yang seluruh atau sebagian tahapan pembuatan dilimpahkan kepada Industri Farmasi, IOT, UKOT, atau Industri Kosmetika berdasarkan kontrak. 

22. Registrasi Baru adalah Registrasi Obat Kuasi yang belum memiliki Izin Edar di Indonesia. 

23. Registrasi Variasi adalah Registrasi Obat Kuasi dengan perubahan aspek administratif, keamanan, khasiat, mutu, dan/atau penandaan pada Obat Kuasi yang telah memiliki Izin Edar. 

24. Registrasi Variasi Minor dengan Notifikasi adalah Registrasi Variasi untuk aspek tertentu yang tidak berpengaruh terhadap aspek keamanan, khasiat, dan/atau mutu Obat Kuasi serta tidak mengubah informasi pada persetujuan Izin Edar. 

25. Registrasi Variasi Minor dengan Persetujuan adalah Registrasi Variasi yang tidak termasuk kategori Registrasi Variasi Minor dengan Notifikasi maupun Registrasi Variasi Mayor. 

26. Registrasi Variasi Mayor adalah Registrasi Variasi yang berpengaruh terhadap aspek administratif, keamanan, khasiat, dan/atau mutu Obat Kuasi. 

27. Registrasi Ulang adalah Registrasi Obat Kuasi untuk perpanjangan masa berlaku Izin Edar. 

28. Penandaan adalah informasi lengkap mengenai khasiat, keamanan, dan cara penggunaan serta informasi lain yang berhubungan dengan produk yang dicantumkan pada etiket dan/atau brosur yang disertakan pada kemasan Obat Kuasi. 

29. Iklan Obat Kuasi yang selanjutnya disebut Iklan adalah setiap keterangan atau pernyataan mengenai Obat Kuasi, dalam bentuk gambar, tulisan, atau bentuk lain yang dilakukan dengan berbagai cara untuk pemasaran dan/atau perdagangan Obat Kuasi. 

30. Formula adalah susunan kualitatif dan kuantitatif bahan aktif dan bahan tambahan. 

31. Komposisi adalah susunan kualitatif dan kuantitatif dari bahan aktif. 

32. Prinsipal adalah badan usaha yang berbentuk badan hukum atau bukan badan hukum, di dalam negeri atau di luar negeri yang menunjuk distributor atau agen di dalam negeri untuk melakukan penjualan barang yang diproduksi, dimiliki, atau dikuasai oleh Prinsipal. 

33. Petugas adalah pegawai di lingkungan Badan Pengawas Obat dan Makanan yang diberi tugas oleh pejabat yang berwenang untuk melakukan pemeriksaan berdasarkan surat perintah tugas. 

34. Pelaku Usaha adalah badan usaha yang berbentuk badan hukum atau bukan badan hukum yang didirikan dan berkedudukan dalam wilayah hukum Negara Kesatuan Republik Indonesia, baik sendiri maupun bersama-sama menyelenggarakan kegiatan usaha dalam bidang Obat Kuasi. 

35. Pemegang Izin Edar adalah Pelaku Usaha yang telah mendapatkan Izin Edar. 

36. Pemberi Kontrak adalah Pelaku Usaha yang mengalihkan kegiatan pembuatan Obat Kuasi berdasarkan kontrak. 

37. Penerima Kontrak adalah Industri Farmasi, IOT, UKOT, atau Industri Kosmetika yang menerima pekerjaan untuk melakukan kegiatan pembuatan Obat Kuasi berdasarkan kontrak. 

38. Kepala Badan adalah Kepala Badan Pengawas Obat dan Makanan. 

39. Badan Pengawas Obat dan Makanan yang selanjutnya disingkat BPOM adalah lembaga pemerintah nonkementerian yang menyelenggarakan urusan pemerintahan di bidang pengawasan Obat dan Makanan. 

40. Hari adalah hari kerja。 
  • メタデータを含めるべきでしょうか?

こんにちは!フィードバックありがとうございます。期待とこのプラグインの使用方法が一致していなかったようです。

Advanced Markdown Chunker は、Knowledge Pipeline 内のチャンキングステップとして設計されており、Knowledge Base への保存直前に使用します。前のステップ(通常は Data Source / Doc Extractor)からテキストを受け取り、それをチャンクに分割して次のステップへ渡します。したがって、「入力」はプラグイン自体ではなく、パイプラインから提供されます。

最もシンプルな UI フローは以下の通りです:
Data Source(ファイルアップロード)→ (必要に応じて Doc Extractor)→ Chunker(Advanced Markdown Chunker)→ Knowledge Base、その後「Test Run」を実行して生成されたチャンクを確認します。

「法律」ドキュメントの場合、テスト時には予測可能な設定(自動なし)を強制することをお勧めします:

strategy: structural
enable_hierarchy: true
leaf_only: true
include_metadata: true

document_loader について:はい、これは私のミスでした。以前のドキュメントには、現在の Dify UI と一致しない例が含まれていました。すでに README を適切に更新済みです。

これが意図された使用方法を明確にするのに役立つことを願っています。