所有文章 > 日积月累 > 基于 Baichuan4 的 RAG 系统:探索检索增强生成的创新范式
基于 Baichuan4 的 RAG 系统:探索检索增强生成的创新范式

基于 Baichuan4 的 RAG 系统:探索检索增强生成的创新范式

研究背景

大语言模型(LLMs)的现状与问题

大语言模型(LLMs)在自然语言处理领域展现出了显著的能力,然而,它们也面临着一些挑战。首先是遗忘长尾知识的问题,大语言模型倾向于记住常见的信息,而对长尾知识的掌握较差。其次,提供过时知识是另一个难题,模型可能会使用训练时的信息而不是最新的数据。此外,LLMs还会产生幻觉,生成不符合事实的内容,这些问题限制了它们的应用。

RAG 的作用与现状

检索增强生成(RAG)是一种通过检索系统获取外部知识来增强大语言模型的方法,已经被证明有效缓解了LLMs的幻觉问题。RAG系统通常通过网络搜索引擎进行检索,然后将检索到的内容输入到大语言模型中以增强生成能力。然而,传统的RAG系统多使用纯文本作为知识格式,导致在转换过程中丢失了HTML中的结构和语义信息。

图片

HTML 作为外部知识格式的优势与挑战

HTML格式的文档保留了文档的结构信息和语义信息,因此在RAG中使用HTML格式可以提供更丰富的信息。尽管如此,HTML格式也带来了一些挑战,例如处理更长的输入序列以及去除HTML中的噪声内容,如CSS和JavaScript。

HtmlRAG:一种新范式

整体思路

HtmlRAG是一种使用HTML代替纯文本作为RAG系统中检索知识格式的新范式。通过保留HTML文档的语义和结构信息,HtmlRAG可以提供更准确的生成能力。这一方法通过HTML清洗和修剪来解决HTML带来的噪声问题。

HTML清洗

HTML清洗的目的是去除不必要的内容,如CSS、JavaScript以及冗长的HTML标签属性,同时保留HTML标签提供的结构信息。通过这一过程,HtmlRAG能够减少无意义的内容,提高信息的准确性。

粒度可调的块树构建

HtmlRAG通过构建块树,将所有检索到的HTML文档连接并解析为DOM树。块树的构建允许通过合并子节点来控制粒度,以适应不同的修剪需求。这个过程大大减少了计算成本,同时保留了关键的语义信息。

图片

实验分析

实验设置

HtmlRAG在ASQA、HotPotQA等六个问答数据集上进行了测试。实验评估指标包括Exact Match、Hit@1等。实验环境使用了Llama – 3.1 – 70B – Instruct和Llama – 3.1 – 8B – Instruct,以确保实验的全面性。

实验结果

实验结果显示,HtmlRAG在所有数据集上均超过了基线方法。这证明了HTML修剪的有效性,以及HtmlRAG在保留信息方面的优势。在分块精炼器中,HtmlRAG充分利用了HTML的结构信息,避免了纯文本转换中的信息丢失。

图片

HtmlRAG的应用实践

安装和使用

HtmlRAG提供了一个开源工具包,可以应用于任何RAG系统。用户可以通过pip安装htmlrag,也可以从源码安装。安装后,用户可以调用clean_html函数进行HTML清理,使用build_block_tree函数构建块树。

代码示例

from htmlrag import clean_html, build_block_tree

simplified_html = clean_html(html_content)

block_tree, simplified_html = build_block_tree(simplified_html)

结论与展望

研究成果

HtmlRAG通过将HTML作为RAG系统的外部知识格式,显著提高了信息的保留和处理能力。实验结果验证了其在各类数据集上的有效性。

未来展望

随着大语言模型能力的增强,HTML将更适合成为外部知识格式。希望未来能开发出更好的HTML处理解决方案,以进一步提升RAG系统的效率和准确性。

FAQ

  1. 问:HtmlRAG如何提高生成准确性?

    • 答:HtmlRAG通过保留HTML的结构和语义信息,减少了信息丢失,提高了生成的准确性。
  2. 问:使用HtmlRAG需要什么技术条件?

    • 答:用户需要安装htmlrag工具包并具备基本的Python编程能力。
  3. 问:HtmlRAG适用于哪些领域?

    • 答:HtmlRAG适用于需要保留文档结构信息的所有领域,尤其是需要准确生成内容的场景。
  4. 问:如何处理HTML中冗余的内容?

    • 答:HtmlRAG通过HTML清洗去除冗余内容,只保留必要的信息。
  5. 问:HtmlRAG的性能如何?

    • 答:实验结果显示,HtmlRAG在信息保留和生成准确性上表现优于传统方法。
#你可能也喜欢这些API文章!