ਤੁਹਾਨੂੰ LLM ਕਾਲਾਂ ਦੌਰਾਨ DB ਕਨੈਕਸ਼ਨ ਕਿਉਂ ਨਹੀਂ ਰੱਖਣੇ ਚਾਹੀਦੇ
AI latency ਸਿਰਫ਼ ਉਹ ਸਮਾਂ ਨਹੀਂ ਹੈ ਜੋ ਮਾਡਲ ਸੋਚਣ ਵਿੱਚ ਬਿਤਾਉਂਦਾ ਹੈ। ਇਸ ਵਿੱਚ ਇਹ ਵੀ ਸ਼ਾਮਲ ਹੈ ਕਿ ਤੁਸੀਂ ਡਾਟਾਬੇਸ ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਬੰਧਿਤ ਕਰਦੇ ਹੋ।
LLM ਜਾਂ embedding API ਦੀ ਉਡੀਕ ਕਰਦੇ ਸਮੇਂ DB ਕਨੈਕਸ਼ਨ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣਾ ਤੁਹਾਡੇ connection pool ਨੂੰ ਖਤਮ ਕਰ ਸਕਦਾ ਹੈ। ਹੌਲੀ ਬਾਹਰੀ ਕਾਲਾਂ (external calls) ਸੈਸ਼ਨਾਂ ਨੂੰ ਲੋੜ ਤੋਂ ਕਿਤੇ ਜ਼ਿਆਦਾ ਸਮੇਂ ਲਈ ਖੁੱਲ੍ਹਾ ਰੱਖਦੀਆਂ ਹਨ।
ਮੈਂ ਉਨ੍ਹਾਂ ਦੇ ਹੱਲ (fix) ਨੂੰ ਦੇਖਣ ਲਈ Honcho repo ਦੀ ਜਾਂਚ ਕੀਤੀ। ਉਨ੍ਹਾਂ ਨੇ ਇੱਕ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਚੱਲਣ ਵਾਲੇ ਸਿੰਗਲ ਸੈਸ਼ਨ ਦੀ ਜਗ੍ਹਾ ਛੋਟੇ, ਕੰਮ-ਵਿਸ਼ੇਸ਼ (task-specific) ਸੈਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ।
ਪੁਰਾਣਾ ਪੈਟਰਨ
- DB ਸੈਸ਼ਨ ਖੋਲ੍ਹੋ
- ਯੂਜ਼ਰ ਸੈਟਿੰਗਾਂ ਪੜ੍ਹੋ
- LLM ਨੂੰ ਕਾਲ ਕਰੋ (ਹੌਲੀ)
- Embedding API ਨੂੰ ਕਾਲ ਕਰੋ (ਹੌਲੀ)
- ਨਤੀਜੇ ਸੇਵ ਕਰੋ
- DB ਸੈਸ਼ਨ ਬੰਦ ਕਰੋ
ਨਵਾਂ ਪੈਟਰਨ
- Pre-flight ਚੈੱਕਾਂ ਲਈ DB ਸੈਸ਼ਨ ਖੋਲ੍ਹੋ
- ਲੋੜੀਂਦੀਆਂ ਵੈਲਯੂਜ਼ ਨੂੰ ਵੇਰੀਏਬਲਜ਼ (variables) ਵਿੱਚ ਪੜ੍ਹੋ
- DB ਸੈਸ਼ਨ ਬੰਦ ਕਰੋ
- LLM ਅਤੇ Embedding APIs ਨੂੰ ਕਾਲ ਕਰੋ (ਕੋਈ DB ਕਨੈਕਸ਼ਨ ਬਰਕਰਾਰ ਨਹੀਂ ਰੱਖਿਆ ਗਿਆ)
- ਨਤੀਜੇ ਸੇਵ ਕਰਨ ਲਈ ਇੱਕ ਨਵਾਂ, ਛੋਟਾ DB ਸੈਸ਼ਨ ਖੋਲ੍ਹੋ
- DB ਸੈਸ਼ਨ ਬੰਦ ਕਰੋ
ਇਸਦਾ ਮਕਸਦ ਡਾਟਾਬੇਸ ਨੂੰ ਛੱਡਣਾ ਨਹੀਂ ਹੈ; ਇਸਦਾ ਮਕਸਦ transaction consistency ਨੂੰ ਨੈੱਟਵਰਕ ਦੀ ਉਡੀਕ ਤੋਂ ਵੱਖ ਰੱਖਣਾ ਹੈ।
ਆਪਣੇ ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ ਪੰਜ ਕਦਮ
- ਆਪਣੀਆਂ consistency boundaries ਨਿਰਧਾਰਤ ਕਰੋ।
- ਕਿਸੇ ਵੀ ਬਾਹਰੀ API ਕਾਲ ਤੋਂ ਪਹਿਲਾਂ ਸਾਰੀਆਂ ਲੋੜੀਂਦੀਆਂ ਵੈਲਯੂਜ਼ ਨੂੰ ਵੇਰੀਏਬਲਜ਼ ਵਿੱਚ ਲਓ।
- ਡਾਟਾਬੇਸ scope ਨੂੰ ਬੰਦ ਕਰੋ।
- ਹੌਲੀ ਬਾਹਰੀ ਕੰਮ (external tasks) ਕਰੋ।
- ਅੰਤਿਮ ਨਤੀਜਿਆਂ ਨੂੰ ਸੇਵ ਕਰਨ ਲਈ ਇੱਕ ਨਵਾਂ, ਛੋਟਾ write scope ਖੋਲ੍ਹੋ।
ਨੋਟ: ਜੇਕਰ ਤੁਸੀਂ pgvector ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਸਰਚ ਡਾਟਾਬੇਸ ਦੇ ਅੰਦਰ ਚੱਲਦੀ ਹੈ, ਇਸ ਲਈ ਤੁਹਾਨੂੰ ਉਸ ਆਪਰੇਸ਼ਨ ਦੌਰਾਨ ਸੈਸ਼ਨ ਨੂੰ ਖੁੱਲ੍ਹਾ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ।
ਸੈਸ਼ਨ ਦੀ ਮਿਆਦ ਘਟਾਉਣ ਨਾਲ scaling ਵਿੱਚ ਸੁਧਾਰ ਹੁੰਦਾ ਹੈ, ਪਰ ਆਪਣੇ ORM ਵਿੱਚ detached-object ਗਲਤੀਆਂ (errors) ਦਾ ਧਿਆਨ ਰੱਖੋ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਡਾਟਾ transaction snapshots ਵਿੱਚ consistent ਰਹੇ।
ਸਰੋਤ: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg
ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi
