ਇੱਕ ਡਿਵੈਲਪਰ ਦਾ RAG ਪ੍ਰੋਟੋਟਾਈਪ ਕਿਸੇ ਵੀ ਅਜਿਹੀ ਕੁਐਰੀ (query) ਦਾ ਜਵਾਬ ਦੇਣ ਤੋਂ ਇਨਕਾਰ ਕਰ ਦਿੰਦਾ ਸੀ ਜਿਸਦੀ cosine similarity 0.50 ਤੋਂ ਘੱਟ ਸੀ। ਇਹ ਬਿਨਾਂ ਕਿਸੇ ਨੁਕਸ ਦੇ ਕੰਮ ਕਰ ਰਿਹਾ ਸੀ—ਜਦੋਂ ਤੱਕ embedding model ਨੂੰ ਬਦਲਿਆ ਨਹੀਂ ਗਿਆ। ਫਿਰ ਉਸ ਗਾਰਡ ਨੇ ਗਲਤ ਜਵਾਬਾਂ ਨੂੰ ਚੁੱਪਚਾਪ ਅੰਦਰ ਆਉਣ ਦਿੱਤਾ। ਇਹ ਘਟਨਾ ਸਾਬਤ ਕਰਦੀ ਹੈ ਕਿ ਇੱਕ ਹਾਰਡ-ਕੋਡਡ similarity threshold ਮਾਡਲਾਂ ਦੇ ਵਿਚਕਾਰ ਟੁੱਟ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਅਜਿਹਾ ਜੋਖਮ ਹੈ ਜੋ ਕਿਸੇ ਵੀ ਅਜਿਹੇ ਸਿਸਟਮ ਲਈ ਖਤਰਾ ਹੈ ਜੋ ਸੇਫਟੀ ਚੈੱਕ ਲਈ embedding similarity 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ।

Why the threshold mattered

Retrieval-augmented generation (RAG) ਪਾਈਪਲਾਈਨਾਂ ਅਕਸਰ ਇੱਕ similarity guard ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ: ਜੇਕਰ ਇੱਕ ਕੁਐਰੀ ਅਤੇ ਉਸਦੇ ਸਭ ਤੋਂ ਨੇੜਲੇ ਦਸਤਾਵੇਜ਼ ਵਿਚਕਾਰ cosine similarity ਇੱਕ ਪਹਿਲਾਂ ਤੋਂ ਨਿਰਧਾਰਤ ਨੰਬਰ ਤੋਂ ਘੱਟ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਸਿਸਟਮ ਜਵਾਬ ਦੇਣਾ ਬੰਦ ਕਰ ਦਿੰਦਾ ਹੈ। ਜਦੋਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਗਿਆ context ਕਮਜ਼ੋਰ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਹ ਗਾਰਡ ਮਾਡਲ ਨੂੰ hallucinating ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਅਸਲ ਸੈੱਟਅੱਪ ਵਿੱਚ, 0.50 ਦੀ threshold ਨੇ ਸਿਸਟਮ ਨੂੰ ਇਮਾਨਦਾਰ ਰੱਖਿਆ—ਅਣਉੱਤਰਯੋਗ ਕੁਐਰੀਆਂ ਦਾ ਸਕੋਰ ਲਾਈਨ ਤੋਂ ਹੇਠਾਂ ਸੀ, ਅਤੇ ਉੱਤਰਯੋਗ ਕੁਐਰੀਆਂ ਦਾ ਇਸ ਤੋਂ ਉੱਪਰ।

