LLM ಕರೆಗಳ ಸಮಯದಲ್ಲಿ ನೀವು ಏಕೆ DB ಕನೆಕ್ಷನ್ಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಬಾರದು
AI ವಿಳಂಬವು (latency) ಕೇವಲ ಮಾಡೆಲ್ ಯೋಚಿಸಲು ತೆಗೆದುಕೊಳ್ಳುವ ಸಮಯವಲ್ಲ. ಇದು ನೀವು ಡೇಟಾಬೇಸ್ ಕನೆಕ್ಷನ್ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತೀರಿ ಎಂಬುದನ್ನೂ ಒಳಗೊಂಡಿರುತ್ತದೆ.
LLM ಅಥವಾ ಎಂಬೆಡ್ಡಿಂಗ್ API ಗಾಗಿ ಕಾಯುವಾಗ DB ಕನೆಕ್ಷನ್ ಅನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದು ನಿಮ್ಮ ಕನೆಕ್ಷನ್ ಪೂಲ್ ಅನ್ನು ಖಾಲಿ ಮಾಡಬಹುದು. ನಿಧಾನಗತಿಯ ಬಾಹ್ಯ ಕರೆಗಳು (external calls) ಸೆಷನ್ಗಳನ್ನು ಅಗತ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಮಯದವರೆಗೆ ತೆರೆದಿಡುತ್ತವೆ.
ಅವರ ಪರಿಹಾರವನ್ನು ನೋಡಲು ನಾನು Honcho ರೆಪೊ (repo) ಅನ್ನು ಪರಿಶೀಲಿಸಿದೆ. ಅವರು ಒಂದೇ, ದೀರ್ಘಕಾಲದ ಸೆಷನ್ ಬದಲಿಗೆ ಸಣ್ಣ, ಕಾರ್ಯ-ನಿರ್ದಿಷ್ಟ ಸೆಷನ್ಗಳನ್ನು ಬಳಸಲು ಬದಲಾಯಿಸಿದ್ದಾರೆ.
ಹಳೆಯ ಮಾದರಿ
- DB ಸೆಷನ್ ತೆರೆಯಿರಿ
- ಬಳಕೆದಾರರ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಓದಿ
- LLM ಅನ್ನು ಕರೆಯಿರಿ (ನಿಧಾನ)
- ಎಂಬೆಡ್ಡಿಂಗ್ API ಅನ್ನು ಕರೆಯಿರಿ (ನಿಧಾನ)
- ಫಲಿತಾಂಶಗಳನ್ನು ಉಳಿಸಿ
- DB ಸೆಷನ್ ಮುಚ್ಚಿ
ಹೊಸ ಮಾದರಿ
- ಪೂರ್ವ-ಪರಿಶೀಲನೆಗಳಿಗಾಗಿ (pre-flight checks) DB ಸೆಷನ್ ತೆರೆಯಿರಿ
- ಅಗತ್ಯವಿರುವ ಮೌಲ್ಯಗಳನ್ನು ವೇರಿಯೇಬಲ್ಗಳಿಗೆ ಓದಿ
- DB ಸೆಷನ್ ಮುಚ್ಚಿ
- LLM ಮತ್ತು ಎಂಬೆಡ್ಡಿಂಗ್ API ಗಳನ್ನು ಕರೆಯಿರಿ (ಯಾವುದೇ DB ಕನೆಕ್ಷನ್ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಬೇಡಿ)
- ಫಲಿತಾಂಶಗಳನ್ನು ಉಳಿಸಲು ಹೊಸ, ಸಣ್ಣ DB ಸೆಷನ್ ತೆರೆಯಿರಿ
- DB ಸೆಷನ್ ಮುಚ್ಚಿ
ಇದರ ಉದ್ದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಕೈಬಿಡುವುದಲ್ಲ; ಬದಲಾಗಿ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಸ್ಥಿರತೆಯನ್ನು (transaction consistency) ನೆಟ್ವರ್ಕ್ ಕಾಯುವಿಕೆಯಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿಡುವುದು.
ನಿಮ್ಮ ಕನೆಕ್ಷನ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಐದು ಹಂತಗಳು
- ನಿಮ್ಮ ಸ್ಥಿರತೆಯ ಮಿತಿಗಳನ್ನು (consistency boundaries) ವ್ಯಾಖ್ಯಾನಿಸಿ.
- ಯಾವುದೇ ಬಾಹ್ಯ API ಕರೆಯುವ ಮೊದಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಮೌಲ್ಯಗಳನ್ನು ವೇರಿಯೇಬಲ್ಗಳಿಗೆ ತನ್ನಿ.
- ಡೇಟಾಬೇಸ್ ಸ್ಕೋಪ್ ಅನ್ನು ಮುಚ್ಚಿ.
- ನಿಧಾನಗತಿಯ ಬಾಹ್ಯ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಿ.
- ಅಂತಿಮ ಫಲಿತಾಂಶಗಳನ್ನು ಉಳಿಸಲು ಹೊಸ, ಸಣ್ಣ ಬರವಣಿಗೆ ಸ್ಕೋಪ್ (write scope) ಅನ್ನು ತೆರೆಯಿರಿ.
ಗಮನಿಸಿ: ನೀವು pgvector ಬಳಸುತ್ತಿದ್ದರೆ, ಹುಡುಕಾಟವು ಡೇಟಾಬೇಸ್ನ ಒಳಗಡೆಯೇ ನಡೆಯುತ್ತದೆ, ಆದ್ದರಿಂದ ಆ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ ನೀವು ಸೆಷನ್ ಅನ್ನು ತೆರೆದಿಡಲೇಬೇಕು.
ಸೆಷನ್ ಅವಧಿಯನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು ಸ್ಕೇಲಿಂಗ್ ಅನ್ನು ಸುಧಾರಿಸುತ್ತದೆ, ಆದರೆ ನಿಮ್ಮ ORM ನಲ್ಲಿ detached-object ದೋಷಗಳ ಬಗ್ಗೆ ಎಚ್ಚರವಿರಲಿ ಮತ್ತು ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಸ್ನ್ಯಾಪ್ಶಾಟ್ಗಳಾದ್ಯಂತ ಡೇಟಾ ಸ್ಥಿರವಾಗಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
Source: https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg
Optional learning community: https://t.me/GyaanSetuAi
