Chương 1, Chương 2 sẽ đưa ra các giải pháp để giải quyết các vấn đề và đạt được mục tiêu xây dựng được hệ thống quản lý tri thức và tích hợp API áp dụng cho bất kỳ hệ thống hội thoại nào.1 Kiến trúc tổng quan 2.1 Vấn đề Với những hệ thống liên quan đến xử lý, lưu trữ và truy vấn dữ liệu thì cần đảm bảo lưu trữ được nhiều dữ liệu, dữ liệu có dụng lượng lớn như ảnh, audio,. Việc xử lý và truy vấn cũng cần diễn ra nhanh chóng đặc biệt với các bộ dữ liệu lớn. Dữ liệu được trả về từ API thì phải nhanh và chính xác. Bên cạnh đó vì cần tạo ra được API từ kho tri thức có sẵn nên cần có sự gắn kết giữa API và tri thức được tạo ra, dữ liệu trả về khi truy vấn API cần chính xác theo tri thức.
Ngoài ra để hệ thống đáp ứng được số lượng người dùng và yêu cầu lớn, dễ dàng bảo trì sửa lỗi thì có thể chia nhỏ hệ thống dựa trên các tính năng theo kiến trúc microservices. Dựa trên những vấn đề trên, em đã thiết kế kiến trúc hệ thống quản lý tri thức và xây dựng API để đảm bảo tối ưu hiệu năng xử lý dữ liệu và dễ dàng quản lý.2 Giải pháp Hình 2 mô tả kiến trúc tổng quan hệ thống quản lý tri thức và tích hợp API bao gồm hai dịch vụ chính xây dựng theo kiến trúc microservice là:(i) Dịch vụ tri thức và (ii) Dịch vụ API. Để sử dụng được các dịch vụ của hệ thống quản lý tri thức và tích hợp API người dùng cần thực hiện đăng nhập thông qua hệ thống IAM. Các hệ thống hội thoại sẽ thông qua Gateway API để tương tác với hệ thống để truy vấn dữ liệu từ tri thức được lưu trong cơ sở dữ liệu của hệ thống hoặc thông qua API tích hợp để truy vấn dữ liệu từ bên thứ ba.
Các API cung cấp để các hệ thống hội thoại truy vấn sẽ dùng được ngay mà không cần phải cấu hình, lập trình hay xây dựng các luồng hội thoại riêng. 19 Cấu trúc cơ sở dữ liệu được xây dựng theo mô hình “Master-slave pattern” chia làm 1 master và 2 slaver. Trong đó master đóng vai trò thêm, sửa, xóa dữ liệu. Dữ liệu từ master dược phân phối và đồng bộ với slave.
Dữ liệu truy vấn từ các API sẽ được trả về từ slave. Hình 2 Kiến trúc tổng quan hệ thống quản lý tri thức và tích hợp API Dịch vụ tri thức chịu trách nhiệm quản lý tri thức bao gồm tạo tri thức, xử lý truy vấn dữ liệu, theo dõi lịch sử dữ liệu, quản lý nhập liệu và tạo API cho tri thức. Mỗi bộ tri thức sẽ thuộc về một chủ đề theo nhu cầu trả lời của bot, được đảm bảo là duy nhất để chính xác khi truy vấn. Dịch vụ API chịu trách nhiệm quản lý, xây dựng các API, xử lý các truy vấn từ bot.
Khi nhận được truy vấn, dịch vụ sẽ kiểm tra xem API đã từng được truy vấn trong một khoảng thời gian được quy định sẵn trong hệ thống chưa bằng cách kiểm tra dữ liệu trong cache. Nếu có sẽ truy vấn dữ liệu từ cache, nếu không có sẽ truy vấn dữ liệu từ 1 trong 2 slaver của cấu trúc cơ sở dữ liệu và lưu dữ liệu vừa được truy vấn vào cache. Việc truy vấn như vậy sẽ giúp truy vấn nhanh hơn vì dữ liệu ở cache của máy chủ, nếu dữ liệu đã có thì sẽ không phải gọi lên server của cơ sở dữ liệu.2 Dịch vụ tri thức Dịch vụ tri thức cung cấp các tính năng để quản lý tri thức cho bot như tạo tri thức, quản lý cấu trúc dữ liệu động, xây dựng dữ liệu, theo dõi lịch sử dữ liệu, sinh API tự động cho tri thức. Trong đó tính năng quản lý cấu trúc dữ liệu động được trình bày trong phần 2.1 và 20 tính năng sinh API tự động trình bày ở phần 2.2 là nổi bật nhất, làm tiền đề để tạo nên tri thức và làm cơ sở để tạo API động cho tri thức.1 Quản lý cấu trúc dữ liệu động Hình 3 Mô tả cơ sở dữ liệu của cấu trúc dữ liệu động theo NoSQL Dữ liệu dành cho bot rất đa dạng, với mỗi nội dung, mục đích trả lời cần bộ dữ liệu khác nhau.
Mỗi câu trả lời sẽ được dựa vào từ khóa trong câu hỏi để tìm dữ liệu và trả lời thích hợp. Khi đó mỗi bộ dữ liệu sẽ cần thu thập các câu trả lời và lưu trữ theo từ khóa. Các từ khóa liên quan đến cùng một chủ đề sẽ được tập hợp thành cùng một bộ tri thức. Để mỗi bộ tri thức có thể dễ dàng lưu trữ dữ liệu như thế cần xác định trước cấu trúc dữ liệu cho nó.
Mỗi bộ tri thức sẽ được xây dựng cấu trúc dữ liệu trước khi thêm dữ liệu. Cấu trúc dữ liệu sẽ cho phép xây dựng cơ sở nhập liệu của mỗi tri thức, giúp mỗi tri thức sẽ là tập hợp dữ liệu của một chủ đề nhất định, dễ dàng xây dựng dữ liệu cho bot theo các chủ đề khác nhau, đồng thời dễ dàng quản lý và xây dựng các API truy vấn. Việc mỗi bộ tri thức có một cấu trúc dữ liệu riêng xây dựng theo mỗi trường dữ liệu sẽ tạo thành cấu trúc dữ liệu động. Và để đảm bảo lưu trữ dữ liệu theo cấu trúc linh hoạt thì cơ sở dữ liệu sẽ thiết kế theo NoSQL.
21 Cấu trúc dữ liệu động được xây dựng từ nhiều nguồn dựa theo nguồn dữ liệu (biểu mẫu, file dữ liệu) và dựa trên kiểu dữ liệu của mỗi trường dữ liệu. Mỗi trường dữ liệu sẽ có cách để lưu trữ cấu hình khác nhau và khi thêm dữ liệu sẽ có cách lưu dữ liệu theo từng trường khác nhau để tạo thành bộ dữ liệu của tri thức dựa trên tính chất kiểu dữ liệu của nó như Hình 3. Cấu hình mỗi trường dữ liệu sẽ được lưu thành bộ cấu trúc dữ liệu và các bộ dữ liệu sẽ được tạo thành từ các trường đó. Với các kiểu dữ liệu dạng lựa chọn như trắc nghiệm hay danh sách cần có danh sách các lựa chọn để người dùng có thể chọn hoặc có thể cho người dùng thêm câu trả lời khác.
Với các kiểu dữ liệu file đa phương tiện như hình ảnh hay âm thanh thì dư xlieeuj khi lưu cần có tên file, loại file và dữ liệu cần nén lại để lưu. Bảng 1 Thiết kế cơ sở dữ liệu cho cấu trúc dữ liệu của tri thức Thông tin Kiểu dữ liệu Mô tả field String Tên trường dữ liệu dataType String Kiểu câu trả lời description String Mô tả obligate Boolean Bắt buộc trả lời hay không key Boolean Có phải trường định danh không options Array Danh sách các lựa chọn cho câu trả lời dạng lựa chọn other Boolean Xác định có cho phép thêm câu trả lời cho dạng lựa chọn 2.2 Sinh API cho tri thức Các bộ tri thức sau khi được tạo sẽ tự động sinh ra các API để truy vấn dữ liệu từ tri thức. 6 loại API được sinh tự động, tổng quát cho mọi tri thức là: “API lấy danh sách bản ghi” (Lấy ra toàn bộ dữ liệu của tri thức), “API lấy dữ liệu một bản ghi” (Lấy ra các bộ dữ liệu đáp ứng được điều kiện), “API lấy dữ liệu có điều kiện” (Lấy dữ liệu sao cho chỉ lấy các trường được chỉ định, các bộ dữ liệu lấy ra cần đáp ứng được điều kiện nếu có), “API thêm bộ dữ liệu” (Thêm bộ dữ liệu mới cho tri thức), “API chỉnh sửa dữ liệu” (Chỉnh sửa bộ dữ liệu đáp ứng điều kiện), “API xóa dữ liệu” (Xóa bộ dữ liệu đáp ứng điều kiện). Các API sẽ dựa trên định danh của tri thức để truy vấn dữ liệu từ tri thức tương ứng.
Ngoài ra cũng cần cung cấp thêm thông tin để lấy dữ liệu theo đúng yêu cầu 22 Bảng 2 Danh sách API tri thức tổng quát API Phương thức Địa chỉ Lấy danh sách bản ghi GET /api/v1/datas/:uniqueId Lấy dữ liệu một bản ghi GET /api/v1/datas/:uniqueId/{conditionList} Dữ liệu có đều kiện GET /api/v1/datas/:uniqueId/{fieldList}? {conditionList} Thêm bộ dữ liệu POST /api/v1/datas/:uniqueId Chỉnh sửa bộ dữ liệu PUT /api/v1/datas/:uniqueId Xóa bộ dữ liệu DELETE /api/v1/datas/:uniqueId 2.3 Dịch vụ API Dịch vụ API cung cấp các tính năng quản lý các API được tạo ra và xử lý truy vấn dữ liệu từ API. Trong đó 2 tính năng chính là quản lý API tri thức phần 2.1 và quản lý API tích hợp phần 2.1 Quản lý API tri thức Để các ứng dụng bot có thể truy vấn dữ liệu từ tri thức thì cần có API để truy vấn. API truy vấn dữ liệu có 2 dạng. Dạng thứ nhất là các API mặc định, tổng quan cho mọi trường hợp được sinh ra khi tri nhức được tạo thành công ở phần 2.
Dạng thứ 2 là các API tùy biến được người quản lý tri thức tạo ra theo nhu cầu sử dụng với tri thức dựa trên 6 loại API mặc định. Sau khi các API được sinh ra, hệ thống sẽ cho phép những người đủ quyền hạn xem được cách thức sử dụng, thông tin cơ bản, các luật giúp bảo mật dữ liệu của API đồng thời cũng cho phép dùng thử các API trước. Người có quyền sử dụng cần nhập chính xác URL, phương thức truy cập API và cung cấp chính xác các điều luật để có thể sử dụng. 23 Hình 4 Minh họa truy vấn dữ liệu từ API tri thức Các ứng dụng sử dụng API để truy vấn dữ liệu từ các bộ tri thức sẽ qua cùng một bộ quản lý API tri thức.
Bộ quản lý sẽ tiếp nhận các yêu cầu và xử lý lấy dữ liệu từ tri thức tương ứng để trả về kết quả truy vấn cho ứng dụng. Để tránh quá tải khi có nhiều truy vấn cùng một lúc thì hệ thống được triển khai trên nhiều máy chủ khác nhau. Các máy chủ sẽ dùng chung một bộ quản lý API tri thức để xử lý.2 Quản lý API tích hợp Tính năng quản lý API tích hợp sẽ cho phép chuyển đổi API tích hợp của bên thứ 3 thành API trung gian. API trung gian sẽ được sử dụng để tích hợp thay cho API bên thứ 3.
Hình 5 Tính năng quản lý API tích hợp 24 Hình 6 Luồng tạo API tích hợp. Khi người dùng sử dụng tính năng để tạo API trung gian thì API bên thứ 3 sẽ được chuyển đổi định dạng dữ liệu trả về, chuẩn hóa tên trường dữ liệu, lựa chọn các trường dữ liệu cần lấy dữ liệu sao cho phù hợp với nhu cầu.