ಏನೂ ತಿಳಿಯದ ಸ್ಥಿತಿಯಿಂದ RAG App ನಿರ್ಮಿಸುವವರೆಗೆ
ನಿನ್ನೆ ನಾನು ನನ್ನದೇ NLP ನೋಟ್ಸ್ಗಳ 31 ಪುಟಗಳನ್ನು ಓದುವಲ್ಲಿ ಸಮಯ ಕಳೆದೆ.
ನನಗೆ ಏನೂ ಅರ್ಥವಾಗಲಿಲ್ಲ.
ಸಮಸ್ಯೆ ನನ್ನಲ್ಲಿದೆ ಎಂದು ನಾನು ಭಾವಿಸಿದೆ. ಆದರೆ ಅದು ಸರಿರಲಿಲ್ಲ. ಸಮಸ್ಯೆ ನನ್ನ ವಿಧಾನದಲ್ಲಿದೆ. ನೋಟ್ಸ್ಗಳನ್ನು ಓದುವುದು ಎಂದರೆ ಕಲಿಯುವುದಲ್ಲ. ನನ್ನ ಬಳಿ ಇದ್ದ ನೋಟ್ಸ್ಗಳು ತಜ್ಞರಿಗಾಗಿ ಇದ್ದವು, ಆರಂಭಿಕರಿಗಾಗಿ ಅಲ್ಲ.
ನಾನು ನನ್ನ ವಿಧಾನವನ್ನು ಬದಲಾಯಿಸಿದೆ. ಓದುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ. ಬದಲಾಗಿ, ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿದೆ. ಸರಳ ಉದಾಹರಣೆಗಳನ್ನು ಬಳಸಿದೆ. ಪರಿಕಲ್ಪನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವವರೆಗೆ ತಾಂತ್ರಿಕ ಪದಗಳನ್ನು ಬಳಸಲು ನಿರಾಕರಿಸಿದೆ.
ದಿನದ ಅಂತ್ಯದ ವೇಳೆಗೆ, ನಾನು ಒಂದು RAG app ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. NLP ನ ನಾಲ್ಕು ಸ್ತಂಭಗಳನ್ನು ನಾನು ಹೇಗೆ ಕಲಿತೆ ಎಂಬುದು ಇಲ್ಲಿದೆ.
- Bag of Words ಕಂಪ್ಯೂಟರ್ಗಳಿಗೆ ಕೇವಲ ಗಣಿತ ಮಾತ್ರ ಅರ್ಥವಾಗುತ್ತದೆ. ಪಠ್ಯವನ್ನು (text) ಸಂಸ್ಕರಿಸಲು, ನೀವು ಪದಗಳನ್ನು ಸಂಖ್ಯೆಗಳಾಗಿ ಪರಿವರ್ತಿಸಬೇಕು.
ಇಮೇಲ್ಗಳನ್ನು ಸ್ಪ್ಯಾಮ್ (spam) ಅಥವಾ ಸ್ಪ್ಯಾಮ್ ಅಲ್ಲ ಎಂದು ವರ್ಗೀಕರಿಸಬೇಕೆಂದು ನೀವು ಭಾವಿಸಿ. ನಿಮ್ಮ ಇಮೇಲ್ಗಳಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಪದವನ್ನು ನೀವು ಪಟ್ಟಿ ಮಾಡುತ್ತೀರಿ. ಪ್ರತಿಯೊಂದು ಪದವು ಎಷ್ಟು ಬಾರಿ ಬರುತ್ತದೆ ಎಂಬುದನ್ನು ನೀವು ಎಣಿಸುತ್ತೀರಿ. ಇದು ಇಮೇಲ್ ಅನ್ನು ಸಂಖ್ಯೆಗಳ ಸಾಲನ್ನಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ.
ಇದರಲ್ಲಿನ ದೋಷವೇನು? ಇದು ಪದಗಳ ಕ್ರಮವನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ. "Dog bites man" ಮತ್ತು "man bites dog" ಎಂಬ ವಾಕ್ಯಗಳು ಈ ವಿಧಾನದಲ್ಲಿ ಒಂದೇ ರೀತಿ ಕಾಣಿಸುತ್ತವೆ.
- TF-IDF Bag of Words ಪ್ರತಿಯೊಂದು ಪದವನ್ನೂ ಸಮಾನವಾಗಿ ಪರಿಗಣಿಸುತ್ತದೆ. ಆದರೆ "the" ಎಂಬ ಪದವು "viagra" ನಷ್ಟು ಮುಖ್ಯವಲ್ಲ.
TF-IDF ಎರಡು ನಿಯಮಗಳನ್ನು ಬಳಸುತ್ತದೆ:
- Term Frequency (TF): ಒಂದು ಇಮೇಲ್ನಲ್ಲಿ ಒಂದು ಪದವು ಎಷ್ಟು ಬಾರಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ.
- Inverse Document Frequency (IDF): ಎಲ್ಲಾ ಇಮೇಲ್ಗಳಲ್ಲಿ ಒಂದು ಪದವು ಎಷ್ಟು ಅಪರೂಪವಾಗಿದೆ.
ಈ ಗಣಿತವು "the" ನಂತಹ ಅನಗತ್ಯ ಪದಗಳನ್ನು ಕಡೆಗಣಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರಮುಖವಾದ, ಅಪರೂಪದ ಪದಗಳನ್ನು ಎತ್ತಿ ತೋರಿಸುತ್ತದೆ.
- Embeddings Bag of Words "money" ಮತ್ತು "cash" ಪದಗಳು ಸಂಬಂಧವಿಲ್ಲದವು ಎಂದು ಭಾವಿಸುತ್ತದೆ. Embeddings ಇದನ್ನು ಸರಿಪಡಿಸುತ್ತದೆ.
ಒಂದು ಬೃಹತ್ ನಕ್ಷೆಯನ್ನು (map) ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಆ ನಕ್ಷೆಯಲ್ಲಿ ಪ್ರತಿಯೊಂದು ಪದವೂ ಒಂದು ಚುಕ್ಕೆ (dot). ಸಮಾನ ಅರ್ಥವಿರುವ ಪದಗಳು ಒಂದಕ್ಕೊಂದು ಹತ್ತಿರದಲ್ಲಿರುತ್ತವೆ. "Money" ಮತ್ತು "cash" ನೆರೆಹೊರೆಯವರಂತೆ ಇರುತ್ತವೆ. "Banana" ಬಹಳ ದೂರದಲ್ಲಿರುತ್ತದೆ.
ಒಂದು ಪದವು ಯಾವ ಪದಗಳೊಂದಿಗೆ ಬಳಕೆಯಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೋಡಿ ಕಂಪ್ಯೂಟರ್ ಈ ಸ್ಥಳಗಳನ್ನು ಕಲಿಯುತ್ತದೆ. ಒಂದು ವೇಳೆ "money" ಮತ್ತು "cash" ಎರಡೂ ಪದಗಳು "bank" ಮತ್ತು "pay" ಪದಗಳ ಹತ್ತಿರ ಕಂಡುಬಂದರೆ, ಕಂಪ್ಯೂಟರ್ ಅವುಗಳನ್ನು ಒಂದಕ್ಕೊಂದು ಹತ್ತಿರದಲ್ಲಿ ಇರಿಸುತ್ತದೆ.
- RAG (Retrieval-Augmented Generation) ಇಲ್ಲಿ ಎಲ್ಲವೂ ಒಂದಕ್ಕೊಂದು ಸಂಬಂಧ ಹೊಂದಿಕೊಳ್ಳುತ್ತವೆ.
ನಿಮ್ಮ ಫೈಲ್ಗಳಲ್ಲಿನ ಪ್ರತಿಯೊಂದು ನೋಟ್ಸ್ ನಕ್ಷೆಯ ಮೇಲಿನ ಒಂದು ಚುಕ್ಕೆಯಾಗಿದ್ದರೆ, ಹತ್ತಿರದ ಚುಕ್ಕೆಗಳನ್ನು ಹುಡುಕುವ ಮೂಲಕ ನೀವು ಉತ್ತರಗಳನ್ನು ಕಂಡುಕೊಳ್ಳಬಹುದು.
RAG ಪ್ರಕ್ರಿಯೆ:
- ಪ್ರಶ್ನೆಯನ್ನು ಒಂದು ಚುಕ್ಕೆಯನ್ನಾಗಿ ಪರಿವರ್ತಿಸಿ.
- ನಕ್ಷೆಯಲ್ಲಿರುವ ಹತ್ತಿರದ ನೋಟ್ಸ್-ಚುಕ್ಕೆಗಳನ್ನು ಹುಡುಕಿ.
- ಆ ನೋಟ್ಸ್ಗಳನ್ನು AI ಗೆ ನೀಡಿ.
- ಆ ನೋಟ್ಸ್ಗಳನ್ನು ಮಾತ್ರ ಬಳಸಿ ಉತ್ತರಿಸಲು AI ಗೆ ಸೂಚಿಸಿ.
ಇದು AI ಕೇವಲ ಊಹಿಸುವುದನ್ನು ಅಥವಾ ಸುಳ್ಳು ಹೇಳುವುದನ್ನು ತಡೆಯುತ್ತದೆ. ಇದು AI ನಿಮ್ಮ ನಿಜವಾದ ಡೇಟಾವನ್ನು ಬಳಸುವಂತೆ ಮಾಡುತ್ತದೆ.
ನಾನು ಈ ಹಂತಗಳನ್ನು ಬಳಸಿ ನನ್ನ Synapse ಎಂಬ ಆಪ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ನಾನು ಕೇವಲ ಒಂದು ದಿನದಲ್ಲಿ ಶೂನ್ಯದಿಂದ ಕೆಲಸ ಮಾಡುವ ವ್ಯವಸ್ಥೆಯವರೆಗೆ ಬೆಳೆದೆ.
ಪಾಠ: ಓದುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಕೇಳುವುದನ್ನು ಪ್ರಾರಂಭಿಸಿ. ಒಂದು ಪರಿಕಲ್ಪನೆಯನ್ನು ಸರಳವಾದ ಉದಾಹರಣೆಯೊಂದಿಗೆ ವಿವರಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಅದು ನಿಮಗೆ ಇನ್ನೂ ತಿಳಿದಿಲ್ಲ ಎಂದರ್ಥ. ನೀವು ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೀರಿ ಎಂದು ಸಾಬೀತುಪಡಿಸಲು ಏನನ್ನಾದರೂ ನಿರ್ಮಿಸಿ.
ಮೂಲ: https://dev.to/sabimantock/from-i-understood-nothing-to-building-a-rag-app-4033
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi