1. Yêu cầu phần cứng và chuẩn bị môi trường Ubuntu 24.04
Yêu cầu cấu hình tối thiểu
Để đảm bảo PostgreSQL hoạt động mượt mà và LlamaIndex có đủ tài nguyên để xử lý vector embeddings, server cần đáp ứng các thông số sau:
- CPU: Tối thiểu 2 vCPU (khuyến nghị 4 vCPU trở lên cho các tác vụ nặng).
- RAM: Tối thiểu 4GB (PostgreSQL cần RAM cho shared_buffers, LlamaIndex cần RAM cho loading model).
- Disk: Tối thiểu 50GB SSD (HDD không được khuyến khích do I/O latency cao ảnh hưởng trực tiếp đến tốc độ query vector).
- OS: Ubuntu 24.04 LTS (Server hoặc Desktop đều được, ưu tiên Server để giảm overhead).
Cài đặt và cập nhật Ubuntu 24.04
Bước đầu tiên là đảm bảo hệ điều hành đã được cập nhật lên phiên bản mới nhất và cài đặt các gói công cụ cơ bản cần thiết cho việc quản lý server.
Chạy lệnh cập nhật repository và nâng cấp các gói phần mềm đã cài đặt:
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Hệ thống báo cáo "All packages are up to date" hoặc hoàn thành việc cài đặt các bản vá mới.
Cài đặt các công cụ hỗ trợ mạng và quản lý gói (build-essential, curl, git, vim, nano):
sudo apt install -y build-essential curl git vim net-tools
Kết quả mong đợi: Các gói phần mềm được cài đặt thành công, không có lỗi (Error) trong quá trình.
Verify kết quả phần 1
Để xác nhận môi trường đã sẵn sàng, kiểm tra phiên bản Ubuntu và các công cụ đã cài:
cat /etc/os-release && curl --version | head -n 1 && git --version
Kết quả mong đợi: Xuất hiện dòng "Ubuntu 24.04" và phiên bản của curl, git tương ứng.
2. Cài đặt và khởi động dịch vụ PostgreSQL
Cài đặt PostgreSQL từ repository chính thức
Ubuntu 24.04 mặc định cung cấp PostgreSQL 16 trong kho lưu trữ chính thức. Đây là phiên bản mới nhất, hỗ trợ tốt các tính năng cần thiết cho vector search.
Cài đặt gói PostgreSQL chính và các công cụ quản lý đi kèm:
sudo apt install -y postgresql postgresql-contrib
Kết quả mong đợi: Quá trình cài đặt hoàn tất, dịch vụ PostgreSQL tự động được khởi động.
Kiểm tra trạng thái dịch vụ
Đảm bảo dịch vụ PostgreSQL đang chạy và được cấu hình để tự động khởi động khi server reboot.
Chạy lệnh kiểm tra trạng thái và enable tự động khởi động:
sudo systemctl status postgresql && sudo systemctl enable postgresql
Kết quả mong đợi: Dòng "active (running)" xuất hiện trong output của status, và "enabled" xuất hiện trong output của enable.
Verify kết quả phần 2
Chạy lệnh kiểm tra cổng mặc định (5432) xem đã lắng nghe (listening) chưa:
sudo netstat -tulpn | grep postgres
Kết quả mong đợi: Xuất hiện dòng có PORT 5432 với trạng thái LISTEN.
3. Cấu hình quyền truy cập và tạo Database mẫu
Chuyển sang user postgres để quản lý
Trên Ubuntu, PostgreSQL sử dụng cơ chế "Peer Authentication" mặc định cho user local. Điều này cho phép user Linux "postgres" truy cập vào database mà không cần mật khẩu.
Chuyển sang user postgres để thực thi các lệnh SQL:
sudo -i -u postgres
Kết quả mong đợi: Prompt dòng lệnh thay đổi từ `user@host` thành `postgres@host`.
Tạo Database và User riêng cho dự án AI
Không nên sử dụng database mặc định (postgres) cho ứng dụng. Chúng ta sẽ tạo một database mới tên là `ai_db` và một user mới tên là `ai_user` với quyền truy cập đầy đủ.
Truy cập vào shell của PostgreSQL (psql):
psql
Kết quả mong đợi: Prompt thay đổi thành `postgres=#`, sẵn sàng nhận lệnh SQL.
Thực thi lệnh tạo database và user (thay thế `YourStrongPassword` bằng mật khẩu thực tế của bạn):
CREATE DATABASE ai_db; CREATE USER ai_user WITH PASSWORD 'YourStrongPassword'; GRANT ALL PRIVILEGES ON DATABASE ai_db TO ai_user;
Kết quả mong đợi: Xuất hiện thông báo `CREATE DATABASE`, `CREATE ROLE`, `GRANT`.
Thoát khỏi shell psql:
\q
Kết quả mong đợi: Trả về prompt user `postgres@host`.
Cấu hình file pg_hba.conf để cho phép kết nối từ xa (Optional)
Để LlamaIndex (chạy trên Python) có thể kết nối tới PostgreSQL từ cùng một máy hoặc máy khác, chúng ta cần cấu hình file xác thực. Mặc định chỉ cho phép kết nối Unix socket. Nếu bạn muốn kết nối qua TCP/IP (localhost 127.0.0.1), cần chỉnh sửa file cấu hình.
Chỉnh sửa file `/etc/postgresql/16/main/pg_hba.conf`. Thêm dòng sau vào cuối file (trước dòng `local replication ...`):
host all all 127.0.0.1/32 md5
Kết quả mong đợi: File được lưu thành công. Dòng này cho phép kết nối từ IP 127.0.0.1 bằng cách yêu cầu mật khẩu (md5).
Tái khởi động dịch vụ để áp dụng cấu hình
Thay đổi trong `pg_hba.conf` cần restart dịch vụ để có hiệu lực.
sudo systemctl restart postgresql
Kết quả mong đợi: Dịch vụ khởi động lại thành công.
Verify kết quả phần 3
Thử kết nối vào database mới vừa tạo bằng user mới và mật khẩu đã đặt:
PGPASSWORD='YourStrongPassword' psql -h 127.0.0.1 -U ai_user -d ai_db -c "SELECT version();"
Kết quả mong đợi: Xuất hiện bảng hiển thị phiên bản PostgreSQL (ví dụ: "PostgreSQL 16.x..."). Nếu thấy lỗi "FATAL: password authentication failed", hãy kiểm tra lại mật khẩu hoặc file `pg_hba.conf`.
Thoát khỏi user postgres để quay lại user quản trị viên gốc:
exit
Kết quả mong đợi: Prompt trở lại dạng `user@host` ban đầu.
Điều hướng series:
Mục lục: Series: Triển khai Database AI với LlamaIndex và PostgreSQL trên Ubuntu 24.04
Phần 2: Cấu hình PostgreSQL cho vector search với pgvector »