vectara/hallucination_evaluation_model
vectara
Clasificación de texto
HHEM-2.1-Open es una importante actualización del HHEM-1.0-Open creada por Vectara en noviembre de 2023. La serie de modelos HHEM está diseñada para detectar alucinaciones en LLMs. Son particularmente útiles en el contexto de la creación de aplicaciones de generación aumentada por recuperación (RAG) donde un conjunto de hechos es resumido por un LLM, y HHEM se puede usar para medir el grado en que este resumen es consistentemente factual con los hechos.
Como usar
Usando con AutoModel
from transformers import AutoModelForSequenceClassification
pairs = [
('The capital of France is Berlin.', 'The capital of France is Paris.'),
('I am in California', 'I am in United States.'),
('I am in United States', 'I am in California.'),
('A person on a horse jumps over a broken down airplane.', 'A person is outdoors, on a horse.'),
('A boy is jumping on skateboard in the middle of a red bridge.', 'The boy skates down the sidewalk on a red bridge'),
('A man with blond-hair, and a brown shirt drinking out of a public water fountain.', 'A blond man wearing a brown shirt is reading a book.'),
('Mark Wahlberg was a fan of Manny.', 'Manny was a fan of Mark Wahlberg.')
]
# Paso 1: Cargar el modelo
model = AutoModelForSequenceClassification.from_pretrained(
'vectara/hallucination_evaluation_model', trust_remote_code=True
)
# Paso 2: Usar el modelo para predecir
model.predict(pairs) # note the predict() method. Do not do model(pairs).
# tensor([0.0111, 0.6474, 0.1290, 0.8969, 0.1846, 0.0050, 0.0543])
Usando con pipeline
from transformers import pipeline, AutoTokenizer
pairs = [
('The capital of France is Berlin.', 'The capital of France is Paris.'),
('I am in California', 'I am in United States.'),
('I am in United States', 'I am in California.'),
('A person on a horse jumps over a broken down airplane.', 'A person is outdoors, on a horse.'),
('A boy is jumping on skateboard in the middle of a red bridge.', 'The boy skates down the sidewalk on a red bridge'),
('A man with blond-hair, and a brown shirt drinking out of a public water fountain.', 'A blond man wearing a brown shirt is reading a book.'),
('Mark Wahlberg was a fan of Manny.', 'Manny was a fan of Mark Wahlberg.')
]
# Preparar los pares
prompt = " Determine if the hypothesis is true given the premise?\n\nPremise: {text1}\n\nHypothesis: {text2}"
input_pairs = [prompt.format(text1=pair[0], text2=pair[1]) for pair in pairs]
# Usar pipeline de clasificación de texto para predecir
classifier = pipeline(
'text-classification',
model='vectara/hallucination_evaluation_model',
tokenizer=AutoTokenizer.from_pretrained('google/flan-t5-base'),
trust_remote_code=True
)
full_scores = classifier(input_pairs, top_k=None) # List[List[Dict[str, float]]]
# Opcional: extraer las puntuaciones para la etiqueta 'consistent'
simple_scores = [score_dict['score'] for score_for_both_labels in full_scores for score_dict in score_for_both_labels if score_dict['label'] == 'consistent']
print(simple_scores)
# Expected output: [0.011061512865126133, 0.6473632454872131, 0.1290171593427658, 0.8969419002532959, 0.18462494015693665, 0.005031010136008263, 0.05432349815964699]
Funcionalidades
- HHEM-2.1-Open muestra una mejora significativa sobre HHEM-1.0.
- HHEM-2.1-Open supera a GPT-3.5-Turbo e incluso a GPT-4.
- HHEM-2.1-Open se puede ejecutar en hardware de grado de consumo, ocupando menos de 600MB de espacio de RAM a 32-bit de precisión y demorando alrededor de 1.5 segundos para una entrada de 2k tokens en una CPU moderna x86.
- HHEM-2.1-Open introduce cambios que rompen con la versión anterior. Por favor, actualice su código.
- Cuenta con una longitud de contexto ilimitada en comparación con los 512 tokens de HHEM-1.0, lo que permite una detección más precisa de alucinaciones.
Casos de uso
- Detección de alucinaciones en modelos LLM
- Aplicaciones RAG donde se requiere detectar la consistencia factual de los resúmenes generados
- Detección de alucinaciones asimétricas o no conmutativas