Tự Động Hóa Xử Lý PDF: Từ A Đến Z Với AWS Lambda, Docker và CircleCI
Lê Lân
1
Xây dựng Pipeline Tự Động Quản Lý Vector Database với AWS Lambda và CircleCI
Mở Đầu
Quản lý hiệu quả vector database là yếu tố then chốt trong các ứng dụng như tìm kiếm dựa trên độ tương đồng, hệ thống đề xuất AI và xử lý dữ liệu lớn. Tuy nhiên, với tốc độ tăng trưởng dữ liệu nhanh chóng, việc cập nhật embeddings thủ công trở nên tốn thời gian và dễ xảy ra lỗi.
Trong bài viết này, bạn sẽ được hướng dẫn chi tiết cách xây dựng một pipeline tự động hoàn chỉnh để xử lý và cập nhật vector database sử dụng AWS Lambda và CircleCI. Giải pháp bao gồm các bước: trích xuất văn bản từ các file PDF, tạo embeddings với OpenAI, lưu trữ trên Zilliz Cloud – một vector database được quản lý chuyên nghiệp. Bên cạnh đó, bạn sẽ thiết lập hạ tầng AWS (S3, ECR, Lambda) cũng như triển khai CI/CD để tự động hóa việc test và deploy.
Qua bài viết, bạn sẽ nắm bắt được cách quản lý vector database, xây dựng AWS Lambda function đóng gói bằng Docker, và vận hành pipeline CI/CD hiệu quả.
1. Chuẩn Bị và Tổ Chức Dự Án
1.1 Yêu Cầu Tiền Đề
Trước khi bắt đầu, bạn cần chuẩn bị:
Tài khoản AWS dùng cho Lambda, S3, ECR
AWS CLI đã được cài đặt và cấu hình
Kiến thức cơ bản về LangChain, database vector, AWS Lambda và Docker
Tài khoản GitHub và CircleCI để quản lý mã nguồn và tự động pipeline
OpenAI API Key để truy cập GPT models
Tài khoản Zilliz Cloud để quản lý vector database
Đảm bảo cấu hình biến môi trường chính xác trong file .env để tránh lỗi trong quá trình chạy pipeline.
1.2 Cấu Trúc Dự Án
Cấu trúc dự án được đề xuất gồm:
├── .circleci/
│ └── config.yml
├── data/
│ └── 1706.03762v7.pdf
├── src/
│ ├── create_collection.py
│ ├── drop_collection.py
│ ├── insert_documents.py
│ └── __init__.py
├── aws_lambda/
│ ├── __init__.py
│ └── lambda_function.py
├── scripts/
│ ├── build_deploy.sh
│ ├── create_roles.sh
│ ├── create_image.sh
│ └── create_lambda.sh
├── tests/
│ ├── test_collection_exists.py
│ ├── test_lambda_function.py
│ └── test_collection_mock.py
├── Dockerfile
└── pyproject.toml
Có tổ chức rõ ràng giúp dễ quản lý, test và triển khai.
1.3 Cài Đặt Dependencies với UV Package Manager
Sử dụng lệnh:
uv sync --all-extras
source .venv/bin/activate
Để cài đặt tất cả dependencies định nghĩa trong pyproject.toml và kích hoạt môi trường ảo.
2. Thiết Lập Vector Database với Zilliz Cloud
2.1 Đăng Ký và Thiết Lập Cluster
Đăng ký và tạo Cluster miễn phí trên Zilliz Cloud.
Lấy thông tin kết nối (URI và Token) từ phần cài đặt cluster.
2.2 Tạo Collection Lưu Embeddings
Tạo collection với schema tối ưu gồm:
Trường
Loại dữ liệu
Mục đích
id
INT64 (Primary)
Khóa chính tự tăng
pdf_text
VARCHAR
Lưu đoạn văn bản trích xuất
my_vector
FLOAT_VECTOR
Vector embeddings (dim=1536)
Ví dụ tạo schema và collection:
defcreate_schema(dimension: int = 1536) -> MilvusClient.create_schema:
Chú ý: Luôn đặt biến môi trường ZILLIZ_CLOUD_URI, ZILLIZ_TOKEN và COLLECTION_NAME để script hoạt động chính xác.
3. Xây Dựng Pipeline Xử Lý PDF và Tạo Embeddings
3.1 Trích Xuất Văn Bản Từ PDF
Sử dụng PyPDFLoader từ LangChain để trích xuất văn bản, sau đó tách thành các đoạn nhỏ (chunk) bằng CharacterTextSplitter nhằm đảm bảo chất lượng embeddings.
3.2 Tạo Embeddings Bằng OpenAI
Dùng OpenAIEmbeddings khởi tạo vector embeddings cho từng đoạn văn bản.
3.3 Lưu Trữ Dữ Liệu Vào Vector Database
Dữ liệu được chèn vào collection Zilliz Cloud bằng MilvusClient.
assert os.getenv("COLLECTION_NAME") in collections
Chạy test:
uv run pytest
5.2 Kiểm Tra Mã Nguồn Với Ruff & MyPy
Ruff giúp kiểm tra style code, MyPy kiểm tra tính an toàn kiểu dữ liệu.
uv run ruff check . --fix --exit-non-zero-on-fix
uv run mypy
6. Triển Khai CI/CD Với CircleCI
6.1 Thiết Lập Config File
Tạo file .circleci/config.yml với các job:
Cài đặt môi trường
Chạy lint, type check, test
Build Docker image và deploy Lambda function
6.2 Script Tự Động Chạy Toàn Bộ
Sử dụng build_deploy.sh để gọi tuần tự các script tạo role, tạo image, tạo/ cập nhật Lambda
uv run scripts/build_deploy.sh
6.3 Kích Hoạt Pipeline CircleCI
Push code lên GitHub
Kết nối repository vào CircleCI
Cấu hình biến môi trường trong CircleCI Project Settings
Khởi chạy pipeline tự động
7. Vệ Sinh và Dọn Dẹp Tài Nguyên
Sau khi không cần dùng nữa, hãy xóa các tài nguyên như Lambda functions, S3 buckets, IAM roles, ECR repositories để tránh phát sinh chi phí không mong muốn.
Kết Luận
Bài hướng dẫn đã giúp bạn:
Hiểu cách thiết kế và triển khai pipeline tự động quản lý vector database trên cloud.
Tích hợp công nghệ AWS Lambda, Docker, CircleCI cùng OpenAI và Zilliz Cloud hiệu quả.
Áp dụng quản lý mã nguồn, kiểm thử, và deploy tự động giúp nâng cao hiệu quả phát triển và vận hành.
Hệ thống được xây dựng có thể mở rộng, dễ bảo trì và nâng cao chất lượng dữ liệu phục vụ cho các ứng dụng sử dụng vector embeddings hiện đại.
Hãy thử nghiệm và triển khai pipeline này trong các dự án AI và xử lý dữ liệu lớn của bạn để phát huy sức mạnh của tự động hóavà serverless architecture!