Mengapa Anda Tidak Patut Mengekalkan Sambungan DB Semasa Panggilan LLM
Latensi AI bukan sekadar masa yang digunakan oleh model untuk berfikir. Ia juga merangkumi cara anda menguruskan sambungan pangkalan data.
Mengekalkan sambungan DB semasa menunggu LLM atau API embedding boleh menghabiskan kolam sambungan (connection pool) anda. Panggilan luaran yang perlahan menyebabkan sesi kekal terbuka jauh lebih lama daripada yang diperlukan.
Saya meneliti repositori Honcho untuk melihat penyelesaian mereka. Mereka menggantikan sesi tunggal yang berjangka panjang dengan sesi pendek yang khusus untuk tugasan tertentu.
Corak Lama
- Buka sesi DB
- Baca tetapan pengguna
- Panggil LLM (perlahan)
- Panggil API Embedding (perlahan)
- Simpan hasil
- Tutup sesi DB
Corak Baharu
- Buka sesi DB untuk semakan pra-penerbangan (pre-flight checks)
- Baca nilai yang diperlukan ke dalam pemboleh ubah
- Tutup sesi DB
- Panggil API LLM dan Embedding (tiada sambungan DB dipegang)
- Buka sesi DB baharu yang pendek untuk menyimpan hasil
- Tutup sesi DB
Matlamatnya bukan untuk meninggalkan pangkalan data; sebaliknya untuk memastikan ketekalan transaksi (transaction consistency) terpisah daripada masa menunggu rangkaian.
Lima langkah untuk menguruskan sambungan anda
- Tentukan sempadan ketekalan anda.
- Ambil semua nilai yang diperlukan ke dalam pemboleh ubah sebelum sebarang panggilan API luaran.
- Tutup skop pangkalan data.
- Laksanakan tugasan luaran yang perlahan.
- Buka skop penulisan baharu yang pendek untuk mengekalkan hasil akhir.
Nota: Jika anda menggunakan pgvector, carian dijalankan di dalam pangkalan data, jadi anda mesti mengekalkan sesi terbuka semasa operasi tersebut.
Memendekkan jangka hayat sesi meningkatkan penskalaan (scaling), tetapi berhati-hati dengan ralat objek terpisah (detached-object errors) dalam ORM anda dan sahkan bahawa data kekal tekal merentasi snapshot transaksi.
Source: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg
Optional learning community: https://t.me/GyaanSetuAi
