Plugin External Knowledge Base
Trong NocoBase, plugin cơ sở tri thức (External Knowledge Base Plugin) dùng để mở rộng nguồn truy xuất RAG cho AI employees. Với phần lớn trường hợp, Local knowledge base là đủ. Chỉ khi tài liệu, dữ liệu vector hoặc logic truy xuất đã được hệ thống bên ngoài duy trì, bạn mới cần phát triển plugin cơ sở tri thức bên ngoài.
Plugin cơ sở tri thức bên ngoài không tham gia quy trình tải tài liệu, chia đoạn, vector hóa hoặc xóa tài liệu trong NocoBase. Plugin chỉ nhận yêu cầu truy xuất khi AI employee hội thoại và trả về các đoạn tài liệu phù hợp.
- Tổng quan cơ sở tri thức - Hiểu ranh giới của Local, Readonly và External
- Plugin - Hiểu lifecycle plugin server và
this.app.pm - i18n - Chuẩn bị bản dịch nếu plugin cung cấp form cấu hình
Trường hợp sử dụng
Cơ sở tri thức bên ngoài phù hợp với các tình huống sau:
- Đã có dịch vụ RAG độc lập, chẳng hạn dịch vụ cơ sở tri thức nội bộ hoặc API truy xuất của bên thứ ba
- Cần kết nối tới cơ sở dữ liệu vector mà NocoBase chưa hỗ trợ sẵn
- Cần xử lý quy tắc nghiệp vụ trước hoặc sau truy xuất, chẳng hạn lọc quyền, cô lập tenant, reranking hoặc loại trùng
- Vòng đời tài liệu hoàn toàn do hệ thống bên ngoài quản lý, NocoBase chỉ đọc kết quả truy xuất khi hội thoại
Nếu chỉ muốn tải file trong NocoBase, tự động chia tài liệu và tạo chỉ mục vector, mặc định hãy dùng Local knowledge base.
Điểm mở rộng
Cơ sở tri thức bên ngoài được đăng ký qua điểm mở rộng vectorStoreProvider do @nocobase/plugin-ai cung cấp. Phía server cần triển khai hai đối tượng:
providerName là định danh duy nhất của provider. Provider được chọn hoặc nhập khi tạo knowledge base External phải khớp với providerName đã đăng ký trên server.
Đăng ký Provider
Trong src/server/plugin.ts, lấy instance plugin AI rồi đăng ký VectorStoreProvider:
Giai đoạn load() phù hợp để đăng ký điểm mở rộng. Không cần kết nối cơ sở dữ liệu vector bên ngoài ở đây, cũng không nên chạy truy vấn truy xuất ở đây. Logic kết nối và truy vấn thực tế nên đặt trong VectorStoreService.
Plugin cơ sở tri thức bên ngoài luôn phụ thuộc @nocobase/plugin-ai-knowledge-base. Nên kiểm tra phụ thuộc này trong beforeEnable():
Như vậy, nếu plugin phụ thuộc chưa được bật, người dùng sẽ nhận được thông báo rõ ràng.
Triển khai Provider
Provider chỉ cần cung cấp providerName và tạo service dựa trên cấu hình knowledge base.
vectorStoreProps đến từ form cấu hình knowledge base bên ngoài, ví dụ API endpoint, API key, Embedding model hoặc tenant identifier. NocoBase sẽ truyền các giá trị này cho Provider khi thực hiện truy xuất.
Triển khai Service
Service là phần lõi của logic truy xuất. Với knowledge base External, thường chỉ cần chuyển kết quả truy xuất bên ngoài thành định dạng DocumentSegmentedWithScore[] mà NocoBase cần.
Các điểm chính:
query- Câu hỏi AI employee cần truy xuấttopK- Số đoạn mong muốn trả vềscore- Ngưỡng điểm trong cấu hình knowledge base của AI employeevectorStoreProps- Tham số người dùng điền trong form cấu hình knowledge base bên ngoài
Interface VectorStoreService có getVectorStore(). Knowledge base External chỉ phụ trách truy xuất, không để NocoBase quản lý vector store bên dưới, nên ví dụ ném lỗi trực tiếp.
Trả về kết quả truy xuất
search() phải trả về DocumentSegmentedWithScore[]:
Trong đó:
contentlà nội dung đoạn tài liệu sẽ đưa cho mô hìnhmetadatalưu nguồn, tiêu đề tài liệu, URL, thông tin quyền và metadata khácscorelà điểm truy xuất. Nên chuẩn hóa để giá trị càng lớn càng liên quaniddùng để định danh đoạn tài liệu bên ngoài, hỗ trợ kiểm tra và loại trùng
Nếu dịch vụ bên ngoài dùng ý nghĩa điểm khác, ví dụ khoảng cách càng nhỏ càng liên quan, hãy chuyển đổi sang điểm liên quan thống nhất trước khi trả về NocoBase.
Cấu hình tham số knowledge base bên ngoài
Server có thể đọc trực tiếp vectorStoreProps, nhưng các tham số này thường cần người dùng điền khi tạo knowledge base External. Vì vậy, form cấu hình cần được đăng ký ở entry frontend của plugin. Sau khi đăng ký, NocoBase sẽ hiển thị các field tương ứng trong form tạo knowledge base và truyền giá trị cho server khi truy xuất.
Cấu hình form frontend không bắt buộc. Nếu knowledge base bên ngoài không cần người dùng điền tham số tùy chỉnh, bạn không cần đăng ký vectorStorePropForm.
Với trường hợp đơn giản, mặc định dùng defaultVectorStorePropForm(). Hàm này nhận một mảng field, tạo một form item cho mỗi field và dùng input hỗ trợ chọn biến NocoBase:
Đăng ký form cấu hình trong entry frontend của plugin:
name phải khớp với providerName ở server. key là tên field dùng khi lưu tham số và truyền cho server; server có thể đọc giá trị từ vectorStoreProps bằng cùng key.
Form cấu hình tùy chỉnh
Ngoài defaultVectorStorePropForm(), bạn cũng có thể truyền một React component tùy chỉnh cho vectorStorePropForm:
Cấu trúc plugin ví dụ
Một plugin knowledge base bên ngoài có thể tổ chức như sau:
Trong đó:
plugin.tsđăng kýVectorStoreProviderprovider.tskhai báoproviderNamevà tạo serviceservice.tstriển khaisearch()và chuyển kết quả truy xuất bên ngoài thànhDocumentSegmentedWithScore[]client/index.tsxđăng ký form cấu hình knowledge base bên ngoài
Đến đây, plugin knowledge base bên ngoài đã có thể được AI employees gọi. Sau khi người dùng tạo knowledge base External và chọn Provider tương ứng, hội thoại AI employee sẽ truy xuất đoạn tài liệu qua search() của bạn.
Liên kết liên quan
- Tổng quan cơ sở tri thức - Ranh giới của Local, Readonly và External
- Plugin - Lifecycle plugin server và
this.app.pm - i18n - Bản dịch frontend và server của plugin
- Tổng quan phát triển client - Entry client, component và năng lực context

