ਮੈਂ ਆਪਣੇ RAG Pipeline ਵਿੱਚ ਇੱਕ Reranker ਜੋੜਿਆ — ਇਸਨੇ ਸਭ ਕੁਝ ਵਿਗਾੜ ਦਿੱਤਾ
ਮੈਂ ਆਪਣੇ RAG pipeline ਵਿੱਚ ਇੱਕ reranker ਜੋੜਿਆ। ਇਸਨੇ ਤੁਰੰਤ ਮੇਰੇ ਟੈਸਟ ਖਰਾਬ ਕਰ ਦਿੱਤੇ।
version 2 ਵਿੱਚ, ਮੈਂ FAISS ਅਤੇ BM25 ਦੇ ਨਾਲ hybrid retrieval ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਸੀ। ਇਸਨੇ ਮੇਰੇ ਸਾਰੇ 19 ਟੈਸਟ ਪ੍ਰਸ਼ਨ ਪਾਸ ਕਰ ਲਏ ਸਨ। ਫਿਰ, ਮੈਂ precision ਨੂੰ ਸੁਧਾਰਨ ਲਈ ਇੱਕ cross-encoder reranker ਜੋੜਿਆ।
ਸਿਧਾਂਤ ਸਰਲ ਹੈ:
- Stage 1: ਉਮੀਦਵਾਰਾਂ (candidates) ਦਾ ਇੱਕ ਵਿਸ਼ਾਲ ਸਮੂਹ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤੇਜ਼ retrieval ਦੀ ਵਰਤੋਂ ਕਰੋ।
- Stage 2: ਸਭ ਤੋਂ ਵਧੀਆ ਚੁਣਨ ਲਈ ਇੱਕ ਸਮਾਰਟ reranker ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਇਸਨੂੰ ਲਾਗੂ ਕਰਨ ਵਿੱਚ 20 ਮਿੰਟ ਲੱਗੇ। ਇਸਨੇ ਤੁਰੰਤ ਮੇਰੇ 19 ਵਿੱਚੋਂ 2 ਟੈਸਟ ਫੇਲ ਕਰ ਦਿੱਤੇ।
ਇਹ ਅਸਫਲਤਾ ਡਾਟਾ ਫਾਰਮੈਟ ਕਾਰਨ ਹੋਈ। ਮੇਰੇ ਡਾਟਾ ਵਿੱਚ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਸੰਘਣੇ (dense), ਟੇਬੂਲਰ ਚੰਕਸ (tabular chunks) ਸ਼ਾਮਲ ਹਨ: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"
cross-encoder ਮਾਡਲ ਨੂੰ ਕੁਦਰਤੀ ਭਾਸ਼ਾ (natural language) ਦੇ ਪੈਰੇ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਸੀ। ਜਦੋਂ ਇਸਨੇ ਇੱਕ ਟੇਬਲ ਰੋ (table row) ਦੇਖੀ, ਤਾਂ ਇਸਨੇ ਬਹੁਤ ਘੱਟ ਸਕੋਰ ਦਿੱਤਾ। ਇਸਨੇ ਸੋਚਿਆ ਕਿ ਉਹ ਚੰਕ ਅਪ੍ਰਸੰਗਿਕ (irrelevant) ਸੀ।
Hybrid retrieval ਨੇ ਜਵਾਬ ਲੱਭ ਲਿਆ ਸੀ, ਪਰ reranker ਨੇ ਉਸਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ।
ਮੈਂ ਇਸਨੂੰ ਠੀਕ ਕਰਨ ਲਈ 7 ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਅਜ਼ਮਾਏ:
- ਇੱਕ ਵੱਡਾ candidate pool ਵਰਤਣਾ।
- reranker ਅਤੇ retriever ਦੇ ਸਕੋਰਾਂ ਨੂੰ ਮਿਲਾਉਣਾ (blending)।
- rank fusion ਦੀ ਵਰਤੋਂ ਕਰਨਾ।
ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਕੰਮ ਨਹੀਂ ਆਇਆ। reranker ਦਾ ਸਕੋਰ ਇੰਨਾ ਨਕਾਰਾਤਮਕ ਸੀ ਕਿ ਉਸਨੇ ਬਾਕੀ ਸਭ ਕੁਝ ਦਬਾ ਦਿੱਤਾ। ਮਾਡਲ ਸਿਰਫ਼ ਘੱਟ ਰੈਂਕਿੰਗ ਨਹੀਂ ਕਰ ਰਿਹਾ ਸੀ, ਸਗੋਂ ਉਹ ਸਰਗਰਮੀ ਨਾਲ ਟੇਬਲ ਫਾਰਮੈਟ ਨੂੰ ਰੱਦ ਕਰ ਰਿਹਾ ਸੀ।
ਮੈਂ ਗਣਿਤ (math) ਨੂੰ ਠੀਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਛੱਡ ਦਿੱਤੀ ਅਤੇ ਢਾਂਚੇ (structure) ਨੂੰ ਬਦਲ ਦਿੱਤਾ।
reranker ਨੂੰ ਸਭ ਕੁਝ ਫੈਸਲਾ ਕਰਨ ਦੇਣ ਦੀ ਬਜਾਏ, ਮੈਂ ਆਪਣੇ ਸਭ ਤੋਂ ਵਧੀਆ ਨਤੀਜਿਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਿਆ। ਮੈਂ ਇੱਕ "guaranteed slot" ਰਣਨੀਤੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ:
- ਜੇਕਰ ਤੁਸੀਂ ਚੋਟੀ ਦੇ 3 ਨਤੀਜੇ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਪਹਿਲੇ ਸਟੇਜ ਤੋਂ ਚੋਟੀ ਦੇ 2 ਨਤੀਜੇ ਰੱਖੋ।
- ਸਿਰਫ਼ ਤੀਜੇ ਨਤੀਜੇ ਨੂੰ ਚੁਣਨ ਲਈ reranker ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ hybrid search ਦੇ ਨਤੀਜੇ ਅੰਤਮ ਸੂਚੀ ਵਿੱਚ ਰਹਿਣ। reranker ਸਿਰਫ਼ ਬਾਕੀ ਰਹਿੰਦੇ ਸਲੌਟਸ ਨੂੰ ਸੁਧਾਰਦਾ ਹੈ।
ਨਤੀਜਾ: 19/19 ਟੈਸਟ ਪਾਸ ਹੋ ਗਏ।
ਸਿੱਖੇ ਗਏ ਸਬਕ:
- Rerankers ਤੁਰੰਤ ਅਪਗ੍ਰੇਡ ਨਹੀਂ ਹਨ। ਉਹ structured ਜਾਂ tabular ਡਾਟਾ 'ਤੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚਾ ਸਕਦੇ ਹਨ।
- ਤੁਹਾਡਾ evaluation set ਤੁਹਾਡਾ ਸੁਰੱਖਿਆ ਜਾਲ (safety net) ਹੈ। ਮੇਰੇ 19 ਟੈਸਟਾਂ ਤੋਂ ਬਿਨਾਂ, ਮੈਂ ਇੱਕ ਖਰਾਬ ਸਿਸਟਮ ਲਾਂਚ ਕਰ ਦਿੱਤਾ ਹੁੰਦਾ।
- ਜੋ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ ਉਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖੋ। ਜੇਕਰ ਤੁਹਾਡੀ ਪਹਿਲੇ ਸਟੇਜ ਦੀ retrieval ਚੰਗੀ ਹੈ, ਤਾਂ reranker ਨੂੰ ਉਸਨੂੰ ਬਦਲਣ (override) ਨਾ ਦਿਓ।
Reranker ਦੀ ਵਰਤੋਂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਮਜ਼ਬੂਤ retriever ਬਣਾਓ।
Optional learning community: https://t.me/GyaanSetuAi
