ਮੈਂ RAG ਦੇ ਨਾਲ ਇੱਕ Code Q&A Bot ਬਣਾਇਆ: ਕੀ ਕੰਮ ਕਰਿਆ ਅਤੇ ਕੀ ਫੇਲ ਹੋ ਗਿਆ
ਸਾਡੇ ਡਿਵੈਲਪਰਾਂ ਨੇ ਸਾਡੀਆਂ microservices ਨੂੰ ਸਮਝਣ ਲਈ Slack ਅਤੇ ਪੁਰਾਣੇ ਦਸਤਾਵੇਜ਼ਾਂ (docs) ਵਿੱਚ ਦਿਨਾਂ ਬੱਧੀ ਖੋਜ ਕੀਤੀ। ਮੈਂ RAG ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਹਨਾਂ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇਣ ਲਈ ਇੱਕ chatbot ਬਣਾਉਣ ਦਾ ਫੈਸਲਾ ਕੀਤਾ।
ਮੈਂ ਇਸ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ ਕਈ ਗਲਤੀਆਂ ਕੀਤੀਆਂ। ਇੱਥੇ ਉਹ ਹੈ ਜੋ ਮੈਂ ਸਿੱਖਿਆ।
ਨਾਕਾਮੀਆਂ
- ਮੈਂ ਸਾਰੇ ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ ਇੱਕ ਹੀ prompt ਵਿੱਚ ਪਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਇਸ ਨਾਲ token limits ਪੂਰੀਆਂ ਹੋ ਗਈਆਂ, hallucinations ਹੋਣ ਲੱਗੀਆਂ, ਅਤੇ ਖਰਚਾ ਵੀ ਬਹੁਤ ਜ਼ਿਆਦਾ ਹੋ ਗਿਆ।
- ਮੈਂ ਇੱਕ ਬੇਸਿਕ TF-IDF index ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਜਦੋਂ ਉਪਭੋਗਤਾਵਾਂ ਨੇ ਸਮਾਨਾਰਥਕ (synonyms) ਜਾਂ ਵੱਖਰੇ ਸ਼ਬਦਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ, ਤਾਂ ਇਹ ਫੇਲ ਹੋ ਗਿਆ।
- ਮੈਂ ਸਧਾਰਨ 500-character chunks ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਨਤੀਜੇ ਅਨਿਸ਼ਚਿਤ ਸਨ ਕਿਉਂਕਿ chunks ਅਕਸਰ ਵਾਕ ਦੇ ਵਿਚਕਾਰ ਹੀ ਕੱਟੇ ਜਾਂਦੇ ਸਨ।
ਹੱਲ
ਮੈਂ LLM ਨੂੰ ਇੱਕ search engine ਵਜੋਂ ਦੇਖਣਾ ਬੰਦ ਕਰ ਦਿੱਤਾ। ਮੈਂ ਇਸਨੂੰ ਇੱਕ ਸਮਰਪਿਤ (dedicated) search index ਲਈ ਇੱਕ reading engine ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ।
ਇੱਥੇ ਉਹ pipeline ਹੈ ਜੋ ਕੰਮ ਕਰਦੀ ਹੈ:
- ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ 50-token overlap ਦੇ ਨਾਲ 300-token ਦੇ ਟੁਕੜਿਆਂ (chunks) ਵਿੱਚ ਵੰਡੋ।
- ਹਰੇਕ chunk ਨੂੰ ਇੱਕ vector ਵਿੱਚ embed ਕਰੋ।
- vectors ਨੂੰ similarity search index ਵਿੱਚ ਸਟੋਰ ਕਰੋ।
- query ਦੇ ਸਮੇਂ, ਸਭ ਤੋਂ ਵੱਧ ਸਮਾਨ 5 ਚੰਕਸ (chunks) ਲੱਭੋ।
- ਜਵਾਬ ਤਿਆਰ ਕਰਨ ਲਈ ਸਿਰਫ਼ ਉਹਨਾਂ ਚੰਕਸ ਨੂੰ ਹੀ LLM ਵਿੱਚ ਪਾਓ।
ਇਸ ਬਦਲਾਅ ਨੇ hallucinations ਨੂੰ 80% ਤੱਕ ਘਟਾ ਦਿੱਤਾ ਅਤੇ ਖਰਚੇ ਨੂੰ ਪ੍ਰਤੀ query $0.01 ਤੋਂ ਵੀ ਘੱਟ ਕਰ ਦਿੱਤਾ।
ਮੁੱਖ ਸਿੱਖਿਆਵਾਂ
- Chunk size ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੈ। 150 tokens ਬਹੁਤ ਘੱਟ context ਹੈ। 1000 tokens ਬਹੁਤ ਜ਼ਿਆਦਾ noise ਹੈ। 300 tokens ਸਭ ਤੋਂ ਵਧੀਆ (sweet spot) ਹੈ।
- Overlap ਲਾਜ਼ਮੀ ਹੈ। ਇਹ chunks ਦੇ ਵਿਚਕਾਰ context ਗੁਆਉਣ ਤੋਂ ਰੋਕਦਾ ਹੈ।
- ਤੇਜ਼ੀ ਲਈ ਛੋਟੇ ਮਾਡਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਸਾਡੀਆਂ ਅੰਦਰੂਨੀ ਲੋੜਾਂ ਲਈ ਇੱਕ ਛੋਟਾ embedding model ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ।
- ਆਪਣੀ retrieval ਦੀ ਜਾਂਚ ਕਰੋ। ਮੈਨੂਅਲ ਚੈੱਕਾਂ 'ਤੇ ਭਰੋਸਾ ਨਾ ਕਰੋ। ਸਹੀਤਾ (accuracy) ਨੂੰ ਮਾਪਣ ਲਈ ਇੱਕ test set ਬਣਾਓ।
RAG ਕੋਈ ਜਾਦੂ ਨਹੀਂ ਹੈ। ਇਹ ਇੱਕ ਇੰਜੀਨੀਅਰਿੰਗ ਪਹੇਲੀ ਹੈ। ਜੇਕਰ ਤੁਹਾਡੇ chunks ਖਰਾਬ ਹਨ, ਤਾਂ ਤੁਹਾਡੀ retrieval ਵੀ ਖਰਾਬ ਹੋਵੇਗੀ। ਜੇਕਰ ਤੁਹਾਡੀ retrieval ਖਰਾਬ ਹੈ, ਤਾਂ ਤੁਹਾਡੇ ਜਵਾਬ ਵੀ ਖਰਾਬ ਹੋਣਗੇ।
ਅਸੀਂ ਹੁਣ 80% onboarding ਸਵਾਲਾਂ ਦੇ ਸਹੀ ਜਵਾਬ ਦਿੰਦੇ ਹਾਂ। ਇਹ Slack 'ਤੇ ਕਿਸੇ ਇਨਸਾਨ ਦੇ ਜਵਾਬ ਦੇਣ ਦੀ ਉਡੀਕ ਕਰਨ ਨਾਲੋਂ ਕਿਤੇ ਜ਼ਿਆਦਾ ਤੇਜ਼ ਹੈ।
ਤੁਸੀਂ ਆਪਣੇ ਦਸਤਾਵੇਜ਼ਾਂ (documentation) ਲਈ AI assistants ਕਿਵੇਂ ਬਣਾਉਂਦੇ ਹੋ?
ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi