ನಾನು RAG ಬಳಸಿ ಕೋಡ್ Q&A ಬಾಟ್ ನಿರ್ಮಿಸಿದೆ: ಯಾವುದು ಕೆಲಸ ಮಾಡಿತು ಮತ್ತು ಯಾವುದು ವಿಫಲವಾಯಿತು
ನಮ್ಮ ಮೈಕ್ರೋಸರ್ವಿಸೆಗಳನ್ನು (microservices) ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನಮ್ಮ ಡೆವಲಪರ್ಗಳು Slack ಮತ್ತು ಹಳೆಯ ದಾಖಲೆಗಳಲ್ಲಿ (docs) ದಿನಗಟ್ಟಲೆ ಹುಡುಕುತ್ತಿದ್ದರು. ಈ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸಲು RAG ಬಳಸಿ ಚಾಟ್ಬಾಟ್ ನಿರ್ಮಿಸಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ.
ಈ ಹಾದಿಯಲ್ಲಿ ನಾನು ಅನೇಕ ತಪ್ಪುಗಳನ್ನು ಮಾಡಿದೆ. ನಾನು ಕಲಿತ ವಿಷಯಗಳು ಇಲ್ಲಿವೆ.
ವಿಫಲತೆಗಳು
- ಎಲ್ಲಾ ದಾಖಲೆಗಳನ್ನು ಒಂದೇ ಪ್ರಾಂಪ್ಟ್ನಲ್ಲಿ (prompt) ಹಾಕಲು ಪ್ರಯತ್ನಿಸಿದೆ. ಇದು ಟೋಕನ್ ಮಿತಿಗಳನ್ನು ತಲುಪಿತು, ಹ್ಯಾಲ್ಯುಸಿನೇಷನ್ಗಳಿಗೆ (hallucinations) ಕಾರಣವಾಯಿತು ಮತ್ತು ಹೆಚ್ಚು ಹಣ ವ್ಯಯವಾಯಿತು.
- ನಾನು ಮೂಲಭೂತ TF-IDF ಇಂಡೆಕ್ಸ್ ಬಳಸಿದೆ. ಬಳಕೆದಾರರು ಸಮಾನಾರ್ಥಕ ಪದಗಳನ್ನು ಅಥವಾ ವಿಭಿನ್ನ ಪದಗಳನ್ನು ಬಳಸಿದಾಗ ಇದು ವಿಫಲವಾಯಿತು.
- ನಾನು ಸರಳವಾದ 500-ಅಕ್ಷರಗಳ ಚಂಕ್ಗಳನ್ನು (chunks) ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದೆ. ಚಂಕ್ಗಳು ಹೆಚ್ಚಾಗಿ ವಾಕ್ಯದ ಮಧ್ಯದಲ್ಲಿ ಕತ್ತರಿಸಲ್ಪಡುವುದರಿಂದ ಫಲಿತಾಂಶಗಳು ಅನಿಶ್ಚಿತವಾಗಿದ್ದವು.
ಪರಿಹಾರ
ನಾನು LLM ಅನ್ನು ಸರ್ಚ್ ಎಂಜಿನ್ ಆಗಿ ಪರಿಗಣಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ. ಅದನ್ನು ಮೀಸಲಾದ ಸರ್ಚ್ ಇಂಡೆಕ್ಸ್ಗಾಗಿ ಒಂದು ರೀಡಿಂಗ್ ಎಂಜಿನ್ ಆಗಿ ಬದಲಾಯಿಸಿದೆ.
ಕೆಲಸ ಮಾಡಿದ ಪೈಪ್ಲೈನ್ ಇಲ್ಲಿದೆ:
- ದಾಖಲೆಗಳನ್ನು 50-ಟೋಕನ್ ಓವರ್ಲ್ಯಾಪ್ನೊಂದಿಗೆ 300-ಟೋಕನ್ ತುಣುಕುಗಳಾಗಿ (chunks) ವಿಂಗಡಿಸಿ.
- ಪ್ರತಿ ಚಂಕ್ ಅನ್ನು ವೆಕ್ಟರ್ ಆಗಿ ಎಂಬೆಡ್ (embed) ಮಾಡಿ.
- ವೆಕ್ಟರ್ಗಳನ್ನು ಸಿಮಿಲಾರಿಟಿ ಸರ್ಚ್ ಇಂಡೆಕ್ಸ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ.
- ಕ್ವೇರಿ ಮಾಡುವ ಸಮಯದಲ್ಲಿ, ಅತ್ಯಂತ ಹೆಚ್ಚು ಸಾಮ್ಯತೆ ಹೊಂದಿರುವ ಟಾಪ್ 5 ಚಂಕ್ಗಳನ್ನು ಹುಡುಕಿ.
- ಉತ್ತರವನ್ನು ತಯಾರಿಸಲು ಆ ಚಂಕ್ಗಳನ್ನು ಮಾತ್ರ LLM ಗೆ ನೀಡಿ.
ಈ ಬದಲಾವಣೆಯು ಹ್ಯಾಲ್ಯುಸಿನೇಷನ್ಗಳನ್ನು 80% ಕಡಿಮೆ ಮಾಡಿತು ಮತ್ತು ಪ್ರತಿ ಕ್ವೇರಿ ವೆಚ್ಚವನ್ನು $0.01 ಕ್ಕಿಂತ ಕಡಿಮೆ ಮಾಡಿತು.
ಪ್ರಮುಖ ಅಂಶಗಳು
- ಚಂಕ್ ಗಾತ್ರವು ಬಹಳ ಮುಖ್ಯ. 150 ಟೋಕನ್ಗಳು ಅತಿ ಕಡಿಮೆ ಸಂದರ್ಭವನ್ನು (context) ನೀಡುತ್ತವೆ. 1000 ಟೋಕನ್ಗಳು ಅತಿ ಹೆಚ್ಚು ಗೊಂದಲವನ್ನು (noise) ಉಂಟುಮಾಡುತ್ತವೆ. 300 ಟೋಕನ್ಗಳು ಅತ್ಯುತ್ತಮವಾದ ಸಮತೋಲನವನ್ನು ನೀಡುತ್ತವೆ.
- ಓವರ್ಲ್ಯಾಪ್ (Overlap) ಕಡ್ಡಾಯವಾಗಿದೆ. ಇದು ಚಂಕ್ಗಳ ನಡುವೆ ಸಂದರ್ಭವನ್ನು ಕಳೆದುಕೊಳ್ಳದಂತೆ ತಡೆಯುತ್ತದೆ.
- ವೇಗಕ್ಕಾಗಿ ಸಣ್ಣ ಮಾಡೆಲ್ಗಳನ್ನು ಬಳಸಿ. ನಮ್ಮ ಆಂತರಿಕ ಅಗತ್ಯಗಳಿಗೆ ಸಣ್ಣ ಎಂಬೆಡಿಂಗ್ ಮಾಡೆಲ್ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡಿತು.
- ನಿಮ್ಮ ರಿಟ್ರಿೀವಲ್ ಅನ್ನು ಪರೀಕ್ಷಿಸಿ. ಮ್ಯಾನುಯಲ್ ಚೆಕ್ಗಳ ಮೇಲೆ ಅವಲಂಬಿತರಾಗಬೇಡಿ. ನಿಖರತೆಯನ್ನು ಅಳೆಯಲು ಒಂದು ಟೆಸ್ಟ್ ಸೆಟ್ ಅನ್ನು ನಿರ್ಮಿಸಿ.
RAG ಎಂಬುದು ಮಾಯೆಯಲ್ಲ. ಇದು ಒಂದು ಎಂಜಿನಿಯರಿಂಗ್ ಪಜಲ್. ನಿಮ್ಮ ಚಂಕ್ಗಳು ಸರಿಯಿಲ್ಲದಿದ್ದರೆ, ನಿಮ್ಮ ರಿಟ್ರಿೀವಲ್ ಸರಿಯಿಲ್ಲದಂತಾಗುತ್ತದೆ. ನಿಮ್ಮ ರಿಟ್ರಿೀವಲ್ ಸರಿಯಿಲ್ಲದಿದ್ದರೆ, ನಿಮ್ಮ ಉತ್ತರಗಳು ಸರಿಯಿಲ್ಲದಂತಾಗುತ್ತದೆ.
ನಾವು ಈಗ 80% ಆನ್ಬೋರ್ಡಿಂಗ್ ಪ್ರಶ್ನೆಗಳಿಗೆ ಸರಿಯಾಗಿ ಉತ್ತರಿಸುತ್ತಿದ್ದೇವೆ. Slack ನಲ್ಲಿ ಮನುಷ್ಯನ ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಕಾಯುವುದಕ್ಕಿಂತ ಇದು ಬಹಳ ವೇಗವಾಗಿದೆ.
ನಿಮ್ಮ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ಗಾಗಿ ನೀವು AI ಅಸಿಸ್ಟೆಂಟ್ಗಳನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುತ್ತೀರಿ?
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi