0

Tạo AI Chatbot local với OpenWebUI và Ollama

Giới Thiệu

Hi các bạn, dạo này deepseek nổi lên như một cơn bão Yagi trong ai 😃 nên mình có mò mẫm thử để build ai trên local. Sau khi xem thử video mấy anh Ấn trên Youtube thì có thấy các anh dùng OpenWebUI và Ollama để build AI chạy local cực nhanh và tiện lợi. Nên nay mình viết bài này để hướng dẫn ae build 1 bản "mỳ ăn liền" mà nhiều chức năng.

Lợi ích của AI chatbot chạy local

  1. Bảo mật dữ liệu: Thông tin nhạy cảm luôn được lưu trữ cục bộ, không bao giờ rời khỏi máy tính của bạn.
  2. Độc lập với kết nối internet: Hệ thống vẫn hoạt động bình thường khi không có kết nối mạng.
  3. Tiết kiệm chi phí API: Không phát sinh phí sử dụng API khi tương tác nhiều với chatbot.
  4. Tùy biến linh hoạt: Tùy biến mọi thứ theo ý muốn.

Hạn chế cần lưu ý

Tuy nhiên, cũng cần lưu ý một số hạn chế:

  • Yêu cầu tài nguyên phần cứng: Model với càng nhiều parameter thì càng cần nhiều tài nguyên để xử lý, test trên máy mình ram 32GB - GPU onboard thì thấy bé laptop khá chật vật để chạy được deepseek 14B và 32B còn hơn thì chắc bé hẹo nên cả nhà cân nhắc về resource máy nhé 😃

Khuyến nghị tài nguyên

Khuyến nghị tài nguyên cho các mô hình theo số lượng tham số:

Model RAM GPU VRAM
1.5B 8GB Không cần GPU rời
7B 16GB Khuyến nghị GPU rời (VRAM 4GB)
14B 32GB GPU rời (VRAM 8GB)
32B 64GB GPU rời (VRAM 16GB)
70B 128GB GPU rời (VRAM 24GB trở lên)
671B

Cài Đặt với Docker Compose

Bước 1: Tạo file docker-compose.yaml

Tạo một file docker-compose.yaml với nội dung sau:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    restart: unless-stopped

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_API_BASE_URL=http://ollama:11434
    volumes:
      - open-webui:/app/backend/data
    depends_on:
      - ollama
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped

volumes:
  ollama:
  open-webui:

(Mình đã test và hoạt động tốt trên ubuntu)

Cấu hình này tạo ra hai container:

  • Ollama: Engine chạy các mô hình AI locally
  • OpenWebUI: Giao diện web để tương tác với các mô hình

Bước 2: Khởi chạy containers

Mở terminal và chạy lệnh:

docker compose up -d

Bước 3: Truy cập OpenWebUI

Sau khi lệnh chạy hoàn tất, truy cập OpenWebUI tại địa chỉ: http://localhost:3000

Lưu ý: Quá trình khởi động lần đầu có thể mất một khoảng thời gian. Để kiểm tra trạng thái khởi động chúng ta sử dụng lệnh:

docker logs -f open-webui

Khi hệ thống đã sẵn sàng, bạn sẽ thấy thông báo tương tự như sau:

v0.5.20 - building the best open-source AI user interface.

https://github.com/open-webui/open-webui

Fetching 30 files: 100%|██████████| 30/30 [00:00<00:00, 22903.01it/s]
INFO:     Started server process [1]
INFO:     Waiting for application startup.

Thiết lập ban đầu và sử dụng

Bước 1: Tạo tài khoản quản trị viên

Trong lần truy cập đầu tiên, bạn sẽ được yêu cầu thiết lập tên đăng nhập và mật khẩu cho tài khoản quản trị viên. Tài khoản này sẽ được sử dụng để quản lý hệ thống.

Bước 2: Tải các mô hình AI

Sau khi đăng nhập, bạn có thể tìm và tải các mô hình AI về máy. Có hai cách để thực hiện điều này:

Cách 1: Tải thông qua giao diện OpenWebUI

  • Truy cập mục "Models" (Mô hình)
  • Nhập tên mô hình theo định dạng model:version (ví dụ: deepseek-r1:8b)

Cách 2: Tải thông qua dòng lệnh (khuyến nghị)

Cách này giúp tránh việc quá trình tải bị gián đoạn nếu bạn vô tình đóng tab trình duyệt:

docker exec -it ollama ollama pull <tên_model>:<số_lượng_parameter>

Ví dụ với mô hình Deepseek-r1 8B:

docker exec -it ollama ollama pull deepseek-r1:8b

Danh sách các mô hình có thể tải về được liệt kê tại: https://ollama.com/search

Tính năng nổi bật của OpenWebUI

1. Quản lý người dùng

OpenWebUI cho phép bạn tạo và quản lý nhiều tài khoản người dùng:

  • Bước 1: Nhấp vào biểu tượng hồ sơ cá nhân
  • Bước 2: Chọn "Administration" (Quản trị)
  • Bước 3: Tại mục "Users" (Người dùng), bạn có thể thêm người dùng mới hoặc tạo nhóm người dùng

Lưu ý quan trọng: Việc thêm người dùng không tự động cấp quyền truy cập vào các mô hình.
Bạn cần vào phần "Settings" (Cài đặt) > "Models" (Mô hình) để cấp quyền truy cập cho người dùng hoặc nhóm người dùng.

2. Tích hợp với OpenAI API

Nếu bạn muốn sử dụng các mô hình của OpenAI song song với mô hình local:

  • Truy cập phần "Connections" (Kết nối)
  • Thêm OpenAI API key của bạn
  • Giờ đây bạn có thể sử dụng các mô hình của OpenAI với giao diện tương tự ChatGPT

3. Sử dụng Ollama API

Các bạn có thể sử dụng trực tiếp Ollama API để:

  • Gửi tin nhắn và nhận câu trả lời
  • Tích hợp vào quy trình làm việc tự động như n8n
  • Xử lý các tác vụ như phân tích dữ liệu, hỗ trợ viết bài, trả lời khách hàng...

Chi tiết cách sử dụng Ollama API tại đây

4. So sánh nhiều mô hình cùng lúc

Tính năng này cho phép bạn gửi cùng một câu hỏi đến nhiều mô hình khác nhau và nhận các câu trả lời đồng thời, giúp:

  • So sánh hiệu suất giữa các mô hình
  • Tìm ra mô hình phù hợp nhất cho nhu cầu cụ thể của bạn
  • Tối ưu hóa trải nghiệm sử dụng

5. Hỗ trợ đa ngôn ngữ

OpenWebUI hỗ trợ nhiều ngôn ngữ, bao gồm cả tiếng Việt 😃

6. Vector Database

Sau khi upload file lên thì tài liệu sẽ tự động được xử lý và chuyển đổi thành vector embeddings. Từ đó AI có thể dựa trên thông tin của bạn để trả lời.

Kết Luận

OpenWebUI kết hợp với Ollama mang đến một giải pháp AI chatbot local đầy đủ tính năng, bảo mật và linh hoạt. Tùy thuộc vào cấu hình phần cứng, bạn có thể chọn mô hình phù hợp với nhu cầu và khả năng của hệ thống.

Để vọc thêm về các tính năng và cập nhật mới nhất các bạn có thể truy cập tài liệu chính thức tại: https://docs.openwebui.com/

Chúc các bạn có một cuối tuần vui vẻ 😁


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí