モデル概要
モデル特徴
モデル能力
使用事例
🚀 HHEM-2.1-Open
HHEM-2.1-Openは、LLMにおける幻覚を検出するために設計されたモデルです。HHEM-1.0に比べて大幅な改善が見られ、GPT-3.5-TurboやGPT-4を上回る性能を発揮します。また、消費者向けハードウェアでも実行可能で、メモリ使用量が少なく、高速に推論できます。
🚀 クイックスタート
HHEM-2.1-Openは、2023年11月にVectaraによって作成されたHHEM-1.0-Openの大幅なアップグレード版です。HHEMモデルシリーズは、LLMにおける幻覚を検出するために設計されています。特に、検索拡張生成(RAG)アプリケーションを構築する際に有用で、LLMによって要約された一連の事実が、元の事実とどの程度一致しているかを測定することができます。
もし、RAGについてもっと学びたい、またはVectaraを試してみたい場合は、こちらからVectaraアカウントにサインアップできます。
コードを書かずにブラウザからHHEM-2.1-Openを試す
⚠️ 重要提示
HHEM-2.1-Openは、使用方法に破壊的な変更を導入しています。以下の新しい使用方法に従ってコードを更新してください。HuggingFaceの推論エンドポイントとの互換性を確保するために取り組んでいます。ご不便をおかけして申し訳ありません。
✨ 主な機能
- HHEM-2.1-Openは、HHEM-1.0に比べて大幅な改善を示しています。
- HHEM-2.1-Openは、GPT-3.5-TurboやGPT-4を上回る性能を発揮します。
- HHEM-2.1-Openは、消費者向けハードウェアで実行可能で、32ビット精度で600MB未満のRAM領域を占有し、最新のx86 CPUで2kトークンの入力に約1.5秒で推論できます。
📚 ドキュメント
幻覚検出の基本
「幻覚」または「事実と一致しない」とは、あるテキスト(判断対象の仮説)が別のテキスト(証拠または前提)によって支持されていないことを意味します。あるテキストが幻覚であるかどうかを判断するには、常に2つのテキストが必要です。RAG(検索拡張生成)に適用する場合、LLMにはあるデータセットから検索されたいくつかのテキスト(通常は事実またはコンテキストと呼ばれます)が提供され、幻覚は要約(仮説)がそれらの事実(証拠)によって支持されていないことを示します。
RAGにおける一般的な幻覚のタイプは、事実的であるが幻覚的です。 例えば、前提が "フランスの首都はベルリンです" の場合、仮説 "フランスの首都はパリです" は幻覚的です。これは、世界の知識では真実ですが、RAG検索プロセスの一部としてLLMに提供されたテキストデータに基づいて生成されていないためです。
さらに、幻覚検出は「非対称」または交換可能ではありません。例えば、前提が "私はアイオワ州にいます" の場合、仮説 "私はアメリカ合衆国にいます" は幻覚的ではありませんが、逆の場合は幻覚的です。
HHEM-2.1-Openの使用方法
⚠️ 重要提示
HHEM-2.1は、HHEM-1.0から破壊的な変更を導入しています。HHEM-1(2023年11月版)で動作するコードは、もはや動作しません。下位互換性を確保するために取り組んでいますが、以下の新しい使用方法に従ってください。
💡 使用建议
「トークンインデックスシーケンスの長さが指定された最大シーケンス長よりも長い」という警告メッセージが表示される場合があります。これは、基盤となるT5-baseから引き継がれたものであるため、無視してください。
基本的な使用法
AutoModel
を使用する場合
これは、HHEM-2.1-Openを使用する最もエンドツーエンドで即座に使える方法です。この方法では、(前提, 仮説)のペアのリストを入力として受け取り、各ペアに対して0から1までのスコアを返します。ここで、0は仮説が前提によってまったく支持されていないことを意味し、1は仮説が前提によって完全に支持されていることを意味します。
from transformers import AutoModelForSequenceClassification
pairs = [ # Test data, List[Tuple[str, str]]
("The capital of France is Berlin.", "The capital of France is Paris."), # factual but hallucinated
('I am in California', 'I am in United States.'), # Consistent
('I am in United States', 'I am in California.'), # Hallucinated
("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.")
]
# Step 1: Load the model
model = AutoModelForSequenceClassification.from_pretrained(
'vectara/hallucination_evaluation_model', trust_remote_code=True)
# Step 2: Use the model to predict
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])
pipeline
を使用する場合
transformers
ライブラリの人気のあるpipeline
クラスでは、モデルを訓練したプロンプトテンプレートを使用してデータを手動で準備する必要があります。HHEM-2.1-Openには2つの出力ニューロンがあり、それぞれhallucinated
とconsistent
のラベルに対応しています。以下の例では、pipeline
に両方のラベルのスコアを返すように要求し(top_k=None
に設定することで、以前はreturn_all_scores=True
)、その後consistent
ラベルのスコアを抽出します。
from transformers import pipeline, AutoTokenizer
pairs = [ # Test data, List[Tuple[str, str]]
("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.")
]
# Prompt the pairs
prompt = "<pad> 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]
# Use text-classification pipeline to predict
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]]]
# Optional: Extract the scores for the 'consistent' label
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]
もちろん、pipeline
を使用する場合、top_k=1
に設定することで、最も可能性の高いラベル、つまり最も高いスコアを持つラベルを取得することもできます。
HHEM-2.1-OpenとHHEM-1.0の比較
HHEM-2.1-Openと元のHHEM-1.0の主な違いは、HHEM-2.1-Openのコンテキスト長が無制限であるのに対し、HHEM-1.0は512トークンに制限されていることです。より長いコンテキスト長により、HHEM-2.1-OpenはRAGにおける幻覚検出をより正確に行うことができます。RAGでは、多くの場合512トークン以上のコンテキストが必要です。
以下の表は、AggreFactとRAGTruthのベンチマークにおける2つのモデル、およびGPT-3.5-TurboとGPT-4の比較を示しています。特に、AggreFactについては、GoogleのT5、MetaのBART、およびGoogleのPegasusによって生成された要約を含むSOTAサブセット(AggreFact-SOTA
と表記)に焦点を当てています。RAGTruthの要約(RAGTruth-Summ
と表記)とQA(RAGTruth-QA
と表記)のサブセットの結果は、それぞれ別々に報告されています。GPT-3.5-TurboとGPT-4のバージョンは、それぞれ01-25と06-13です。2つのGPTモデルのゼロショット結果は、この論文のプロンプトテンプレートを使用して取得されました。
表1: AggreFact-SOTAにおける性能
モデル | バランス精度 | F1値 | 再現率 | 適合率 |
---|---|---|---|---|
HHEM-1.0 | 78.87% | 90.47% | 70.81% | 67.27% |
HHEM-2.1-Open | 76.55% | 66.77% | 68.48% | 65.13% |
GPT-3.5-Turboゼロショット | 72.19% | 60.88% | 58.48% | 63.49% |
GPT-4 06-13ゼロショット | 73.78% | 63.87% | 53.03% | 80.28% |
表2: RAGTruth-Summにおける性能
モデル | バランス精度 | F1値 | 再現率 | 適合率 |
---|---|---|---|---|
HHEM-1.0 | 53.36% | 15.77% | 9.31% | 51.35% |
HHEM-2.1-Open | 64.42% | 44.83% | 31.86% | 75.58% |
GPT-3.5-Turboゼロショット | 58.49% | 29.72% | 18.14% | 82.22% |
GPT-4 06-13ゼロショット | 62.62% | 40.59% | 26.96% | 82.09% |
表3: RAGTruth-QAにおける性能
モデル | バランス精度 | F1値 | 再現率 | 適合率 |
---|---|---|---|---|
HHEM-1.0 | 52.58% | 19.40% | 16.25% | 24.07% |
HHEM-2.1-Open | 74.28% | 60.00% | 54.38% | 66.92% |
GPT-3.5-Turboゼロショット | 56.16% | 25.00% | 18.13% | 40.28% |
GPT-4 06-13ゼロショット | 74.11% | 57.78% | 56.88% | 58.71% |
上記の表は、HHEM-2.1-OpenがRAGTruth-SummとRAGTruth-QAのベンチマークにおいてHHEM-1.0に比べて大幅な改善を示している一方、AggreFact-SOTAのベンチマークではわずかに低下していることを示しています。ただし、これらの結果を解釈する際には、AggreFact-SOTAは比較的古いタイプのLLMで評価されていることに注意してください。
- AggreFact-SOTAのLLM: T5、BART、およびPegasus;
- RAGTruthのLLM: GPT-4-0613、GPT-3.5-turbo-0613、Llama-2-7B/13B/70B-chat、およびMistral-7B-instruct。
HHEM-2.1-OpenとGPT-3.5-TurboおよびGPT-4の比較
上記の表から、HHEM-2.1-Openがすべての3つのベンチマークにおいてGPT-3.5-TurboとGPT-4を上回っていることがわかります。HHEM-2.1-OpenがGPT-3.5-TurboおよびGPT-4に対して持つ定量的な優位性は、以下の表4にまとめられています。
表4: HHEM-2.1-Openのバランス精度がGPT-3.5-TurboおよびGPT-4を上回るパーセンテージポイント
AggreFact-SOTA | RAGTruth-Summ | RAGTruth-QA | |
---|---|---|---|
HHEM-2.1-Open 上回り GPT-3.5-Turbo | 4.36% | 5.93% | 18.12% |
HHEM-2.1-Open 上回り GPT-4 | 2.64% | 1.80% | 0.17% |
HHEM-2.1-Openのもう1つの利点は、その効率性です。HHEM-2.1-Openは、消費者向けハードウェアで実行可能で、32ビット精度で600MB未満のRAM領域を占有し、最新のx86 CPUで2kトークンの入力に約1.5秒で推論できます。
HHEM-2.1: HHEM-2.1-Openのより強力なプロプライエタリ版
名前から察することができるように、HHEM-2.1-Openはプレミアム版のHHEM-2.1のオープンソースバージョンです。HHEM-2.1(-Open
が付かない方)は、VectaraのRAG-as-a-serviceプラットフォームを通じてのみ提供されます。HHEM-2.1とHHEM-2.1-Openの主な違いは、HHEM-2.1が英語、ドイツ語、フランス語の3つの言語に対応したクロスリンガルであるのに対し、HHEM-2.1-Openは英語のみに対応していることです。「クロスリンガル」とは、3つの言語の任意の組み合わせを意味します。例えば、ドイツ語のドキュメント、英語のクエリ、フランス語の結果などです。
なぜVectaraでRAGを使用するのか?
Vectaraは、信頼できる生成AIプラットフォームを提供しています。このプラットフォームにより、組織は自らが持つデータ、ドキュメント、および知識に基づいたAIアシスタント体験を迅速に作成することができます。VectaraのサーバーレスRAG-as-a-Serviceは、企業が採用する際に必要な重要な問題も解決します。具体的には、幻覚を減らし、説明可能性/出所を提供し、アクセス制御を強化し、知識のリアルタイム更新を可能にし、大規模言語モデルからの知的財産/バイアスの懸念を軽減します。
HHEM-2.1の恩恵を受け始めるには、こちらからVectaraアカウントにサインアップしてください。すると、すべてのクエリに対して自動的にHHEM-2.1のスコアが返されます。
以下は、追加のリソースです。
- VectaraのAPIドキュメント。
- Forrestの
vektara
パッケージを使用したクイックスタート。 - VectaraのBoomerang埋め込みモデル、Slingshotリランカー、およびMockingbird LLMについてもっと学ぶ。
LLM幻覚リーダーボード
このモデルを使用して最新のテスト結果を最新のままに保ち、トップのLLMモデルを評価したい場合は、定期的に更新される公開リーダーボードがあり、結果はGitHubリポジトリでも入手できます。
📄 ライセンス
このモデルは、Apache 2.0ライセンスの下で提供されています。
このモデルを引用する場合
@misc {hhem-2.1-open,
author = {Forrest Bao and Miaoran Li and Rogger Luo and Ofer Mendelevitch},
title = {{HHEM-2.1-Open}},
year = 2024,
url = { https://huggingface.co/vectara/hallucination_evaluation_model },
doi = { 10.57967/hf/3240 },
publisher = { Hugging Face }
}



