Các chatbot như ChatGPT, Gemini, Claude hay Grok đều có thể được truy cập một cách đơn giản qua các trình duyệt online. Tất cả đều được cập nhật liên tục về khả năng xử lý, độ thông minh và cả những tính năng mới. Song song với đó, các LLM mã nguồn mở trên thực tế cũng đã liên tục được cập nhật với khả năng không kém các model đóng do những công ty trên phát triển.
Tuy nhiên, đối với các nhu cầu phân tích các dữ liệu nội bộ nhạy cảm, việc sử dụng những dịch vụ chatbot như ChatGPT lại là một bất lợi. Cho các nhu cầu tăng tính riêng tư của dữ liệu làm việc với chatbot, chúng ta có giải pháp là tự host chatbot dùng riêng ở local để đảm bảo dữ liệu chỉ được xử lý dưới local. Mặt khác, cách làm này cũng cho phép chúng ta linh hoạt hơn trong việc chạy các model đã được fine tune kỹ theo đúng những thông tin chuyên môn mà chúng ta muốn chatbot xử lý.
Có nhiều cách chạy model dưới local, như chạy trên chính máy tính cá nhân, laptop hoặc thậm chí là chạy trên một host local do chúng ta quản lý, trên NAS cũng được luôn. Trong bài này, mình sẽ chia sẻ một cách tạo ra một chatbot cá nhân trên NAS, có thể truy cập được bằng trình duyệt trên bất cứ thiết bị nào, miễn là có kết nối vao mạng nội bộ (hoặc thậm chí là bạn nào có domain cũng có thể trỏ nó tới để truy cập remote được luôn).
2 cái chính mình sẽ sử dụng để tạo ra con chatbot trên là:
Tuy nhiên, đối với các nhu cầu phân tích các dữ liệu nội bộ nhạy cảm, việc sử dụng những dịch vụ chatbot như ChatGPT lại là một bất lợi. Cho các nhu cầu tăng tính riêng tư của dữ liệu làm việc với chatbot, chúng ta có giải pháp là tự host chatbot dùng riêng ở local để đảm bảo dữ liệu chỉ được xử lý dưới local. Mặt khác, cách làm này cũng cho phép chúng ta linh hoạt hơn trong việc chạy các model đã được fine tune kỹ theo đúng những thông tin chuyên môn mà chúng ta muốn chatbot xử lý.
Có nhiều cách chạy model dưới local, như chạy trên chính máy tính cá nhân, laptop hoặc thậm chí là chạy trên một host local do chúng ta quản lý, trên NAS cũng được luôn. Trong bài này, mình sẽ chia sẻ một cách tạo ra một chatbot cá nhân trên NAS, có thể truy cập được bằng trình duyệt trên bất cứ thiết bị nào, miễn là có kết nối vao mạng nội bộ (hoặc thậm chí là bạn nào có domain cũng có thể trỏ nó tới để truy cập remote được luôn).
2 cái chính mình sẽ sử dụng để tạo ra con chatbot trên là:
- Ollama: đây là một công cụ mã nguồn mở, miễn phí giúp đơn giản hóa việc tải về, cài đặt và chạy các LLM ngay trên máy tính. Ở đây, nó sẽ là phần backend đứng đằng sau và chúng ta sẽ xài nó qua API.
- OpenUI: đây là giao diện người dùng web mã nguồn mở, được thiết kế để hoạt động với Ollama. Nó cung cấp một giao diện trò chuyện trực quan quen thuộc giống như ChatGPT để dễ xài, đồng thời cũng hỗ trợ quản lý nhiều model, tùy chỉnh tham số, quản lý lịch sử chat và thậm chí còn ích hợp được với các công cụ tạo ảnh bằng AI nữa.
Chuẩn bị
- Cài đặt Container Manager: Nếu bạn chưa có, hãy vào Package Center của Synology, tìm và cài đặt Container Manager.
- Tạo thư mục: Mở File Station, tạo thư mục tên docker nằm ngay trong volumex (chữ x này tương ứng với số thứ tự volume trên NAS của bạn nha, như của mình là 5 thì mình sẽ tạo trong volume5 > docker), Trong thư mục docker tạo thêm 2 thư mục là data và webui.
Cài đặt
Giờ chúng ta vào DSM mở Container Manager lên, vào tab Project và bấm vào Create.
Trong cửa sổ hiện ra, điền:
Project name: ollama
Path: Đường dẫn tới thư mục ollama vừa tạo ở trên
Source: bấm chọn Create docker-compose.yml và nhập vào đoạn bên dưới đây:
version: '3.8'
services:
webui:
container_name: open-webui
image: ghcr.io/open-webui/open-webui:main
Quảng cáo
restart: unless-stopped
ports:
- "8271:8080"
volumes:
- /volume5/docker/ollama/webui:/app/backend/data
environment:
- 'OLLAMA_BASE_URL=http://ollama:11434'
- 'WEBUI_SECRET_KEY=abcd1234'
depends_on:
- ollama
ollama:
Quảng cáo
container_name: ollama-server
image: ollama/ollama:latest
restart: unless-stopped
volumes:
- /volume5/docker/ollama/data:/root/.ollama
ports:
- "11434:11434"
Lưu ý:
- Các bạn nếu copy code yalm bên trên thì nhớ thụt dòng vào như hình chụp mới dược nha.
- Chỗ volume trong code, các bạn nhớ sửa lại đúng số volume chứa thư mục docker đã trong NAS của các bạn nha.
- Tất cả đều phải làm bằng tài khoản admin nha.
Sau khi gõ đoạn code trên xong bấm Next > Next > Done và đợi container được build và tự chạy lên là xong.
Xài
Vậy là coi như chúng ta đã thiết lập một con chatbot luôn có sẵn trên NAS xong. Bây giờ chỉ cần mở trình duyệt, gõ vào địa chỉ http://<IP_NAS_CUA_BAN>:8271
Lần đầu tiên truy cập, OpenUI sẽ yêu cầu bạn tạo tài khoản quản trị. Sau đó là cứ đăng nhập và xài như ChatGPT thôi.
Bây giờ các bạn vào tới bên trong, chúng ta sẽ gõ tên model mà các bạn muốn xài vào, Thí dụ như ở đây mình tải llama3, vào khung chọn model bên góc trên bên trái, sau đó bấm vào dòng “Tải model”, đợi nó tải về là đã có thể bắt đầu chat.
Cái OpenUI này cũng còn nhiều thông số trong đó lắm, mọi người có thể nghịch thêm ha. Có thể gõ system prompt, bỏ thêm tài liệu vào làm RAG, chỉnh top k, top p,… Mình sẽ chia sẻ ở bài khác cho tiện ha.
Về hiệu năng, thì mình chạy thử Gemma3 1.5 tỷ tham số trên cả DS925+ (4GB RAM, chip 4 nhân AMD) lẫn DS1621xs+ (8GB RAM, chip Xeon) thì tốc độ phản hồi gần như tức thời, không cần phải đợi load model quá lâu. Mọi người có thể coi thêm test chi tiết mẫu NAS này ở đây hoặc thêm thông số kỹ thuật của nó ở đây nha.
