RAG(Retrieval Augmented Generation)是一种结合了检索和生成的技术,它可以让大模型在生成文本时利用额外的数据源,从而提高生成的质量和准确性。其基本流程如下:
配备了全景和精准 PDF 解析器的 RAG 系统的 ChatDOC(海外官网:chatdoc.com)可以检索到更准确和完整的文本段,因此能够给出更好的回答。实验证明,ChatDOC 在近 47%的问题上表现优于 Baseline 模型,在 38%的问题上与 Baseline 模型表现持平,仅在 15%的问题上表现落后于 Baseline 模型。这表明,我们可以通过增强 PDF 结构识别来革新检索增强生成技术(RAG)。
因为利用大模型的能力搭建知识库本身就是一个RAG技术的应用。所以在进行本地知识库的搭建实操之前,我们需要先对RAG有一个大概的了解。以下内容会有些干,我会尽量用通俗易懂的描述进行讲解。我们都知道大模型的训练数据是有截止日期的,那当我们需要依靠不包含在大模型训练集中的数据时,我们该怎么做呢?实现这一点的主要方法就是通过检索增强生成RAG(Retrieval Augmented Generation)。在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程:文档加载(Document Loading):从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器,包括PDF在内的非结构化的数据、SQL在内的结构化的数据,以及Python、Java之类的代码等文本分割(Splitting):文本分割器把Documents切分为指定大小的块,我把它们称为“文档块”或者“文档片”存储(Storage):存储涉及到两个环节,分别是:将切分好的文档块进行嵌入(Embedding)转换成向量的形式将Embedding后的向量数据存储到向量数据库检索(Retrieval):一旦数据进入向量数据库,我们仍然需要将数据检索出来,我们会通过某种检索算法找到与输入问题相似的嵌入片
尽管大语言模型(LLM)在自然语言生成方面取得了巨大的进展,但对于专业知识问答领域来说,结合检索增强生成技术(RAG)可以更好地利用领域专家知识、提供解释性的优势,提高问答准确率。目前,主流的基础模型公司已经开放了嵌入向量(Embedding)和聊天API接口,LangChain等框架也已经集成了RAG流程,似乎RAG中的关键模型和步骤都已经得到解决。这就引出一个问题:目前专业知识的问答系统是否已经趋于完善?本文指出当前的主要方法都是以获取高质量文本语料为前提的。然而,因为大部分的专业文档都是以PDF格式存储,低精度的PDF解析会显著影响专业知识问答的效果。我们对来自真实场景的专业文档,其中的数百个问题进行了实证RAG实验。结果显示,配备了全景和精准PDF解析器的RAG系统的ChatDOC(海外官网:chatdoc.com)可以检索到更准确和完整的文本段,因此能够给出更好的回答。实验证明,ChatDOC在近47%的问题上表现优于Baseline模型,在38%的问题上与Baseline模型表现持平,仅在15%的问题上表现落后于Baseline模型。这表明,我们可以通过增强PDF结构识别来革新检索增强生成技术(RAG)。
RAG是一种结合了检索和生成的技术,它可以让大模型在生成文本时利用额外的数据源,从而提高生成的质量和准确性。RAG的基本流程如下:首先,给定一个用户的输入,例如一个问题或一个话题,RAG会从一个数据源中检索出与之相关的文本片段,例如网页、文档或数据库记录。这些文本片段称为上下文(context)。然后,RAG会将用户的输入和检索到的上下文拼接成一个完整的输入,传递给一个大模型,例如GPT。这个输入通常会包含一些提示(prompt),指导模型如何生成期望的输出,例如一个答案或一个摘要。最后,RAG会从大模型的输出中提取或格式化所需的信息,返回给用户。