நான் ஒரு RAG செயலியை உருவாக்கினேன், பிறகு எனக்கு எந்த கார் பிடிக்கும் என்று கேட்டேன். அதற்குத் தெரியவில்லை.

நான் Kenning என்ற ஆவண-அரட்டை (document-chat) கருவியை உருவாக்கி வருகிறேன். பயனர்கள் பதிவேற்றிய கோப்புகள் குறித்து கேள்விகள் கேட்க இது RAG (Retrieval-Augmented Generation) தொழில்நுட்பத்தைப் பயன்படுத்துகிறது.

நான் முழுமையான கட்டமைப்பை (pipeline) கீழ்க்கண்டவற்றைப் பயன்படுத்தி புதிதாக உருவாக்கினேன்:

  • Java 21 மற்றும் Spring Boot
  • Spring AI
  • PostgreSQL மற்றும் pgvector
  • Ollama (llama3.2:3b மற்றும் nomic-embed-text இயங்குகிறது)
  • Docker Compose

இந்த கட்டமைப்பின் செயல்முறை இவ்வாறு அமைகிறது: கோப்பை பதிவேற்றுதல் → உரையை எடுத்தல் → உரையைத் துண்டுகளாகப் பிரித்தல் (Chunk text) → துண்டுகளை வெக்டர்களாக (vectors) மாற்றுதல் → pgvector-இல் சேமித்தல் → ஒத்த துண்டுகளைத் தேடுதல் → துண்டுகள் + கேள்வியை மாடலுக்கு அனுப்புதல் → ஆதாரங்களுடன் பதிலைப் பெறுதல்.

இந்த அமைப்பு வேலை செய்தது, ஆனால் நான் இரண்டு வெவ்வேறு தோல்விகளைச் சந்தித்தேன். அவை பார்ப்பதற்கு ஒன்றாகத் தெரிந்தாலும், அவற்றின் காரணங்கள் வேறானவை.

தோல்வி 1: மாடல் குழப்பமடைந்தது. நான் கேட்டது: "இந்தத் திட்டம் எந்த embedding model-ஐப் பயன்படுத்துகிறது?" ஆவணத்தில் பதில் தெளிவாகக் குறிப்பிடப்பட்டிருந்தது. மாடல் சரியான உரையை எடுத்தது. இருப்பினும், அடுத்த வாக்கியத்தில் சரியான மாடல் பெயரையே மீண்டும் குறிப்பிட்ட போதிலும், தனக்குத் தெரியாது என்று பதிலளித்தது.

எனது கோட்பாடு: 3B மாடல் மிகவும் சிறியது. அது சரியான தரவை எடுத்தது, ஆனால் ஒரு உறுதியான பதிலைக் கூறத் தயங்கியது. ஒரு பெரிய மாடல் இதைப் சரிசெய்யக்கூடும்.

தோல்வி 2: மாடலுக்கு எதுவும் கிடைக்கவில்லை. நான் கேட்டது: "எனக்கு எந்த கார் பிராண்ட் பிடிக்கும்?" எனக்கு BMW பிடிக்கும் என்று ஆவணத்தில் குறிப்பிடப்பட்டிருந்தது. ஆனால் சிஸ்டம் எந்த முடிவையும் வழங்கவில்லை. similarity score எனது வரம்பைத் (threshold) தாண்டும் அளவுக்கு மிகக் குறைவாக இருந்தது.

எனது கோட்பாடு: Chunk dilution (துண்டுகள் சிதறல்). எனது சோதனை ஆவணம் சிறியதாக இருந்தது. அது Spring AI, OAuth2 மற்றும் எனது கார் விருப்பம் போன்ற பல தலைப்புகளை ஒரே துண்டில் (chunk) கலந்து வைத்திருந்தது. அந்தத் துண்டிற்கான வெக்டர் (vector) அனைத்துத் தலைப்புகளுக்கும் இடையே சிதறிப்போயிருந்தது. கார்களைப் பற்றிய ஒரு குறிப்பிட்ட கேள்வி, ஒரு பரந்த துண்டிற்கு எதிராகத் தனது வலிமையை இழந்தது. சிறந்த chunking உத்தி இதைப் சரிசெய்யும்.

கற்றுக்கொண்ட பாடங்கள்:

  • சிறிய மாடல்களுக்குச் சிந்திக்கும் திறன் (reasoning) குறைவாக இருக்கும்.
  • சாதாரணமான chunking முறை மீட்டெடுப்புத் துல்லியத்தைப் (retrieval accuracy) பாதிக்கிறது.
  • பிழையைச் சரிசெய்வதை விட, அது "ஏன்" ஏற்பட்டது என்பதைக் கண்டறிவது முக்கியமானது.

இந்த கட்டமைப்பு உறுதியாக உள்ளது. இது மெதுவாகவும் சில நேரங்களில் தவறாகவும் இருக்கலாம், ஆனால் முழுமையான சுழற்சி (loop) நிறைவடைந்துள்ளது.

Source: https://dev.to/mido-dev/i-built-a-rag-app-then-asked-it-what-car-i-like-it-didnt-know-583n

Optional learning community: https://t.me/GyaanSetuAi