Plugin External Knowledge Base
Di NocoBase, plugin knowledge base (External Knowledge Base Plugin) digunakan untuk memperluas sumber retrieval RAG bagi AI employees. Untuk sebagian besar kebutuhan, Local knowledge base sudah cukup. Plugin external knowledge base hanya diperlukan ketika dokumen, data vektor, atau logika retrieval sudah dikelola oleh sistem eksternal.
Plugin external knowledge base tidak ikut dalam proses upload dokumen, segmentasi, vektorisasi, atau penghapusan di NocoBase. Plugin ini hanya menerima request retrieval saat percakapan AI employee dan mengembalikan segmen dokumen yang cocok.
- Ikhtisar knowledge base - Memahami batas kemampuan Local, Readonly, dan External
- Plugin - Memahami lifecycle plugin server dan
this.app.pm - i18n - Menyiapkan terjemahan jika plugin menyediakan form konfigurasi
Skenario penggunaan
External knowledge base cocok untuk kondisi berikut:
- Sudah ada layanan RAG mandiri, seperti layanan knowledge base internal atau API retrieval pihak ketiga
- Perlu terhubung ke database vektor yang belum didukung langsung oleh NocoBase
- Perlu memproses aturan bisnis sebelum atau setelah retrieval, seperti pemeriksaan izin, isolasi tenant, reranking, atau deduplikasi
- Siklus hidup dokumen sepenuhnya dikelola sistem eksternal, dan NocoBase hanya membaca hasil retrieval saat percakapan
Jika hanya ingin mengunggah file di NocoBase, memecah dokumen otomatis, dan membuat indeks vektor, gunakan Local knowledge base secara default.
Titik ekstensi
External knowledge base didaftarkan melalui titik ekstensi vectorStoreProvider dari @nocobase/plugin-ai. Sisi server perlu mengimplementasikan dua objek:
providerName adalah identitas unik provider external knowledge base. Provider yang dipilih atau diisi saat membuat knowledge base External harus sama dengan providerName yang didaftarkan di server.
Mendaftarkan Provider
Di src/server/plugin.ts, ambil instance plugin AI lalu daftarkan VectorStoreProvider:
Tahap load() cocok untuk mendaftarkan titik ekstensi. Tidak perlu membuat koneksi ke database vektor eksternal di tahap ini, dan request retrieval juga tidak perlu dijalankan di sini. Letakkan koneksi dan query sebenarnya di VectorStoreService.
Plugin external knowledge base selalu bergantung pada @nocobase/plugin-ai-knowledge-base. Disarankan melakukan pengecekan di beforeEnable():
Dengan begitu, pengguna akan mendapat pesan yang jelas jika plugin dependensi belum diaktifkan.
Mengimplementasikan Provider
Provider hanya bertanggung jawab menyediakan providerName dan membuat service berdasarkan konfigurasi knowledge base.
vectorStoreProps berasal dari form konfigurasi external knowledge base, misalnya endpoint API, API key, model Embedding, atau identitas tenant. NocoBase meneruskan nilai ini ke Provider saat retrieval dijalankan.
Mengimplementasikan Service
Service adalah inti logika retrieval. Untuk knowledge base External, biasanya cukup mengubah hasil retrieval eksternal menjadi format DocumentSegmentedWithScore[] yang dibutuhkan NocoBase.
Poin penting:
query- Pertanyaan yang perlu diretrieve oleh AI employeetopK- Jumlah segmen yang diharapkanscore- Ambang skor di pengaturan knowledge base AI employeevectorStoreProps- Parameter yang diisi melalui form konfigurasi external knowledge base
Interface VectorStoreService memiliki getVectorStore(). Knowledge base External hanya bertanggung jawab untuk retrieval dan tidak membuat NocoBase mengelola vector store di bawahnya, sehingga contoh ini langsung melempar error.
Mengembalikan hasil retrieval
search() harus mengembalikan DocumentSegmentedWithScore[]:
Keterangan:
contentadalah isi segmen dokumen yang diberikan ke modelmetadatamenyimpan sumber, judul dokumen, URL, informasi izin, dan metadata lainscoreadalah skor retrieval. Disarankan menormalkannya agar nilai lebih besar berarti lebih relevaniddigunakan untuk mengidentifikasi segmen dokumen eksternal dan membantu debugging atau deduplikasi
Jika layanan eksternal menggunakan makna skor yang berbeda, misalnya jarak lebih kecil berarti lebih relevan, ubah dulu menjadi skor relevansi yang konsisten sebelum dikembalikan ke NocoBase.
Mengonfigurasi parameter external knowledge base
Server dapat membaca vectorStoreProps secara langsung, tetapi parameter ini biasanya perlu diisi pengguna saat membuat knowledge base External. Karena itu, form konfigurasi perlu didaftarkan di entry frontend plugin. Setelah terdaftar, NocoBase akan menampilkan field terkait di form pembuatan knowledge base dan meneruskan nilainya ke server saat retrieval.
Konfigurasi form frontend tidak wajib. Jika external knowledge base tidak membutuhkan parameter kustom dari pengguna, kamu tidak perlu mendaftarkan vectorStorePropForm.
Untuk kasus sederhana, gunakan defaultVectorStorePropForm() secara default. Fungsi ini menerima array field, membuat satu item form untuk setiap field, dan menggunakan input yang mendukung pemilihan variabel NocoBase:
Daftarkan form konfigurasi di entry frontend plugin:
name harus sama dengan providerName di server. key adalah nama field saat parameter disimpan dan diteruskan ke server; server dapat membacanya dari vectorStoreProps menggunakan key yang sama.
Form konfigurasi kustom
Selain memakai defaultVectorStorePropForm(), kamu juga dapat memberikan komponen React kustom ke vectorStorePropForm:
Struktur plugin contoh
Plugin external knowledge base dapat disusun seperti berikut:
Keterangan:
plugin.tsmendaftarkanVectorStoreProviderprovider.tsmendeklarasikanproviderNamedan membuat serviceservice.tsmengimplementasikansearch()dan mengubah hasil retrieval eksternal menjadiDocumentSegmentedWithScore[]client/index.tsxmendaftarkan form konfigurasi external knowledge base
Sampai di sini, plugin external knowledge base sudah dapat dipanggil oleh AI employees. Setelah pengguna membuat knowledge base External dan memilih Provider terkait, percakapan AI employee dapat mengambil segmen dokumen melalui search() kamu.
Tautan terkait
- Ikhtisar knowledge base - Batas kemampuan Local, Readonly, dan External
- Plugin - Lifecycle plugin server dan
this.app.pm - i18n - Terjemahan frontend dan server plugin
- Ikhtisar pengembangan client - Entry client, komponen, dan kemampuan context

