Repository files navigation

HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models

This repository contains the source code for HaloCheck, a component discussed in our research paper titled "HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models."

Code/Package

Installation

To install HaloCheck, use the following pip command:

pip install git+https://github.com/EngSalem/HaLo.git

HaloCheck: A BlackBox Knowledge-Free Hallucination Severity Estimator for LLM Responses

HaloCheck is a tool designed to estimate the severity of hallucinations in Large Language Model (LLM) responses. It operates on the principles of cross entailment and is built upon similar concepts as selfcheckGPT, albeit with some key distinctions.

HaloCheck primarily focuses on assessing hallucination severity at a sentence-level granularity. It evaluates whether an LLM generates consistent information across its various response samples, thereby providing a finer-grained estimation of the severity of hallucinations.

HaloCheck better correlates both (pearson $\rho$ and kendal tau $\tau$) with human annotation of consistency and avergae factuality of the answers compared to selfcheckGPT.

*Note that we developed HaLoCheck around the same time selfcheckGPT added NLI (entailment wasn't part of the original selfcheckGPT). *We take into account all samples and use SummaC which facilitates computing of entailment between two pieces of text. *HaloCheck range is easily interpreted [-1,1] where -1 indicated infactual, 1 factual. The higher the score the more consistent your samples are.

HaloCheck is also faster than all selfcheckGPT measures, and doesn't need LLM calls. Although it's knowledge free, therefore its incapable of identifying consistent inaccuracies.

How to Use HaloCheck

To use HaloCheck in your Python code, follow these steps:

importHaloCheckascheckerinconsistent_samples= [
'The 1958 NBA Finals was played between the St. Louis Hawks and Boston Celtics. The Hawks won the series 4 games to 2 in the best of 7 playoff.',
'The 1958 NBA Finals was played between the Minneapolis Lakers and Boston Celtics and was won by the Lakers 4 games to 3.',
'The 1958 NBA Finals was played on April 17, 1958, between the Boston Celtics and the St. Louis Hawks.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The Celtics won the series 4 games to 2 for their 5th championship.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The MVP of the 1958 NBA Finals was Bill Russell.'
]
scorer=checker.HaloCheck(device='cpu', granularity='sentence', nli_model='mnli') # Change to 'cuda' if a GPU is availableprint(scorer.score(inconsistent_samples))
# Expected score: -0.417 (indicating inconsistency)

THE NBA Question Answering set used is under file

NBAQA.csv

Feel free to modify and adapt the code to suit your specific use case and requirements.


Citation

  • Please cite the following work if you are using any of our ideas or code
@article{elaraby2023halo,
title={Halo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models},
author={Elaraby, Mohamed and Lu, Mengyin and Dunn, Jacob and Zhang, Xueying and Wang, Yu and Liu, Shizhu},
journal={arXiv preprint arXiv:2308.11764},
year={2023}
}

Note: This repository is part of ongoing research, and the tools provided here are subject to further updates and improvements.

About

No description, website, or topics provided.

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models

This repository contains the source code for HaloCheck, a component discussed in our research paper titled "HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models."

Code/Package

Installation

To install HaloCheck, use the following pip command:

pip install git+https://github.com/EngSalem/HaLo.git

HaloCheck: A BlackBox Knowledge-Free Hallucination Severity Estimator for LLM Responses

HaloCheck is a tool designed to estimate the severity of hallucinations in Large Language Model (LLM) responses. It operates on the principles of cross entailment and is built upon similar concepts as selfcheckGPT, albeit with some key distinctions.

HaloCheck primarily focuses on assessing hallucination severity at a sentence-level granularity. It evaluates whether an LLM generates consistent information across its various response samples, thereby providing a finer-grained estimation of the severity of hallucinations.

HaloCheck better correlates both (pearson $\rho$ and kendal tau $\tau$) with human annotation of consistency and avergae factuality of the answers compared to selfcheckGPT.

*Note that we developed HaLoCheck around the same time selfcheckGPT added NLI (entailment wasn't part of the original selfcheckGPT). *We take into account all samples and use SummaC which facilitates computing of entailment between two pieces of text. *HaloCheck range is easily interpreted [-1,1] where -1 indicated infactual, 1 factual. The higher the score the more consistent your samples are.

HaloCheck is also faster than all selfcheckGPT measures, and doesn't need LLM calls. Although it's knowledge free, therefore its incapable of identifying consistent inaccuracies.

How to Use HaloCheck

To use HaloCheck in your Python code, follow these steps:

importHaloCheckascheckerinconsistent_samples= [
'The 1958 NBA Finals was played between the St. Louis Hawks and Boston Celtics. The Hawks won the series 4 games to 2 in the best of 7 playoff.',
'The 1958 NBA Finals was played between the Minneapolis Lakers and Boston Celtics and was won by the Lakers 4 games to 3.',
'The 1958 NBA Finals was played on April 17, 1958, between the Boston Celtics and the St. Louis Hawks.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The Celtics won the series 4 games to 2 for their 5th championship.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The MVP of the 1958 NBA Finals was Bill Russell.'
]
scorer=checker.HaloCheck(device='cpu', granularity='sentence', nli_model='mnli') # Change to 'cuda' if a GPU is availableprint(scorer.score(inconsistent_samples))
# Expected score: -0.417 (indicating inconsistency)

THE NBA Question Answering set used is under file

NBAQA.csv

Feel free to modify and adapt the code to suit your specific use case and requirements.


Citation

  • Please cite the following work if you are using any of our ideas or code
@article{elaraby2023halo,
title={Halo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models},
author={Elaraby, Mohamed and Lu, Mengyin and Dunn, Jacob and Zhang, Xueying and Wang, Yu and Liu, Shizhu},
journal={arXiv preprint arXiv:2308.11764},
year={2023}
}

Note: This repository is part of ongoing research, and the tools provided here are subject to further updates and improvements.

About

No description, website, or topics provided.

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models

This repository contains the source code for HaloCheck, a component discussed in our research paper titled "HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models."

Code/Package

Installation

To install HaloCheck, use the following pip command:

pip install git+https://github.com/EngSalem/HaLo.git

HaloCheck: A BlackBox Knowledge-Free Hallucination Severity Estimator for LLM Responses

HaloCheck is a tool designed to estimate the severity of hallucinations in Large Language Model (LLM) responses. It operates on the principles of cross entailment and is built upon similar concepts as selfcheckGPT, albeit with some key distinctions.

HaloCheck primarily focuses on assessing hallucination severity at a sentence-level granularity. It evaluates whether an LLM generates consistent information across its various response samples, thereby providing a finer-grained estimation of the severity of hallucinations.

HaloCheck better correlates both (pearson $\rho$ and kendal tau $\tau$) with human annotation of consistency and avergae factuality of the answers compared to selfcheckGPT.

*Note that we developed HaLoCheck around the same time selfcheckGPT added NLI (entailment wasn't part of the original selfcheckGPT). *We take into account all samples and use SummaC which facilitates computing of entailment between two pieces of text. *HaloCheck range is easily interpreted [-1,1] where -1 indicated infactual, 1 factual. The higher the score the more consistent your samples are.

HaloCheck is also faster than all selfcheckGPT measures, and doesn't need LLM calls. Although it's knowledge free, therefore its incapable of identifying consistent inaccuracies.

How to Use HaloCheck

To use HaloCheck in your Python code, follow these steps:

importHaloCheckascheckerinconsistent_samples= [
'The 1958 NBA Finals was played between the St. Louis Hawks and Boston Celtics. The Hawks won the series 4 games to 2 in the best of 7 playoff.',
'The 1958 NBA Finals was played between the Minneapolis Lakers and Boston Celtics and was won by the Lakers 4 games to 3.',
'The 1958 NBA Finals was played on April 17, 1958, between the Boston Celtics and the St. Louis Hawks.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The Celtics won the series 4 games to 2 for their 5th championship.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The MVP of the 1958 NBA Finals was Bill Russell.'
]
scorer=checker.HaloCheck(device='cpu', granularity='sentence', nli_model='mnli') # Change to 'cuda' if a GPU is availableprint(scorer.score(inconsistent_samples))
# Expected score: -0.417 (indicating inconsistency)

THE NBA Question Answering set used is under file

NBAQA.csv

Feel free to modify and adapt the code to suit your specific use case and requirements.


Citation

  • Please cite the following work if you are using any of our ideas or code
@article{elaraby2023halo,
title={Halo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models},
author={Elaraby, Mohamed and Lu, Mengyin and Dunn, Jacob and Zhang, Xueying and Wang, Yu and Liu, Shizhu},
journal={arXiv preprint arXiv:2308.11764},
year={2023}
}

Note: This repository is part of ongoing research, and the tools provided here are subject to further updates and improvements.

About

No description, website, or topics provided.

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models

This repository contains the source code for HaloCheck, a component discussed in our research paper titled "HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models."

Code/Package

Installation

To install HaloCheck, use the following pip command:

pip install git+https://github.com/EngSalem/HaLo.git

HaloCheck: A BlackBox Knowledge-Free Hallucination Severity Estimator for LLM Responses

HaloCheck is a tool designed to estimate the severity of hallucinations in Large Language Model (LLM) responses. It operates on the principles of cross entailment and is built upon similar concepts as selfcheckGPT, albeit with some key distinctions.

HaloCheck primarily focuses on assessing hallucination severity at a sentence-level granularity. It evaluates whether an LLM generates consistent information across its various response samples, thereby providing a finer-grained estimation of the severity of hallucinations.

HaloCheck better correlates both (pearson $\rho$ and kendal tau $\tau$) with human annotation of consistency and avergae factuality of the answers compared to selfcheckGPT.

*Note that we developed HaLoCheck around the same time selfcheckGPT added NLI (entailment wasn't part of the original selfcheckGPT). *We take into account all samples and use SummaC which facilitates computing of entailment between two pieces of text. *HaloCheck range is easily interpreted [-1,1] where -1 indicated infactual, 1 factual. The higher the score the more consistent your samples are.

HaloCheck is also faster than all selfcheckGPT measures, and doesn't need LLM calls. Although it's knowledge free, therefore its incapable of identifying consistent inaccuracies.

How to Use HaloCheck

To use HaloCheck in your Python code, follow these steps:

importHaloCheckascheckerinconsistent_samples= [
'The 1958 NBA Finals was played between the St. Louis Hawks and Boston Celtics. The Hawks won the series 4 games to 2 in the best of 7 playoff.',
'The 1958 NBA Finals was played between the Minneapolis Lakers and Boston Celtics and was won by the Lakers 4 games to 3.',
'The 1958 NBA Finals was played on April 17, 1958, between the Boston Celtics and the St. Louis Hawks.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The Celtics won the series 4 games to 2 for their 5th championship.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The MVP of the 1958 NBA Finals was Bill Russell.'
]
scorer=checker.HaloCheck(device='cpu', granularity='sentence', nli_model='mnli') # Change to 'cuda' if a GPU is availableprint(scorer.score(inconsistent_samples))
# Expected score: -0.417 (indicating inconsistency)

THE NBA Question Answering set used is under file

NBAQA.csv

Feel free to modify and adapt the code to suit your specific use case and requirements.


Citation

  • Please cite the following work if you are using any of our ideas or code
@article{elaraby2023halo,
title={Halo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models},
author={Elaraby, Mohamed and Lu, Mengyin and Dunn, Jacob and Zhang, Xueying and Wang, Yu and Liu, Shizhu},
journal={arXiv preprint arXiv:2308.11764},
year={2023}
}

Note: This repository is part of ongoing research, and the tools provided here are subject to further updates and improvements.

About

No description, website, or topics provided.

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models

This repository contains the source code for HaloCheck, a component discussed in our research paper titled "HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models."

Code/Package

Installation

To install HaloCheck, use the following pip command:

pip install git+https://github.com/EngSalem/HaLo.git

HaloCheck: A BlackBox Knowledge-Free Hallucination Severity Estimator for LLM Responses

HaloCheck is a tool designed to estimate the severity of hallucinations in Large Language Model (LLM) responses. It operates on the principles of cross entailment and is built upon similar concepts as selfcheckGPT, albeit with some key distinctions.

HaloCheck primarily focuses on assessing hallucination severity at a sentence-level granularity. It evaluates whether an LLM generates consistent information across its various response samples, thereby providing a finer-grained estimation of the severity of hallucinations.

HaloCheck better correlates both (pearson $\rho$ and kendal tau $\tau$) with human annotation of consistency and avergae factuality of the answers compared to selfcheckGPT.

*Note that we developed HaLoCheck around the same time selfcheckGPT added NLI (entailment wasn't part of the original selfcheckGPT). *We take into account all samples and use SummaC which facilitates computing of entailment between two pieces of text. *HaloCheck range is easily interpreted [-1,1] where -1 indicated infactual, 1 factual. The higher the score the more consistent your samples are.

HaloCheck is also faster than all selfcheckGPT measures, and doesn't need LLM calls. Although it's knowledge free, therefore its incapable of identifying consistent inaccuracies.

How to Use HaloCheck

To use HaloCheck in your Python code, follow these steps:

importHaloCheckascheckerinconsistent_samples= [
'The 1958 NBA Finals was played between the St. Louis Hawks and Boston Celtics. The Hawks won the series 4 games to 2 in the best of 7 playoff.',
'The 1958 NBA Finals was played between the Minneapolis Lakers and Boston Celtics and was won by the Lakers 4 games to 3.',
'The 1958 NBA Finals was played on April 17, 1958, between the Boston Celtics and the St. Louis Hawks.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The Celtics won the series 4 games to 2 for their 5th championship.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The MVP of the 1958 NBA Finals was Bill Russell.'
]
scorer=checker.HaloCheck(device='cpu', granularity='sentence', nli_model='mnli') # Change to 'cuda' if a GPU is availableprint(scorer.score(inconsistent_samples))
# Expected score: -0.417 (indicating inconsistency)

THE NBA Question Answering set used is under file

NBAQA.csv

Feel free to modify and adapt the code to suit your specific use case and requirements.


Citation

  • Please cite the following work if you are using any of our ideas or code
@article{elaraby2023halo,
title={Halo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models},
author={Elaraby, Mohamed and Lu, Mengyin and Dunn, Jacob and Zhang, Xueying and Wang, Yu and Liu, Shizhu},
journal={arXiv preprint arXiv:2308.11764},
year={2023}
}

Note: This repository is part of ongoing research, and the tools provided here are subject to further updates and improvements.

About

No description, website, or topics provided.

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models

This repository contains the source code for HaloCheck, a component discussed in our research paper titled "HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models."

Code/Package

Installation

To install HaloCheck, use the following pip command:

pip install git+https://github.com/EngSalem/HaLo.git

HaloCheck: A BlackBox Knowledge-Free Hallucination Severity Estimator for LLM Responses

HaloCheck is a tool designed to estimate the severity of hallucinations in Large Language Model (LLM) responses. It operates on the principles of cross entailment and is built upon similar concepts as selfcheckGPT, albeit with some key distinctions.

HaloCheck primarily focuses on assessing hallucination severity at a sentence-level granularity. It evaluates whether an LLM generates consistent information across its various response samples, thereby providing a finer-grained estimation of the severity of hallucinations.

HaloCheck better correlates both (pearson $\rho$ and kendal tau $\tau$) with human annotation of consistency and avergae factuality of the answers compared to selfcheckGPT.

*Note that we developed HaLoCheck around the same time selfcheckGPT added NLI (entailment wasn't part of the original selfcheckGPT). *We take into account all samples and use SummaC which facilitates computing of entailment between two pieces of text. *HaloCheck range is easily interpreted [-1,1] where -1 indicated infactual, 1 factual. The higher the score the more consistent your samples are.

HaloCheck is also faster than all selfcheckGPT measures, and doesn't need LLM calls. Although it's knowledge free, therefore its incapable of identifying consistent inaccuracies.

How to Use HaloCheck

To use HaloCheck in your Python code, follow these steps:

importHaloCheckascheckerinconsistent_samples= [
'The 1958 NBA Finals was played between the St. Louis Hawks and Boston Celtics. The Hawks won the series 4 games to 2 in the best of 7 playoff.',
'The 1958 NBA Finals was played between the Minneapolis Lakers and Boston Celtics and was won by the Lakers 4 games to 3.',
'The 1958 NBA Finals was played on April 17, 1958, between the Boston Celtics and the St. Louis Hawks.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The Celtics won the series 4 games to 2 for their 5th championship.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The MVP of the 1958 NBA Finals was Bill Russell.'
]
scorer=checker.HaloCheck(device='cpu', granularity='sentence', nli_model='mnli') # Change to 'cuda' if a GPU is availableprint(scorer.score(inconsistent_samples))
# Expected score: -0.417 (indicating inconsistency)

THE NBA Question Answering set used is under file

NBAQA.csv

Feel free to modify and adapt the code to suit your specific use case and requirements.


Citation

  • Please cite the following work if you are using any of our ideas or code
@article{elaraby2023halo,
title={Halo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models},
author={Elaraby, Mohamed and Lu, Mengyin and Dunn, Jacob and Zhang, Xueying and Wang, Yu and Liu, Shizhu},
journal={arXiv preprint arXiv:2308.11764},
year={2023}
}

Note: This repository is part of ongoing research, and the tools provided here are subject to further updates and improvements.

About

No description, website, or topics provided.

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models

This repository contains the source code for HaloCheck, a component discussed in our research paper titled "HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models."

Code/Package

Installation

To install HaloCheck, use the following pip command:

pip install git+https://github.com/EngSalem/HaLo.git

HaloCheck: A BlackBox Knowledge-Free Hallucination Severity Estimator for LLM Responses

HaloCheck is a tool designed to estimate the severity of hallucinations in Large Language Model (LLM) responses. It operates on the principles of cross entailment and is built upon similar concepts as selfcheckGPT, albeit with some key distinctions.

HaloCheck primarily focuses on assessing hallucination severity at a sentence-level granularity. It evaluates whether an LLM generates consistent information across its various response samples, thereby providing a finer-grained estimation of the severity of hallucinations.

HaloCheck better correlates both (pearson $\rho$ and kendal tau $\tau$) with human annotation of consistency and avergae factuality of the answers compared to selfcheckGPT.

*Note that we developed HaLoCheck around the same time selfcheckGPT added NLI (entailment wasn't part of the original selfcheckGPT). *We take into account all samples and use SummaC which facilitates computing of entailment between two pieces of text. *HaloCheck range is easily interpreted [-1,1] where -1 indicated infactual, 1 factual. The higher the score the more consistent your samples are.

HaloCheck is also faster than all selfcheckGPT measures, and doesn't need LLM calls. Although it's knowledge free, therefore its incapable of identifying consistent inaccuracies.

How to Use HaloCheck

To use HaloCheck in your Python code, follow these steps:

importHaloCheckascheckerinconsistent_samples= [
'The 1958 NBA Finals was played between the St. Louis Hawks and Boston Celtics. The Hawks won the series 4 games to 2 in the best of 7 playoff.',
'The 1958 NBA Finals was played between the Minneapolis Lakers and Boston Celtics and was won by the Lakers 4 games to 3.',
'The 1958 NBA Finals was played on April 17, 1958, between the Boston Celtics and the St. Louis Hawks.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The Celtics won the series 4 games to 2 for their 5th championship.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The MVP of the 1958 NBA Finals was Bill Russell.'
]
scorer=checker.HaloCheck(device='cpu', granularity='sentence', nli_model='mnli') # Change to 'cuda' if a GPU is availableprint(scorer.score(inconsistent_samples))
# Expected score: -0.417 (indicating inconsistency)

THE NBA Question Answering set used is under file

NBAQA.csv

Feel free to modify and adapt the code to suit your specific use case and requirements.


Citation

  • Please cite the following work if you are using any of our ideas or code
@article{elaraby2023halo,
title={Halo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models},
author={Elaraby, Mohamed and Lu, Mengyin and Dunn, Jacob and Zhang, Xueying and Wang, Yu and Liu, Shizhu},
journal={arXiv preprint arXiv:2308.11764},
year={2023}
}

Note: This repository is part of ongoing research, and the tools provided here are subject to further updates and improvements.

About

No description, website, or topics provided.

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models

This repository contains the source code for HaloCheck, a component discussed in our research paper titled "HaLo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models."

Code/Package

Installation

To install HaloCheck, use the following pip command:

pip install git+https://github.com/EngSalem/HaLo.git

HaloCheck: A BlackBox Knowledge-Free Hallucination Severity Estimator for LLM Responses

HaloCheck is a tool designed to estimate the severity of hallucinations in Large Language Model (LLM) responses. It operates on the principles of cross entailment and is built upon similar concepts as selfcheckGPT, albeit with some key distinctions.

HaloCheck primarily focuses on assessing hallucination severity at a sentence-level granularity. It evaluates whether an LLM generates consistent information across its various response samples, thereby providing a finer-grained estimation of the severity of hallucinations.

HaloCheck better correlates both (pearson $\rho$ and kendal tau $\tau$) with human annotation of consistency and avergae factuality of the answers compared to selfcheckGPT.

*Note that we developed HaLoCheck around the same time selfcheckGPT added NLI (entailment wasn't part of the original selfcheckGPT). *We take into account all samples and use SummaC which facilitates computing of entailment between two pieces of text. *HaloCheck range is easily interpreted [-1,1] where -1 indicated infactual, 1 factual. The higher the score the more consistent your samples are.

HaloCheck is also faster than all selfcheckGPT measures, and doesn't need LLM calls. Although it's knowledge free, therefore its incapable of identifying consistent inaccuracies.

How to Use HaloCheck

To use HaloCheck in your Python code, follow these steps:

importHaloCheckascheckerinconsistent_samples= [
'The 1958 NBA Finals was played between the St. Louis Hawks and Boston Celtics. The Hawks won the series 4 games to 2 in the best of 7 playoff.',
'The 1958 NBA Finals was played between the Minneapolis Lakers and Boston Celtics and was won by the Lakers 4 games to 3.',
'The 1958 NBA Finals was played on April 17, 1958, between the Boston Celtics and the St. Louis Hawks.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The Celtics won the series 4 games to 2 for their 5th championship.',
'The 1958 NBA Finals was played between the Boston Celtics and Minneapolis Lakers. The MVP of the 1958 NBA Finals was Bill Russell.'
]
scorer=checker.HaloCheck(device='cpu', granularity='sentence', nli_model='mnli') # Change to 'cuda' if a GPU is availableprint(scorer.score(inconsistent_samples))
# Expected score: -0.417 (indicating inconsistency)

THE NBA Question Answering set used is under file

NBAQA.csv

Feel free to modify and adapt the code to suit your specific use case and requirements.


Citation

  • Please cite the following work if you are using any of our ideas or code
@article{elaraby2023halo,
title={Halo: Estimation and Reduction of Hallucinations in Open-Source Weak Large Language Models},
author={Elaraby, Mohamed and Lu, Mengyin and Dunn, Jacob and Zhang, Xueying and Wang, Yu and Liu, Shizhu},
journal={arXiv preprint arXiv:2308.11764},
year={2023}
}

Note: This repository is part of ongoing research, and the tools provided here are subject to further updates and improvements.

About

No description, website, or topics provided.

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages