Tại sao bạn không nên giữ kết nối DB trong khi gọi LLM

Độ trễ của AI không chỉ là thời gian mô hình dành để suy nghĩ. Nó còn bao gồm cả cách bạn quản lý các kết nối cơ sở dữ liệu.

Việc giữ kết nối DB trong khi chờ đợi LLM hoặc API embedding có thể làm cạn kiệt connection pool của bạn. Các cuộc gọi bên ngoài chậm chạp sẽ khiến các session mở lâu hơn mức cần thiết.

Tôi đã tìm hiểu repo của Honcho để xem cách họ khắc phục. Họ đã thay thế một session duy nhất, tồn tại lâu bằng các session ngắn, dành riêng cho từng tác vụ cụ thể.

Mô hình cũ

  • Mở DB session
  • Đọc cài đặt người dùng
  • Gọi LLM (chậm)
  • Gọi Embedding API (chậm)
  • Lưu kết quả
  • Đóng DB session

Mô hình mới

  • Mở DB session để kiểm tra trước (pre-flight checks)
  • Đọc các giá trị cần thiết vào biến
  • Đóng DB session
  • Gọi LLM và Embedding APIs (không giữ kết nối DB)
  • Mở một DB session mới, ngắn để lưu kết quả
  • Đóng DB session

Mục tiêu không phải là từ bỏ cơ sở dữ liệu; mà là tách biệt tính nhất quán của giao dịch (transaction consistency) khỏi việc chờ đợi mạng.

Năm bước để quản lý các kết nối của bạn

  1. Xác định ranh giới nhất quán của bạn.
  2. Đưa tất cả các giá trị cần thiết vào biến trước khi thực hiện bất kỳ cuộc gọi API bên ngoài nào.
  3. Đóng phạm vi (scope) cơ sở dữ liệu.
  4. Thực hiện các tác vụ bên ngoài chậm chạp.
  5. Mở một phạm vi ghi mới, ngắn để lưu trữ các kết quả cuối cùng.

Lưu ý: Nếu bạn sử dụng pgvector, việc tìm kiếm sẽ chạy bên trong cơ sở dữ liệu, vì vậy bạn phải giữ session mở trong suốt quá trình đó.

Việc rút ngắn vòng đời của session giúp cải thiện khả năng mở rộng, nhưng hãy chú ý đến các lỗi detached-object trong ORM của bạn và xác minh rằng dữ liệu vẫn nhất quán qua các transaction snapshots.

Source: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg

Optional learning community: https://t.me/GyaanSetuAi