diff --git a/src/ragas/metrics/_answer_similarity.py b/src/ragas/metrics/_answer_similarity.py index 09b13de9b..00fd273da 100644 --- a/src/ragas/metrics/_answer_similarity.py +++ b/src/ragas/metrics/_answer_similarity.py @@ -70,7 +70,12 @@ def _score(self, row: t.Dict, callbacks: Callbacks) -> float: embeddings_1 = np.array(self.embeddings.embed_documents(ground_truths)) embeddings_2 = np.array(self.embeddings.embed_documents(answers)) similarity = embeddings_1 @ embeddings_2.T - scores = np.diagonal(similarity) + if similarity.size == 1: + # If similarity has only one value, directly use this value as scores + scores = similarity.flatten() + else: + # If similarity contains multiple values, extract the diagonal as scores + scores = np.diagonal(similarity) assert isinstance(scores, np.ndarray), "Expects ndarray" if self.threshold: @@ -92,7 +97,10 @@ async def _ascore(self: t.Self, row: t.Dict, callbacks: Callbacks = []) -> float ) embeddings_2 = np.array(await self.embeddings.aembed_documents(answers)) similarity = embeddings_1 @ embeddings_2.T - scores = np.diagonal(similarity) + if similarity.size == 1: + scores = similarity.flatten() + else: + scores = np.diagonal(similarity) assert isinstance(scores, np.ndarray), "Expects ndarray" if self.threshold: