1. Chuẩn bị và cấu hình chỉ mục (Index) trong VectorDB
Trước khi nạp dữ liệu, ta phải cấu hình chỉ mục tìm kiếm để tối ưu hóa tốc độ truy vấn trên Kubernetes. Ở đây ta dùng Milvus với cấu hình Index HNSW cho vector embedding.
Mục đích: Thiết lập cấu trúc dữ liệu và chỉ mục phù hợp để tìm kiếm vector nhanh hơn (sub-millisecond) thay vì quét toàn bộ (linear scan).
Kết quả mong đợi: Collection được tạo thành công với schema chứa trường vector và metadata, index được build xong.
Truy cập vào container Milvus hoặc chạy script từ client để cấu hình collection.
# Chạy script cấu hình index từ terminal trong môi trường Kubernetes (thông qua pod shell hoặc service expose)
# Giả sử bạn đã có Python environment cài sẵn milvus-sdk-python
python -
Kết quả: Terminal in ra "Collection và Index đã được tạo thành công." và không báo lỗi kết nối.
2. Script Python để upload batch dữ liệu vào VectorDB
Viết script Python để đọc file JSON chứa dữ liệu đã chuẩn hóa (từ Phần 3) và upload theo batch vào VectorDB. Batch size giúp giảm overhead mạng và tăng thông lượng.
Mục đích: Chuyển đổi hàng loạt văn bản thành vector và lưu trữ vào Milvus mà không gây quá tải RAM hay CPU.
Kết quả mong đợi: Toàn bộ dữ liệu từ file nguồn được nạp vào collection, số lượng entity tăng lên đúng như dự kiến.
Tạo file script `upload_data.py` tại đường dẫn `/app/scripts/upload_data.py` với nội dung hoàn chỉnh sau:
cat > /app/scripts/upload_data.py
Chạy script này từ container đã mount volume chứa dữ liệu hoặc từ laptop kết nối vào cluster:
python /app/scripts/upload_data.py
Kết quả: Progress bar chạy lên 100% và thông báo "Collection đã được load vào bộ nhớ."
3. Kiểm tra truy vấn (Query) và xác minh kết quả
Thực hiện truy vấn vector mẫu để kiểm tra khả năng tìm kiếm tương tự (Similarity Search). Đây là bước quan trọng để đảm bảo RAG hoạt động đúng.
Mục đích: Xác minh xem Milvus có trả về các tài liệu liên quan nhất dựa trên vector query không, và điểm số (score) có hợp lý không.
Kết quả mong đợi: Trả về danh sách các đoạn văn bản (top-k) có độ tương đồng cao nhất với câu hỏi mẫu.
Tạo file script `test_query.py` tại đường dẫn `/app/scripts/test_query.py`:
cat > /app/scripts/test_query.py
Chạy script test:
python /app/scripts/test_query.py
Kết quả: Xuất hiện danh sách 5 bản ghi với điểm số (score) gần 1.0 (nếu dữ liệu trùng khớp cao) hoặc phân bố hợp lý, kèm theo nội dung văn bản (text) và metadata.
4. Xác minh cuối cùng qua Console Milvus
Sử dụng giao diện quản lý hoặc command line để đếm số lượng dữ liệu thực tế trong collection, đảm bảo không bị mất mát trong quá trình upload.
Mục đích: Kiểm chứng số lượng entity (row count) khớp với file nguồn.
Kết quả mong đợi: Số lượng entity trả về bằng hoặc lớn hơn số dòng trong file dữ liệu gốc.
Chạy lệnh kiểm tra nhanh:
python -
Kết quả: In ra số lượng entities (num_entities) chính xác bằng số bản ghi đã upload.
Điều hướng series:
Mục lục: Series: Xây dựng nền tảng Private LLM với vLLM, RAG và VectorDB trên hạ tầng Kubernetes
« Phần 3: Xây dựng và tối ưu hóa dữ liệu nguồn cho RAG
Phần 5: Triển khai vLLM server trên Kubernetes với GPU support »