Repository: explodinggradients/ragas
Issue: Type mismatch in evaluating from`Dataset`
Root cause: Validation Gap

[ .] I have checked the [documentation](https://docs.ragas.io/) and related resources and couldn't resolve my bug.

**Describe the bug**
The `evaluate()` method takes in a `Dataset` object but raises a `ValueError` because it expects `ds['ground_truth]` to be a string even though it is a list of strings

Ragas version: 0.1.6.dev2+g962d40d
Python version: 3.11

**Code to Reproduce**

This assumes one already has a pandas dataframe for a dataset.
```
from llama_index.core import ServiceContext, VectorStoreIndex, SimpleDirectoryReader
from llama_index.core import set_global_service_context
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.core.schema import TextNode

def create_node(row):
    record = row.to_dict()
    node = TextNode(
        id=str(record["id"]),
        text=record["question"],
        metadata={
            "contexts": record["contexts"],
            "ground_truth": record["ground_truth"],
            "evolution_type": record["evolution_type"],
            "episode_done": record["episode_done"],
            "additional_metadata": record["metadata"]
        },
    )
    return node

nodes = [create_node(row) for _, row in df.iterrows()]
model = HuggingFaceEmbedding(model_name="jinaai/jina-embeddings-v2-base-en")
service_context = ServiceContext.from_defaults(embed_model=model)
index = VectorStoreIndex(nodes, service_context=service_context)

query_engine = index.as_query_engine()

responses = [query_engine.query(q) for q in test_questions]

from datasets import Dataset
answers = []
contexts = []
for r in responses:
    answers.append(r.response)
    contexts.append([c.node.get_content() for c in r.source_nodes])
dataset_dict = {
    "question": test_questions,
    "answer": answers,
    "contexts": contexts,
}
if test_answers is not None:
    dataset_dict["ground_truth"] = test_answers
ds = Dataset.from_dict(dataset_dict)
```

**Error trace**
```
ValueError                                Traceback (most recent call last)
Cell In[38], line 1
----> 1 result = evaluate(
      2     ds,
      3     metrics=metrics,
      4 )
      6 result

File /workspace/ragas/src/ragas/evaluation.py:147, in evaluate(dataset, metrics, llm, embeddings, callbacks, is_async, run_config, raise_exceptions, column_map)
    145 dataset = handle_deprecated_ground_truths(dataset)
    146 validate_evaluation_modes(dataset, metrics)
--> 147 validate_column_dtypes(dataset)
    149 # set the llm and embeddings
    150 if isinstance(llm, LangchainLLM):

File /workspace/ragas/src/ragas/validation.py:46, in validate_column_dtypes(ds)
     44     if column_names in ds.features:
     45         if ds.features[column_names].dtype != "string":
---> 46             raise ValueError(
     47                 f'Dataset feature "{column_names}" should be of type string'
     48             )
     50 for column_names in ["contexts"]:
     51     if column_names in ds.features:

ValueError: Dataset feature "ground_truth" should be of type string
```
**Expected behavior**
For evaluation to run without issues

<!-- 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 🙏. -->


`ds["ground_truth"]` was a list of list of strings, but every element of the list was just the string so simply flattening it solved the issue.