AI வந்தபின் Retrieval-Augmented Generation (RAG) என்பது ஒரு முக்கிய பயன்பாட்டில் உள்ளது, அதாவது உங்களிடம் ஒரு 1000 புத்தகங்கள் உள்ளன என வைத்துக்கொள்வோம் அந்த ஆயிரம் புத்தகங்களையும் ஒருவர் கரைத்துக்குடித்து நீங்கள் அதில் என்ன கேட்டாலும் சரியாக சொல்லுவார் என்றால் அதுதான் இந்த RAG.
இன்னும் சுலபமாக சொல்லவேண்டுமானால் எந்திரன் திரைப்படத்தில் ஒரு காட்சி வரும், பல வருடங்கள் கழித்து ரஜினிகாந்த்தின் வசீகரன் கேரக்டர் ஒரு சலூனுக்கு சிட்டியை (ரோபோ) உடன் அழைத்துக்கொண்டு போவார், அங்கே ஒரு சிலர் ஏற்கனவே இருக்க அங்கிருக்கும் சில புத்தகங்களை சிட்டி ரஜினிகாந்த் எடுத்து சும்மா அப்பிடியும் இப்படியுமாக முகத்தின் முன் ஆசைப்பர், எல்லாம் ஒரு சில வினாடிகளில் படித்துவிட்டேன் வேறு ஏதாவது புத்தகம் படிக்க கேட்பார், அங்கே ஒருவர் இனி படிக்க டெலிபோன் டைரக்டரி தான் இருக்கு என்பார், அதையும் எடுத்து அப்பிடியும் இப்படியும் அசைத்து விட்டு படிச்சாச்சி என்பார்.
இதை கவனிக்கும் அவர் எல்லா நம்பரும் தெரியுமா என்பர், தெரியும் என்றதும் கமலஹாசன் தொலைபேசி எண் கேட்பார், அதை சரியாக சொல்வார், இன்னொருவர் என்னுடைய தொலைபேசி எண் என்று ஒரு எண்ணை சொல்லி என் பெயர் என்ன என கேட்பார், சட்டென தலையை மட்டும் பின்புறம் திருப்பி ஹலோ மிஸ்டர் பி பீதாம்பரம் என்பார், இதை சற்றும் எதிர்பாராத அந்த நபர் சட்டென அதிர்ச்சியாவார்.
14-15 வருடங்களுக்கு முன்னர் வந்த திரைப்படம், இந்த அளவுக்கு ஒரு பிராக்டிகல் யூஸ் கேஸ் எல்லாருக்கும் புரியும்படி எழுத்தாளர் சுஜாதா அவர்களும், இயக்குனர் ஷங்கர் அவர்களும் நிச்சயமாக தீர்க்கதரிசிகள்தான்.
இதை தமிழில் அப்படியே google transalate செய்தால் கொஞ்சமும் சம்பந்தமே இல்லாமல் “மீட்டெடுப்பு-வளர்ச்சியடைந்த தலைமுறை” என்று வருகிறது, இது எந்த தலைமுறை என்று தெரியவில்லை. ஆனால் இதற்க்கு ஓரளவுக்கு பொருத்தமான பெயர் “தகவல் உருவாக்க கண்டெடுப்பு” ஆக இருக்கலாம், யாரவது மொழி அறிஞர்கள் மொழிபெயர்த்து உதவலாம்.
சரி RAG எப்படி வேலை செய்கிறது என்று பார்ப்போம்?
எந்திரன் படத்தில் சிட்டி ரஜினிகாந்த் புத்தகங்களை படித்தது போல, RAG-ல் மூன்று முக்கிய steps இருக்கின்றன.
Step 1: Documents-ஐ சின்ன சின்ன துண்டுகளாக வெட்டுவது (Chunking)
முதலில் உங்களிடம் இருக்கும் documents-ஐ — அது PDF ஆக இருக்கலாம், Word file ஆக இருக்கலாம், website content ஆக இருக்கலாம் — இவற்றை சின்ன சின்ன paragraphs ஆக வெட்டுவார்கள். இதற்கு “chunking” என்று பெயர். ஏன் வெட்டணும்? ஒரு 500 page புத்தகத்தை அப்படியே AI-க்கு கொடுத்தால் அது confused ஆகிவிடும். ஆனால் சின்ன சின்ன pieces ஆக கொடுத்தால் exact-ஆக answer கண்டுபிடிக்க எளிதாக இருக்கும்.
Step 2: Embeddings — அதாவது எண்களாக மாற்றுவது
இப்போது ஒரு முக்கியமான விஷயம். Computer-க்கு தமிழோ English-ஓ நேரடியாக புரியாது. அதற்கு numbers மட்டுமே புரியும். அதனால் ஒவ்வொரு chunk-ஐயும் ஒரு special AI model (embedding model என்பார்கள்) numbers-ஆக மாற்றும். இந்த numbers-க்கு “vectors” என்று பெயர்.
எந்திரன் படத்தில் சிட்டி ரஜினிகாந்த் புத்தகத்தை படிக்கும்போது அது brain-ல் store ஆகிறது இல்லையா? அதே மாதிரிதான் இந்த vectors ஒரு special database-ல் store ஆகும். இதற்கு “vector database” என்று பெயர். Pinecone, ChromaDB, Weaviate மாதிரி பல vector databases இருக்கின்றன.
இதில் ஒரு அழகான logic இருக்கிறது — ஒரே மாதிரி meaning உள்ள வாக்கியங்கள் ஒரே மாதிரி numbers-ஆக மாறும். உதாரணமாக, “நாய் வீட்டில் இருக்கிறது” என்பதும் “dog is at home” என்பதும் கிட்டத்தட்ட same numbers-ஆக மாறும். இதனால் நீங்கள் தமிழில் கேள்வி கேட்டாலும் English-ல் இருக்கும் answer-ஐ கண்டுபிடிக்க முடியும்.
Step 3: Retrieve and Generate — கண்டுபிடித்து பதில் சொல்வது
இப்போது நீங்கள் ஒரு question கேட்கிறீர்கள் என்று வைத்துக்கொள்வோம். என்ன நடக்கிறது?
உங்கள் question-ஐயும் அதே embedding model numbers-ஆக மாற்றும்
அந்த numbers-ஐ vector database-ல் search செய்யும் — “இதற்கு closest match எது?” என்று
மிகவும் ஒப்பான அதாவது relevant-ஆக இருக்கும் chunks-ஐ எடுக்கும் (இதுதான் “Retrieval” part)
அந்த chunks-ஐயும் உங்கள் question-ஐயும் சேர்த்து LLM-க்கு (ChatGPT, Claude மாதிரி) கொடுக்கும்
LLM அந்த information-ஐ வைத்து ஒரு அழகான answer generate செய்யும் (இதுதான் “Generation” part)
எந்திரன் படத்தில் சொல்வதானால் — “கமலஹாசன் தொலைபேசி எண் என்ன?” என்பது question. சிட்டி ரஜினிகாந்த் படித்த telephone directory-தான் vector database. அதிலிருந்து சரியான number-ஐ கண்டுபிடித்து சொல்வதுதான் RAG.
RAG ஏன் important?
ChatGPT, Claude மாதிரி AI models-க்கு ஒரு பெரிய problem இருக்கிறது — “hallucination” என்பார்கள். அதாவது தெரியாவிட்டாலும் ஏதாவது ஒரு answer-ஐ confident-ஆக சொல்லிவிடும், நம்மில் சிலரைப்போல! இதை avoid செய்ய RAG உதவுகிறது. ஏனென்றால் AI தன் “imagination”-லிருந்து answer சொல்லாமல், நீங்கள் கொடுத்த documents-லிருந்து மட்டுமே answer சொல்கிறது.
இன்னொரு முக்கிய விஷயம் — AI models-க்கு ஒரு knowledge cutoff date இருக்கும். அதாவது ஒரு குறிப்பிட்ட date வரைக்கும்தான் information தெரியும். ஆனால் RAG மூலம் latest documents-ஐ கொடுத்தால், today’s information-ஐ கூட AI-க்கு தெரியப்படுத்தலாம்.
நம் அன்றாட வாழ்க்கையில் RAG எப்படி உதவும்?
- அம்மாவின் recipe collection
உங்கள் அம்மா கடந்த 30 வருடமாக ஒரு notebook-ல் recipes எழுதி வைத்திருக்கிறார்கள் என்று வைத்துக்கொள்வோம். 500-க்கும் மேற்பட்ட recipes — சாம்பார், ரசம் முதல் தீபாவளி இனிப்பு வரை. இப்போது உங்களுக்கு திடீரென “அம்மா அந்த மாங்காய் புளிக்குழம்பு எப்படி செய்வாங்க?” என்று தெரிய வேண்டும். அம்மாவிடம் phone செய்தால் “அட அது 2015-ல் எழுதினேன், அந்த பழைய புத்தகத்தில் பார், எந்த page-ன்னு மறந்துட்டேன்” என்பார்கள்.
ஆனால் அந்த recipe notebook-ஐ RAG system-ல் போட்டால்? “மாங்காய் புளிக்குழம்பு” என்று type செய்தால் போதும் — exact recipe, ingredients, அம்மா special-ஆக போடும் tip எல்லாம் சேர்த்து வந்துவிடும். அதுமட்டுமல்ல, “jaggery போடும் recipe எது?” என்று கேட்டால் வெல்லம் சேர்க்கும் எல்லா recipes-ஐயும் கண்டுபிடித்து காட்டும். - Government scheme கண்டுபிடிப்பது
Central government, state government சேர்த்து நூற்றுக்கணக்கான schemes இருக்கின்றன — PM Kisan, Mudra Loan, Ration Card, Aadhaar related services, pension schemes… ஒரு சாதாரண விவசாயி “நான் 2 ஏக்கர் நிலம் வைத்திருக்கிறேன், எனக்கு என்ன scheme கிடைக்கும்?” என்று கேட்டால், இப்போது என்ன செய்ய வேண்டும்? Village office போக வேண்டும், அங்கே யாராவது சரியாக சொல்வார்களா என்பதே guarantee இல்லை.
ஆனால் எல்லா government scheme documents-ஐயும் RAG system-ல் load செய்தால்? அந்த விவசாயி தன் details சொன்னால் போதும் — “நீங்கள் PM Kisan-ல் வருடத்திற்கு ₹6000 வாங்கலாம், Crop Insurance scheme-க்கு eligible, இந்த district-ல் இந்த special scheme-ம் இருக்கு” என்று ஒரே இடத்தில் எல்லா information-ம் கிடைக்கும். - Doctor கிட்ட போனப்புறம்
நாம் doctor கிட்ட போகும்போது அவர் நிறைய விஷயங்கள் சொல்வார் — என்ன problem, என்ன மாத்திரை, எப்போது சாப்பிடணும், என்ன சாப்பிடக்கூடாது, next visit எப்போது. ஆனால் வீட்டுக்கு வந்ததும் பாதி மறந்துவிடும்! “காலையில் சாப்பிடுறதுக்கு முன்னாடியா? பின்னாடியா?” என்று confusion வரும்.
Hospital-ல் உங்கள் medical records, prescription history, lab reports எல்லாம் இருக்கும். இவற்றை RAG system-ல் போட்டால், நீங்கள் “என்னோட sugar tablet-ஐ சாப்பாட்டுக்கு முன்னாடி சாப்பிடணுமா?” என்று கேட்டால், உங்கள் prescription-லிருந்து exact information எடுத்து சொல்லும். “கடந்த 6 மாசத்தில் என்னோட sugar level எப்படி இருந்தது?” என்று கேட்டால், உங்கள் lab reports-லிருந்து trend காட்டும். - பழைய Thirukural புத்தகம் முதல் WhatsApp messages வரை
இதை இன்னும் simple-ஆக யோசியுங்கள். உங்கள் WhatsApp-ல் கடந்த 5 வருடமாக family group, friends group, office group என்று ஆயிரக்கணக்கான messages இருக்கும். “கடந்த வருடம் Ooty trip plan பண்ணும்போது யாரோ ஒரு நல்ல hotel suggest பண்ணாங்களே, அது என்ன?” என்று தேட வேண்டும் என்றால் scroll scroll என்று போய்க்கொண்டே இருக்க வேண்டும்.
RAG இருந்தால்? “Ooty hotel recommendation” என்று கேட்டால் போதும் — யார் சொன்னார்கள், என்ன hotel, எவ்வளவு cost என்று எல்லா details-ம் ஒரே second-ல் வந்துவிடும்.
இப்படி பார்த்தால் RAG என்பது ஒரு super intelligent assistant மாதிரி — நீங்கள் கொடுக்கும் எல்லா information-ஐயும் படித்து, நினைவில் வைத்து, நீங்கள் எப்போது கேட்டாலும் exact-ஆக answer சொல்லும். எந்திரன் படத்தில் சிட்டி ரோபோ telephone directory-க்கு செய்ததை, RAG உங்கள் எல்லா documents-க்கும் செய்யும்!
சரி, நீங்களே ஒரு RAG System செய்வது எப்படி?
இது வரை theory பார்த்தோம். இப்போது practical-ஆக ஒரு simple RAG system செய்வோம். இதற்கு advanced programming knowledge தேவையில்லை — basic Python தெரிந்தால் போதும்.
என்ன தேவை?
மூன்றே மூன்று tools:
ChromaDB — இது நம்முடைய vector database. எந்திரன் படத்தில் சிட்டி ரோபோவின் brain மாதிரி — documents-ஐ numbers ஆக மாற்றி store செய்யும். Free, உங்கள் computer-லேயே run ஆகும்.
SentenceTransformers — இது embedding model. Text-ஐ numbers ஆக மாற்றும் “மொழிபெயர்ப்பாளர்”. “மாங்காய் புளிக்குழம்பு” என்று நீங்கள் type செய்தால், அதை [0.23, -0.15, 0.89, …] என்று numbers ஆக மாற்றும்.
Ollama — இது LLM, அதாவது AI brain. ChatGPT மாதிரிதான், ஆனால் உங்கள் computer-லேயே run ஆகும். Internet கூட தேவையில்லை!
மேலும் புரிந்துகொள்ள இதோ விளக்கம்
Example நூலகம் (Library)
ஒரு பெரிய library-ஐ கற்பனை செய்துகொள்ளுங்கள். அங்கே 10,000 புத்தகங்கள் இருக்கின்றன.
SentenceTransformer என்பது அந்த library-ன் librarian மாதிரி — ஒவ்வொரு புத்தகத்தையும் படித்து, “இது science category, இது cooking category, இது history category” என்று புரிந்துகொண்டு ஒரு label (number) ஒட்டுவார். அதே மாதிரி நீங்கள் வந்து “gravity பற்றிய புத்தகம் வேண்டும்” என்று கேட்டால், உங்கள் question-க்கும் ஒரு label ஒட்டுவார். இதுதான் embedding — text-ஐ numbers ஆக மாற்றுவது.
ChromaDB என்பது அந்த library-ன் அலமாரி (bookshelf) system மாதிரி — librarian ஒட்டிய labels-ஐ வைத்து புத்தகங்களை organized-ஆக store செய்யும். நீங்கள் ஒரு topic கேட்டால், “உங்கள் label-க்கு closest match இந்த 3 புத்தகங்கள்” என்று seconds-ல் கண்டுபிடித்து கொடுக்கும். இதுதான் vector database — vectors-ஐ store செய்து search செய்வது.
ஒரு table-ல் பார்த்தால்:
| விஷயம் | SentenceTransformers | ChromaDB |
|---|---|---|
| என்ன செய்கிறது | Text-ஐ numbers (vectors) ஆக மாற்றும் | Vectors-ஐ store செய்து search செய்யும் |
| Library analogy | Librarian — புத்தகத்தை புரிந்து label ஒட்டுபவர் | அலமாரி — label வைத்து organize செய்து கண்டுபிடிப்பது |
| Technical term | Embedding Model | Vector Database |
| Input | Text (“மாங்காய் புளிக்குழம்பு”) | Vectors ([0.23, -0.15, 0.89, …]) |
| Output | Vectors ([0.23, -0.15, 0.89, …]) | Most similar vectors (closest matches) |
| எப்போது run ஆகும் | Documents load செய்யும்போது + question கேட்கும்போது | Search செய்யும்போது |
| Alternative options | OpenAI Embeddings, Cohere, BGE | Pinecone, Weaviate, Qdrant, FAISS |
| Internet தேவையா | முதல் முறை download-க்கு மட்டும் | தேவையில்லை (fully local) |
RAG-ல் இவை எப்படி சேர்ந்து வேலை செய்கின்றன:
“மாங்காய் புளிக்குழம்பு recipe என்ன?”
│
▼
SentenceTransformer
(text → numbers ஆக மாற்றும்)
│
▼
[0.23, -0.15, 0.89, …]
│
▼
ChromaDB
(இந்த numbers-க்கு closest
match எது என்று தேடும்)
│
▼
“மாங்காய் புளிக்குழம்பு…
புளி கரைத்து… வெல்லம் சேர்த்து…”
சுருக்கமாக சொல்வதானால் — SentenceTransformer புரிந்துகொள்ளும், ChromaDB நினைவில் வைக்கும். இரண்டும் இல்லாமல் RAG வேலை செய்யாது, எந்திரன் படத்தில் சிட்டி ரோபோவுக்கு கண்ணும் brain-ம் இரண்டும் வேண்டும் இல்லையா — SentenceTransformer கண் மாதிரி, ChromaDB brain மாதிரி!
எப்படி run செய்வது? (Windows)
https://github.com/prabhubng/rag-tutorial-tamil
CMD open செய்து:
pip install chromadb sentence-transformers openai
Ollama install செய்து ஒரு model download செய்யுங்கள்:
cmdollama pull llama3.2
இப்போது download செய்த zip file-ஐ extract செய்து:
cd rag-tutorial
python create_sample_docs.py
python simple_rag.py
அவ்வளவுதான்! இப்போது questions கேளுங்கள்:
❓ மாங்காய் புளிக்குழம்பு எப்படி செய்வது?
❓ 2 ஏக்கர் நிலம் உள்ள விவசாயிக்கு என்ன scheme கிடைக்கும்?
❓ Metformin tablet எப்போது சாப்பிடணும்?
❓ Diwali-க்கு என்ன sweet செய்யலாம்?
Code-ல் ஒவ்வொரு step-க்கும் விரிவான Tamil comments இருக்கின்றன — படித்துப் பாருங்கள், RAG எப்படி வேலை செய்கிறது என்பது crystal clear ஆக புரியும்.
குறிப்பு: இந்த example code ஒரு அடிப்படை புரிதலுக்காக கொடுக்கப்பட்டுள்ளது, இன்டர்நெட்டில் ஏகப்பட்ட links உண்டு.