【AIGC知识】RAG概述
文章目录
- 概述
- 一、定义与原理
- 二、技术架构与流程
- 三、作用与优势
- 四、应用场景
- 五、发展趋势与挑战
- 流程步骤
- 一、知识文档的准备
- 二、嵌入模型(embedding model)
- 三、向量数据库
- 四、查询检索
- 五、生产回答
- 优缺点
- 优点
- 缺点
- 通用使用场景
- 常见框架
- 1. Haystack
- 2. RAGFlow
- 3. txtai
- 4. STORM
- 5. LLM-App
- 6. Ragas
- 7. Graph RAG(蚂蚁集团开源)
- 8. LangChain & Langchain-Chatchat
- 9. QAnything
- 10. FastGPT
概述
AI大模型中的RAG指的是Retrieval-Augmented Generation,即检索增强生成模型。以下是对RAG的详细汇总说明:
一、定义与原理
RAG是一种结合了信息检索技术与语言生成模型的人工智能技术。它通过从外部知识库中检索相关信息,并将其作为提示(Prompt)输入给大型语言模型(LLMs),以增强模型处理知识密集型任务的能力,如问答、文本摘要、内容生成等。RAG模型由Facebook AI Research(FAIR)团队于2020年首次提出,并迅速成为大模型应用中的热门方案。
二、技术架构与流程
RAG技术架构主要由两个核心模块组成:检索模块(Retriever)和生成模块(Generator)。
-
检索模块:
- 功能:从预先建立的知识库中检索与问题相关的信息。
- 步骤:
- 文本嵌入:使用预训练的文本嵌入模型(如GLM)将查询和文档转换成向量表示,以便在向量空间中进行相似度计算。
- 数据召回:根据用户提问从向量数据库中召回相关文档数据。
-
生成模块:
- 功能:将检索到的信息与原始问题合并,形成更丰富的上下文信息,作为生成模型的输入,生成连贯、准确且信息丰富的回答或文本。
- 使用的模型:通常使用在大规模数据上预训练的生成模型(如GLM)。
三、作用与优势
- 增强模型理解能力:通过引入外部知识,RAG模型能够更准确地理解用户问题,并给出更贴合用户需求的回答。
- 提高生成内容质量:RAG模型能够利用外部知识库中的信息,生成更准确、更丰富、更可靠的文本内容。
- 解决大模型“幻觉”问题:大模型在生成内容时可能会编造信息,即产生“幻觉”。RAG通过引入外部知识,有效减少了生成事实不正确内容的问题。
四、应用场景
RAG模型广泛应用于各种需要处理知识密集型任务的场景,如:
- 问答系统:通过检索相关知识库,RAG模型能够为用户提供准确、详细的回答。
- 文本摘要:利用RAG模型,可以从大量文本中提取关键信息,生成简洁明了的摘要。
- 内容生成:在内容创作领域,RAG模型可以根据用户需求,生成符合要求的文章、评论等文本内容。
五、发展趋势与挑战
- 发展趋势:随着AI技术的不断发展,RAG模型将不断优化和完善,其应用场景也将进一步拓展。
- 挑战:目前,RAG模型仍面临一些挑战,如如何高效地检索和整合外部知识、如何确保生成内容的准确性和可靠性等。这些问题需要研究人员不断探索和解决。
综上所述,RAG作为一种结合了信息检索与语言生成模型的人工智能技术,在增强模型理解能力、提高生成内容质量以及解决大模型“幻觉”问题等方面具有显著优势。随着技术的不断发展,RAG模型将在更多领域发挥重要作用。
流程步骤
RAG(Retrieval Augmented Generation)的流程可以细化为以下五个基本步骤:
一、知识文档的准备
- 任务:将各种格式的知识源转换为大语言模型可理解的纯文本数据。
- 知识源:包括Word文档、TXT文件、CSV数据表、Excel表格,以及PDF文件、图片和视频等。
- 处理工具:使用专门的文档加载器(如PDF提取器)或多模态模型(如OCR技术)进行格式转换。
- PDF文件:利用PDF提取器抽取文本内容。
- 图片和视频:OCR技术识别并转换其中的文字信息。
- 文档切片:将长篇文档分割成多个文本块(chunk),以便更高效地处理和检索信息。
- 目的:减轻模型负担,提高信息检索的准确性。
二、嵌入模型(embedding model)
- 核心任务:将文本转换为向量形式。
- 向量表示的优势:更加密集、精确,能够捕捉到句子的上下文关系和核心含义。
- 训练过程(以Word2Vec为例):
- 生成one-hot向量:为词汇表中的每个单词生成一个高维稀疏向量,存在则为1,不存在则为0。
- 生成词向量:将one-hot向量与权重矩阵相乘,得到每个单词的词向量。
- 计算上下文向量:将所有词向量加起来并求平均,得到代表整个句子上下文的向量。
- 预测中心词:将上下文向量乘以另一个权重矩阵,通过SoftMax函数处理,得到预测每个词是中心词的概率。
- 更新权重矩阵:将预测结果与实际的中心词进行比较,通过差值不断更新权重矩阵。
- 其他嵌入模型:BERT和GPT系列等,通过更复杂的网络结构捕捉更深层次的语义关系。
三、向量数据库
- 功能:存储和检索向量数据的数据库系统。
- 优势:优化了处理和存储大规模向量数据的效率,能够迅速检索出与用户查询最相关的信息。
四、查询检索
- 任务:在向量数据库中搜索与用户查询向量语义上相似的知识文本或历史对话记录。
- 步骤:
- 用户问题输入嵌入模型进行向量化处理。
- 在向量数据库中搜索与用户查询向量相似的知识文本或历史对话记录。
五、生产回答
- 任务:将用户提问和检索到的信息结合,构建出一个提示模版,输入到大语言模型中,生成最终答案。
此外,RAG的流程中还包括一些优化策略,如:
- 基本文本清理:规范文本格式,去除特殊字符和不相关信息,除重复文档或冗余信息。
- 实体解析:消除实体和术语的歧义以实现一致的引用。
- 文档划分:合理地划分不同主题的文档。
- 数据增强:使用同义词、释义甚至其他语言的翻译来增加语料库的多样性。
- 用户反馈循环:基于现实世界用户的反馈不断更新数据库,标记它们的真实性。
在RAG技术的不断发展中,还出现了多种范式,如Naive RAG、Advanced RAG和模块化RAG等,它们在不同方面对RAG技术进行了优化和拓展。
优缺点
RAG(Retrieval-Augmented Generation)即检索增强生成技术,在自然语言处理领域具有显著的优势,同时也存在一些局限性。以下是RAG的优缺点及通用使用场景的详细分析:
优点
-
答案准确性高:
- RAG技术通过从外部知识库中检索相关信息,并将其与语言模型的生成能力结合,显著提升了生成答案的准确性。这种准确性的提升尤其体现在知识密集型任务中,如专业领域的问答系统。
- 生成的答案可以附带对应的引用来源,用户可以轻松验证模型回答的准确性,从而增加对模型输出的信任。
-
知识覆盖面广:
- RAG技术可以访问私有领域知识库,能够处理涉及专业领域的问题,并生成准确的答案。
- 通过更新外部知识库,可以快速引入新的信息和知识,避免了传统生成技术因模型固定而导致的知识更新困难。
-
灵活性和扩展性强:
- RAG模型可以灵活地应用于不同的领域和任务中,只需更换或扩展其检索库,便能适应新的应用场景。
- RAG技术能够针对特定领域进行定制化的优化,通过构建特定领域的知识库,使得生成的内容更加符合该领域的专业性和准确性。
-
真实性和可信度高:
- 相比于传统生成模型,RAG生成的内容更加可靠,因为它可以借助检索到的相关信息,确保生成的文本与问题或上下文高度相关。
- RAG技术通过引入外部知识库的信息,可以有效地避免“模型幻觉”问题,即生成的内容与事实不符或存在逻辑错误,从而提高生成内容的真实性和可信度。
-
成本效益高:
- RAG技术主要是优化了模型的输入过程,通过丰富输入信息的方式,来增强模型的输出质量。
- 它并不改变模型本身的推理能力,也不会改变模型任何的参数,因此是一种成本效益较高的解决方案。
缺点
-
准确率有待提高:
- 目前RAG模型的准确率约为70%,这远低于许多应用场景的预期。
- 可能是由于模型对特定类型的数据不够敏感或者对复杂查询的处理不足。
-
处理细节化信息能力不足:
- 大模型在处理涉及日期或具体数值的查询时容易出错,表明模型在理解和处理具体、细节化信息方面存在不足。
-
检索效率和准确性依赖外部知识库:
- RAG技术的性能受到外部知识库质量和规模的影响,如果知识库不完善或存在错误,将影响生成文本的质量。
- 对于某些关键性问题和低容错率的场景,目前的RAG模型在检索效率和准确性方面仍需依赖传统的数据库检索方法。
-
处理表格数据不敏感:
- RAG模型对于表格数据的处理不够敏感,特别是当表格被切分后,模型的处理效果大幅下降。
-
查询质量影响回应效率:
- 用户提出的查询质量不高,例如问题过短或使用过多缩写,会影响模型的理解和回应效率。
通用使用场景
-
智能问答:
- 在客服、教育、医疗、企业内部知识库等领域,RAG技术可以用于构建更为智能的问答系统。这类系统不仅可以回答常规问题,还能根据用户的特定问题实时检索相关信息,提供更加精准的答案。
-
内容生成:
- RAG技术还可以用于内容创作领域,如新闻生成、技术文档编写等。通过结合检索到的最新信息,RAG生成的内容不仅保持了连贯性,还能反映出当前的最新趋势和知识。
-
辅助决策:
- 对于需要处理大量文档和信息的行业,如法律、金融等,RAG技术可以帮助用户快速找到相关案例、法规或市场数据,辅助决策和研究工作。
综上所述,RAG技术在自然语言处理领域具有广泛的应用前景,但同时也存在一些局限性需要克服。随着技术的不断进步和应用场景的不断拓展,RAG技术有望在更多领域发挥重要作用。
常见框架
RAG(Retrieval Augmented Generation,检索增强生成)的实现开源框架有多种,以下是其中一些主要的框架及其特点:
1. Haystack
- 项目地址:https://github.com/deepset-ai/haystack
- 特点:Haystack是一个强大且灵活的框架,用于构建端到端的问答和搜索系统。它提供了模块化架构,使开发人员能够轻松创建文档检索、问答和摘要等各种NLP任务的管道。支持多种文档存储(如Elasticsearch、FAISS、SQL等)与流行的语言模型(如BERT、RoBERTa、DPR等)集成,并提供易于使用的API,便于构建自定义NLP管道。
2. RAGFlow
- 项目地址:https://github.com/infiniflow/ragflow
- 特点:RAGFlow是RAG框架领域中相对较新的参与者,专注于简洁性和效率。该框架旨在通过预构建组件和工作流程简化RAG应用程序的构建,提供了直观的工作流程设计界面和预配置的RAG管道,适用于常见用例。
3. txtai
- 项目地址:https://github.com/neuml/txtai
- 特点:txtai是一个多功能的AI驱动数据平台,超越了传统的RAG框架。它提供了一整套工具,用于构建语义搜索、语言模型工作流和文档处理管道。关键功能包括用于高效相似性搜索的嵌入式数据库和提供集成语言模型和其他AI服务的API。
4. STORM
- 项目地址:https://github.com/stanford-oval/storm
- 特点:STORM(斯坦福开源RAG模型)是由斯坦福大学开发的面向研究的RAG框架,实现了新型RAG算法和技术,专注于提升检索机制的准确性和效率。
5. LLM-App
- 项目地址:https://github.com/pathwaycom/llm-app
- 特点:LLM-App是一个用于构建动态RAG应用的模板和工具集合,以实时数据同步和容器化部署为特色。它提供了即用型Docker容器,支持快速部署;支持动态数据源和实时更新;与流行的LLM和向量数据库集成;提供多种可定制模板,适用于各类RAG用例。
6. Ragas
- 项目地址:https://github.com/explodinggradients/ragas
- 特点:Ragas是一个专门为评估检索增强生成(RAG)管道而设计的强大框架。它提供了一套专为RAG系统量身定制的评估指标,能够准确地衡量RAG系统在不同方面的性能表现。同时,它支持本地和分布式评估,并能够无缝地与流行的大型语言模型(LLM)框架集成。
7. Graph RAG(蚂蚁集团开源)
- 特点:Graph RAG从增强知识确定性角度对传统RAG做了进一步的改进,引入了知识图谱技术,使用Graph格式存储知识。这种改进可以为RAG提供高质量的上下文,以减轻模型幻觉。
8. LangChain & Langchain-Chatchat
- LangChain项目地址:https://github.com/langchain-ai/langchain
- Langchain-Chatchat项目地址:https://github.com/chatchat-space/Langchain-Chatchat
- 特点:LangChain是一个用于开发由大型语言模型(LLMs)驱动的应用程序的框架,它简化了整个应用程序生命周期。Langchain-Chatchat则是一种利用Langchain思想实现的基于本地知识库的问答应用,它期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
9. QAnything
- 项目地址:https://github.com/netease-youdao/QAnything/tree/master
- 特点:QAnything致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。它已支持多种文件格式,如PDF、Word、PPT等,并提供了两阶段检索功能,以应对大数据量场景下的检索退化问题。
10. FastGPT
- 项目地址:https://github.com/labring/FastGPT
- 特点:FastGPT是一个基于LLM大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时,它可以通过Flow可视化进行工作流编排,从而实现复杂的问答场景。
这些框架各有特色,可以根据具体需求选择合适的框架来实现RAG系统。