1. Cài đặt Python 3.12 và Môi trường ảo (Virtual Environment)
Mục tiêu: Thiết lập phiên bản Python 3.12 mới nhất và tạo môi trường ảo (venv) để cô lập các thư viện Python cho dự án AI, tránh xung đột với các gói hệ thống.
Lý do: Ubuntu 24.04 mặc định có thể chưa cài sẵn Python 3.12 trong repository mặc định. Chúng ta cần thêm PPA (Personal Package Archive) của DeadSnakes để có phiên bản mới nhất, đồng thời sử dụng venv để đảm bảo tính ổn định của môi trường phát triển.
Thực hiện: Cập nhật repository, cài đặt công cụ build và Python 3.12.
sudo apt update && sudo apt install -y software-properties-common build-essential
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.12 python3.12-venv python3.12-dev
Kết quả mong đợi: Hệ thống báo "Successfully added repository" và cài đặt hoàn tất các gói python3.12 mà không có lỗi.
Thực hiện: Tạo thư mục dự án và khởi tạo môi trường ảo.
mkdir -p /opt/ai-project
cd /opt/ai-project
python3.12 -m venv venv
source venv/bin/activate
Kết quả mong đợi: Prompt terminal thay đổi, xuất hiện tiền tố `(venv)` trước đường dẫn hiện tại, ví dụ: `(venv) root@server:/opt/ai-project#`.
Thực hiện: Nâng cấp pip, setuptools và wheel trong môi trường ảo.
pip install --upgrade pip setuptools wheel
Kết quả mong đợi: Thông báo "Successfully installed" cho các gói đã nâng cấp.
2. Cài đặt LlamaIndex, pgvector connector và các gói Embedding
2.1. Cài đặt các thư viện cốt lõi
Mục tiêu: Cài đặt LlamaIndex, bộ kết nối PostgreSQL (pgvector) và thư viện để tạo vector embeddings.
Lý do: LlamaIndex là framework chính để xử lý dữ liệu RAG. Chúng ta cần `llama-index-llms` để kết nối với LLM, `llama-index-embeddings` để tạo vector, và `llama-index-storage` để lưu vào PostgreSQL pgvector.
Thực hiện: Cài đặt các gói LlamaIndex cần thiết. Lưu ý sử dụng `llama-index-llms` và `llama-index-embeddings` riêng biệt để dễ quản lý phiên bản.
pip install llama-index-core llama-index-llms-llama-cpp llama-index-embeddings-huggingface llama-index-storage-chat-store-postgres llama-index-storage-index-store-postgres llama-index-readers-file
Kết quả mong đợi: Quá trình cài đặt kéo dài vài phút, kết thúc bằng thông báo "Successfully installed" cho tất cả các gói.
2.2. Cài đặt thư viện PostgreSQL và Embedding Models
Mục tiêu: Cài đặt driver `psycopg2` để kết nối Python với PostgreSQL và `sentence-transformers` để tạo embeddings nhẹ, nhanh.
Lý do: LlamaIndex sử dụng `psycopg2` để giao tiếp với PostgreSQL. `sentence-transformers` là thư viện tiêu chuẩn để tải các model embedding (như all-MiniLM-L6-v2) chạy trên CPU/GPU mà không cần API key.
Thực hiện: Cài đặt các thư viện hỗ trợ kết nối và xử lý vector.
pip install psycopg2-binary sentence-transformers torch
Kết quả mong đợi: Cài đặt thành công, đặc biệt là `torch` (PyTorch) có thể nặng, cần đảm bảo internet ổn định.
3. Cấu hình biến môi trường (Environment Variables)
3.1. Tạo file cấu hình .env
Mục tiêu: Tạo file `.env` để lưu trữ thông tin kết nối Database và API Keys (nếu có) một cách an toàn.
Lý do: Không nên hardcode thông tin nhạy cảm (password, host) vào code. Sử dụng biến môi trường giúp dễ dàng chuyển đổi giữa môi trường Dev, Test và Prod.
Thực hiện: Tạo file `.env` tại thư mục gốc dự án `/opt/ai-project/.env`.
cat > /opt/ai-project/.env
Kết quả mong đợi: File `.env` được tạo thành công, chứa các biến cấu hình. Lưu ý: Bạn phải thay `your_secure_password` bằng mật khẩu thực tế của user postgres đã tạo trong Phần 2.
3.2. Cài đặt và nạp biến môi trường
Mục tiêu: Cài đặt thư viện `python-dotenv` để đọc file `.env` trong code Python và nạp các biến vào môi trường hiện tại.
Lý do: Thư viện `python-dotenv` giúp ứng dụng Python tự động đọc file `.env` mà không cần export thủ công từng biến trong shell.
Thực hiện: Cài đặt gói `python-dotenv` và nạp biến môi trường.
pip install python-dotenv
export $(cat /opt/ai-project/.env | grep -v '#' | xargs)
Kết quả mong đợi: Các biến môi trường (PGHOST, PGDATABASE...) đã được nạp vào shell hiện tại. Kiểm tra bằng lệnh `echo $PGDATABASE` sẽ trả về `ai_rag_db`.
4. Kiểm tra và Xác minh (Verification)
Mục tiêu: Chạy script kiểm tra nhanh để đảm bảo Python, các thư viện, kết nối Database và khả năng tạo Embedding đều hoạt động.
Lý do: Xác minh toàn bộ stack trước khi viết code nghiệp vụ, phát hiện sớm các lỗi thiếu package hoặc sai cấu hình kết nối.
Thực hiện: Tạo và chạy file `verify_setup.py`.
cat > /opt/ai-project/verify_setup.py
Kết quả mong đợi: Script chạy và in ra dòng cuối cùng: `*** ALL SYSTEMS CHECKED AND READY ***`. Nếu có lỗi, thông báo chi tiết sẽ xuất hiện ở bước bị lỗi (ví dụ: lỗi kết nối DB hoặc thiếu model).
Điều hướng series:
Mục lục: Series: Triển khai Database AI với pgvector, LlamaIndex và Ubuntu 24.04
« Phần 3: Triển khai extension pgvector cho PostgreSQL
Phần 5: Chuẩn bị dữ liệu và tạo Embeddings với LlamaIndex »