ਜਦੋਂ embedding backend ਬਦਲਿਆ, ਤਾਂ ਉਹੀ 0.50 ਦਾ ਕੱਟ-ਆਫ ਹੁਣ ਦੋਵਾਂ ਸਮੂਹਾਂ ਨੂੰ ਵੱਖ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਪਾਈਪਲਾਈਨ ਨੇ ਬਿਨਾਂ ਕਿਸੇ ਕ੍ਰੈਸ਼ ਜਾਂ ਸਪੱਸ਼ਟ ਗਲਤੀ ਦੇ, ਭਰੋਸੇਮੰਦ ਪਰ ਗਲਤ ਜਵਾਬ ਦੇਣੇ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤੇ। ਇਹ ਅਸਫਲਤਾ ਸਟੈਂਡਰਡ ਰੈਂਕਿੰਗ ਮੈਟ੍ਰਿਕਸ ਤੋਂ ਬਚ ਗਈ ਅਤੇ ਉਦੋਂ ਹੀ ਸਾਹਮਣੇ ਆਈ ਜਦੋਂ ਇੱਕ ਇਨਸਾਨ ਨੇ ਇਸ ਬਦਲਾਅ (drift) ਨੂੰ ਨੋਟ ਕੀਤਾ।

Geometry isn’t universal

ਹਰ embedding model ਆਪਣੀ ਜਿਓਮੈਟਰੀ ਦੇ ਨਾਲ ਭਾਸ਼ਾ ਨੂੰ ਇੱਕ ਹਾਈ-ਡਾਇਮੈਂਸ਼ਨਲ ਸਪੇਸ ਵਿੱਚ ਮੈਪ ਕਰਦਾ ਹੈ। ਇਸ ਲਈ cosine similarity ਦੀਆਂ ਕੀਮਤਾਂ ਇੱਕ ਮਾਡਲ ਤੋਂ ਦੂਜੇ ਮਾਡਲ ਤੱਕ ਵੱਖ-ਵੱਖ ਹੁੰਦੀਆਂ ਹਨ। 0.50 ਦਾ ਸਕੋਰ ਇੱਕ ਮਾਡਲ ਲਈ ਇੱਕ ਸਪੱਸ਼ਟ ਪਾੜੇ ਦੇ ਕਿਨਾਰੇ 'ਤੇ ਹੋ ਸਕਦਾ ਹੈ ਅਤੇ ਦੂਜੇ ਲਈ ਡੂੰਘੇ ਓਵਰਲੈਪ ਦੇ ਅੰਦਰ ਹੋ ਸਕਦਾ ਹੈ।

  • Voyage-3 – 0.50 ਦੀ ਲਾਈਨ ਘੱਟ ਸਕੋਰ ਵਾਲੀਆਂ ਅਣਉੱਤਰਯੋਗ ਕੁਐਰੀਆਂ ਅਤੇ ਉੱਚ ਸਕੋਰ ਵਾਲੀਆਂ ਉੱਤਰਯੋਗ ਕੁਐਰੀਆਂ ਦੇ ਵਿਚਕਾਰ ਹੈ। ਗਾਰਡ ਉਮੀਦ ਅਨੁਸਾਰ ਕੰਮ ਕਰਦਾ ਹੈ।
  • BGE-Small – ਬਹੁਤ ਸਾਰੀਆਂ ਅਣਉੱਤਰਯੋਗ ਕੁਐਰੀਆਂ ਦਾ ਸਕੋਰ 0.50 ਤੋਂ ਉੱਪਰ ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਗਾਰਡ ਕਦੇ ਵੀ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਕੱਟ-ਆਫ ਨੂੰ 0.70 ਤੱਕ ਵਧਾਉਣ ਨਾਲ ਸੇਫਟੀ ਮਾਰਜਿਨ ਬਹਾਲ ਹੋ ਜਾਂਦਾ ਹੈ।
  • Hashing-64 – ਉੱਤਰਯੋਗ ਅਤੇ ਅਣਉੱਤਰਯੋਗ ਕੁਐਰੀਆਂ ਦੇ ਸਕੋਰ ਇੰਨੀ ਗੂੜ੍ਹੀ ਤਰ੍ਹਾਂ ਮਿਲੇ ਹੋਏ ਹਨ ਕਿ ਕੋਈ ਵੀ ਸਿੰਗਲ threshold ਉਹਨਾਂ ਨੂੰ ਵੱਖ ਨਹੀਂ ਕਰ ਸਕਦਾ; ਮਾਡਲ similarity guard ਦਾ ਸਮਰਥਨ ਕਰਨ ਲਈ ਬਹੁਤ ਕਮਜ਼ੋਰ ਹੈ।

ਇਹ ਮਾਮਲੇ ਇੱਕ ਵਿਆਪਕ ਸੱਚ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ: ਇੱਕ threshold ਇੱਕ ਵਿਸ਼ੇਸ਼ ਮਾਡਲ-ਡਾਟਾ ਜੋੜ ਨਾਲ ਸਬੰਧਤ ਹੁੰਦਾ ਹੈ, ਨਾ ਕਿ ਇੱਕ ਯੂਨੀਵਰਸਲ ਨਿਯਮ।

The hidden cost of a constant

Similarity thresholds ਕਈ ਡਾਊਨਸਟ੍ਰੀਮ ਟਾਸਕਾਂ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ:

  • semantic caching
  • duplicate detection
  • document relevance checks
  • entity matching

ਇੱਕ ਸਥਿਰ (constant) ਮੁੱਲ ਦੀ ਵਰਤੋਂ ਇਹ ਮੰਨ ਕੇ ਚਲਦੀ ਹੈ ਕਿ ਸਾਰੇ embedding ਮਾਡਲਾਂ ਦਾ ਸਕੋਰ ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਇੱਕੋ ਜਿਹਾ ਹੈ—ਇਹ ਇੱਕ ਖਤਰਨਾਕ ਅਨੁਮਾਨ ਹੈ। ਜਦੋਂ ਇਹ ਅਨੁਮਾਨ ਗਲਤ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਸਿਸਟਮ ਚੁੱਪਚਾਪ ਗਲਤ-ਭਰੋਸੇਮੰਦ (false-confident) ਆਉਟਪੁੱਟ ਪੈਦਾ ਕਰਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਉਪਭੋਗਤਾ ਦਾ ਵਿਸ਼ਵਾਸ ਘਟਦਾ ਹੈ ਅਤੇ ਡਾਊਨਸਟ੍ਰੀਮ ਫੈਸਲਿਆਂ ਨੂੰ ਗਲਤ ਡਾਟਾ ਮਿਲਦਾ ਹੈ।

Calibrating per-model guards

ਇਸ ਦਾ ਹੱਲ ਸਿੱਧਾ ਹੈ: ਕਦੇ ਵੀ ਹਾਰਡ-ਕੋਡਡ ਕੰਸਟੈਂਟ ਸ਼ਿਪ ਨਾ ਕਰੋ। Threshold ਨੂੰ ਇੱਕ hyper-parameter ਵਜੋਂ ਮੰਨੋ ਜਿਸ ਨੂੰ ਹਰ ਨਵੇਂ embedding ਮਾਡਲ ਲਈ ਟਿਊਨ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।

  1. ਇੱਕ ਮਾਮੂਲੀ, ਲੇਬਲਡ ਵੈਲੀਡੇਸ਼ਨ ਸੈੱਟ ਇਕੱਠਾ ਕਰੋ ਜਿਸ ਵਿੱਚ ਉੱਤਰਯੋਗ ਅਤੇ ਅਣਉੱਤਰਯੋਗ ਦੋਵੇਂ ਕੁਐਰੀਆਂ ਸ਼ਾਮਲ ਹੋਣ।
  2. ਟਾਰਗੇਟ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਰੇਕ ਕੁਐਰੀ-ਡੌਕਯੂਮੈਂਟ ਜੋੜ ਲਈ cosine similarities ਦੀ ਗਣਨਾ ਕਰੋ।
  3. ਦੋਵਾਂ ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨਾਂ ਨੂੰ ਪਲੌਟ ਕਰੋ ਜਾਂ false-confident rate ਦੀ ਗਣਨਾ ਕਰੋ—ਉਹ ਅਣਉੱਤਰਯੋਗ ਕੁਐਰੀਆਂ ਦਾ ਅਨੁਪਾਤ ਜੋ ਉਮੀਦਵਾਰ threshold ਤੋਂ ਵੱਧ ਹਨ।
  4. ਸਭ ਤੋਂ ਛੋਟੀ similarity value ਚੁਣੋ ਜੋ false-confident rate ਨੂੰ ਸਵੀਕਾਰਯੋਗ ਜੋਖਮ ਪੱਧਰ ਤੋਂ ਹੇਠਾਂ ਰੱਖਦੀ ਹੈ।

ਕਿਉਂਕਿ ਟੀਚਾ ਅਤਿ-ਆਤਮ-ਵਿਸ਼ਵਾਸ (over-confidence) ਨੂੰ ਰੋਕਣਾ ਹੈ, ਇਸ ਲਈ mean reciprocal rank (MRR) ਵਰਗੇ ਰਵਾਇਤੀ ਰੈਂਕਿੰਗ ਮੈਟ੍ਰਿਕਸ ਕਾਫ਼ੀ ਨਹੀਂ ਹਨ। False-confident rate ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਗਾਰਡ ਦੇ ਅਸਫਲਤਾ ਮੋਡ ਨੂੰ ਮਾਪਦਾ ਹੈ।

Counter-point: “Some models work out of the box”

ਇਹ ਸੱਚ ਹੈ ਕਿ ਕੁਝ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਵਾਲੇ ਮਾਡਲ, ਜਿਵੇਂ ਕਿ ਉਦਾਹਰਨ ਵਿੱਚ Voyage-3, ਮੌਕੇ 'ਤੇ 0.50 ਗਾਰਡ ਦੇ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਹਨ। ਇਹ ਭਵਿੱਖ ਦੀ ਸਥਿਰਤਾ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ। ਮਾਡਲ ਅੱਪਡੇਟ, fine-tuning, ਜਾਂ ਅਸਲ ਕੋਰਪਸ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਵੀ similarity distribution ਨੂੰ ਬਦਲ ਸਕਦੀਆਂ ਹਨ, ਜਿਸ ਨਾਲ ਗਾਰਡ ਦੁਬਾਰਾ ਟੁੱਟ ਸਕਦਾ ਹੈ। ਇੱਕੋ ਕਿਸਮਤ ਵਾਲੇ ਅਲਾਈਨਮੈਂਟ 'ਤੇ ਨਿਰਭਰ ਰਹਿਣਾ ਅਣਗਹਿਲੀ ਨੂੰ ਸੱਦਾ ਦਿੰਦਾ ਹੈ।

What to watch next

-

-

-

Takeaway

Similarity threshold ਕੋਈ ਯੂਨੀਵਰਸਲ ਸੇਫਟੀ ਸਵਿੱਚ ਨਹੀਂ ਹੈ; ਇਹ ਇੱਕ ਮਾਡਲ-ਵਿਸ਼ੇਸ਼ ਗਾਰਡ ਹੈ ਜਿਸ ਨੂੰ ਹਰ ਵਾਰ ਕੈਲੀਬਰੇਟ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ embedding backend ਜਾਂ ਡਾਟਾ ਬਦਲਦੇ ਹੋ। ਇਸ ਤੱਥ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨ ਨਾਲ RAG ਸਿਸਟਮ ਚੁੱਪਚਾਪ hallucination ਵਿੱਚ ਜਾ ਸਕਦੇ ਹਨ, ਜੋ ਗਾਰਡ ਦੇ ਅਸਲ ਉਦੇਸ਼ ਨੂੰ ਹੀ ਖਤਮ ਕਰ ਦਿੰਦਾ ਹੈ। ਅੱਗੇ ਵਧਣ ਦਾ ਇੱਕੋ ਇੱਕ ਭਰੋਸੇਮੰਦ ਰਸਤਾ ਪ੍ਰਤੀ ਮਾਡਲ ਸਿਸਟਮੈਟਿਕ ਕੈਲੀਬ੍ਰੇਸ਼ਨ ਅਤੇ false-confident rate ਦੀ ਨਿਰੰਤਰ ਨਿਗਰਾਨੀ ਹੈ।