Repository: explodinggradients/ragas
Issue: `FaithfulnesswithHHEM` doesn't match original prompt, leading to inconsistent scores
Root cause: Interface Contract Mismatch

[x] I have checked the [documentation](https://docs.ragas.io/) and related resources and couldn't resolve my bug.

**Describe the bug**
`FaithfulnesswithHHEM` class for the faithfulness metric (using [Vectara's](https://huggingface.co/vectara/hallucination_evaluation_model) model) doesn't lead to the same scores when compared with running the original implementation (on HF).

I've figured 2 reasons for this mismatch:
1. HHEM doesn't expect the response/answer to be simplified (as is being done [here](https://github.com/explodinggradients/ragas/blob/main/src/ragas/metrics/_faithfulness.py#L230))
2. HHEM expects the input prompt to conform to [this](https://huggingface.co/vectara/hallucination_evaluation_model/blob/main/configuration_hhem_v2.py#L6) template which is missing.
3. RAGAS also expects the response/answer to be sentences (i.e. ending with ".", etc, [here](https://github.com/AshishSardana/ragas/blob/main/src/ragas/metrics/_faithfulness.py#L225)), which is not relevant to this particular issue but some datasets (popular [Halubench](https://huggingface.co/datasets/PatronusAI/HaluBench)) doesn't fulfill this requirement, which leads to answer --> "", thus score becomes 0.

Ragas version: 0.2.4 (latest)
Python version: 3.10

**Code to Reproduce**
```py
# with RAGAS
from ragas.metrics import FaithfulnesswithHHEM
from ragas import evaluate

data = {
        'user_input': ["president of united states"],
        'response': ["donald trump"].tolist(),
        'retrieved_contexts': [["current president of united states -- joe biden, president for the next term -- donald trump"]]
    }
ragas_dataset = Dataset.from_dict(data)
default_ragas_scores = evaluate(
    ragas_dataset,
    metrics=[FaithfulnesswithHHEM]
)
print(default_ragas_scores['faithfulness_with_hhem'])

# with HF
from transformers import AutoModelForSequenceClassification
hhem = AutoModelForSequenceClassification.from_pretrained('vectara/hallucination_evaluation_model', trust_remote_code=True)

test_data = list(zip((data['retrieved_contexts'] + data['user_input']), data['response']))
hhem_predictions = hhem.predict(test_data).tolist()

print(hhem_predictions[0])
```

**Error trace**
No error

**Expected behavior**
I expect both the scores to be the same i.e. RAGAS implementation of HHEM resulting in same score as HHEM's original implementation on HF.


<!-- PS: bugs suck but is also part of the process. We sincerely apologies for breaking your flow because of it, but don't worry, we got your back ❤️. We will get this fixed as fast as we can and thanks for helping us out by reporting it 🙏. -->


Hi @jjmachan, is there anything I can share to make it easy to verify this bug? I can raise a PR to bring RAGAS's HHEM implementation closer to Vectara's once the team validates this issue.

Hey, this is an interesting observation.  In Ragas faithfulness follow this formula as described in [here](https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/faithfulness/?h=faith#faithfulness). We integrated the HHEM model to use it as the model that makes the natural language inference. Moreover, If I understand it correctly HHEM model is trained on (premise, hypothesis) pairs, hence it would be best to present the hypothesis (ie claims in ragas) to the HHEM model instead of giving the full response at one. 

It seems the issue was answered, closing this now.