aidial-rag-eval 0.6.0.dev14__tar.gz → 0.6.0.dev16__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/PKG-INFO +1 -1
  2. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/pyproject.toml +1 -1
  3. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/inference.py +40 -14
  4. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/LICENSE +0 -0
  5. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/README.md +0 -0
  6. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/__init__.py +0 -0
  7. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/dataframe/__init__.py +0 -0
  8. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/dataframe/match_facts.py +0 -0
  9. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/dataframe/merge.py +0 -0
  10. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/dataframe/metrics.py +0 -0
  11. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/dataset.py +0 -0
  12. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/evaluate.py +0 -0
  13. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/facts/__init__.py +0 -0
  14. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/facts/citation.py +0 -0
  15. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/facts/exact.py +0 -0
  16. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/facts/match_str_facts.py +0 -0
  17. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/__init__.py +0 -0
  18. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/metric_binds.py +0 -0
  19. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/__init__.py +0 -0
  20. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/converters/__init__.py +0 -0
  21. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/converters/base_converter.py +0 -0
  22. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/converters/decontextualization_template.py +0 -0
  23. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/converters/llm_decontextualization_converter.py +0 -0
  24. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/inference_scorers/__init__.py +0 -0
  25. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/inference_scorers/base_inference_scorer.py +0 -0
  26. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/inference_scorers/inference_template.py +0 -0
  27. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/inference_scorers/llm_inference_scorer.py +0 -0
  28. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/lambdas.py +0 -0
  29. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/refusal_detectors/__init__.py +0 -0
  30. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/refusal_detectors/base_refusal_detector.py +0 -0
  31. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/refusal_detectors/llm_refusal_detector.py +0 -0
  32. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/refusal_detectors/refusal_template.py +0 -0
  33. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/statement_extractor/__init__.py +0 -0
  34. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/statement_extractor/base_statement_extractor.py +0 -0
  35. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/statement_extractor/llm_statement_extractor.py +0 -0
  36. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/models/statement_extractor/statement_extractor_template.py +0 -0
  37. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/refusal.py +0 -0
  38. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/types.py +0 -0
  39. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/utils/__init__.py +0 -0
  40. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/utils/exceptions.py +0 -0
  41. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/utils/progress_bar.py +0 -0
  42. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/generation/utils/segmented_text.py +0 -0
  43. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/metric_binds.py +0 -0
  44. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/metrics.py +0 -0
  45. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/retrieval/__init__.py +0 -0
  46. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/retrieval/metrics.py +0 -0
  47. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/retrieval/types.py +0 -0
  48. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/types.py +0 -0
  49. {aidial_rag_eval-0.6.0.dev14 → aidial_rag_eval-0.6.0.dev16}/src/aidial_rag_eval/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aidial-rag-eval
3
- Version: 0.6.0.dev14
3
+ Version: 0.6.0.dev16
4
4
  Summary: Library for RAG evaluation
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "aidial-rag-eval"
3
- version = "0.6.0.dev14"
3
+ version = "0.6.0.dev16"
4
4
  description = "Library for RAG evaluation"
5
5
  authors = ["EPAM RAIL <SpecialEPM-DIALDevTeam@epam.com>"]
6
6
  homepage = "https://github.com/epam/ai-dial-rag-eval"
@@ -440,6 +440,42 @@ def infer_statements(
440
440
  )
441
441
 
442
442
 
443
+ def _aggregate_segment_inferences(
444
+ grouped_data_item: List[Tuple[InferenceInputs, InferenceScore]],
445
+ ) -> Tuple[float, float, float]:
446
+ """Returns (inference, min_possible_inference, max_possible_inference).
447
+
448
+ Four cases:
449
+ 1. No errors, statements present: inference = weighted mean of segment inferences,
450
+ weighted by statement count.
451
+ 2. No errors, 0 statements total: inference=0.0, min=0.0, max=0.0.
452
+ 3. Pre-inference failure — decontextualization/statement extraction error:
453
+ inference=nan, min=0.0, max=1.0.
454
+ 4. Inference-stage errors only: inference=nan, min/max derived by substituting 0/1 for
455
+ failed segments.
456
+ """
457
+ if any(inputs.error is not None for inputs, _ in grouped_data_item):
458
+ return math.nan, 0.0, 1.0
459
+ total_statements = sum(len(inputs.statements) for inputs, _ in grouped_data_item)
460
+ if total_statements == 0:
461
+ return 0.0, 0.0, 0.0
462
+ inferences = np.array(
463
+ [score.inference for _, score in grouped_data_item], dtype=float
464
+ )
465
+ weights = np.array(
466
+ [float(len(inputs.statements)) for inputs, _ in grouped_data_item],
467
+ dtype=float,
468
+ )
469
+ inference = float(np.average(inferences, weights=weights))
470
+ min_possible = float(
471
+ np.average(np.nan_to_num(inferences, nan=0.0), weights=weights)
472
+ )
473
+ max_possible = float(
474
+ np.average(np.nan_to_num(inferences, nan=1.0), weights=weights)
475
+ )
476
+ return inference, min_possible, max_possible
477
+
478
+
443
479
  def calculate_batch_inference(
444
480
  premises: List[Premise],
445
481
  hypotheses: List[Hypothesis],
@@ -518,24 +554,14 @@ def calculate_batch_inference(
518
554
  inference_returns: List[InferenceReturn] = []
519
555
  for hypothesis_index, grouped_data_item in enumerate(grouped_data_list):
520
556
  segmented_text = segmented_hypotheses[hypothesis_index]
521
- inferences = [score.inference for _, score in grouped_data_item]
557
+ assert not isinstance(segmented_text, ErrorInfo)
558
+ mean_inference, min_possible_inference, max_possible_inference = (
559
+ _aggregate_segment_inferences(grouped_data_item)
560
+ )
522
561
  errors = [
523
562
  score.error.error_repr if score.error else None
524
563
  for _, score in grouped_data_item
525
564
  ]
526
- mean_inference = (
527
- math.nan
528
- if any(math.isnan(inference) for inference in inferences)
529
- else float(np.mean(cast(List[float], inferences)))
530
- )
531
- # fill Nones with 0.0
532
- min_possible_inference = float(
533
- np.nan_to_num(np.array(inferences, dtype=float), nan=0.0).mean()
534
- )
535
- # fill Nones with 1.0
536
- max_possible_inference = float(
537
- np.nan_to_num(np.array(inferences, dtype=float), nan=1.0).mean()
538
- )
539
565
  inference_returns.append(
540
566
  InferenceReturn(
541
567
  inference=mean_inference,