RAG技术:解决大模型幻觉与时效性难题

1、RAG认知

主要用于解决:幻觉问题时效性可解释性

  • 幻觉问题(制造虚假事实):LLMs经常制造虚假事实,特别是在处理特定领域或者高度专业化的查询时,会一本正经的胡说八道。

  • 知识时效性:当所寻求的信息超出模型训练数据范围或者需要更新数据时,LLMs可能无法提供准确答案。

  • 不具备可解释性:在实际生产环境中部署生成人工智能时,单纯使用“黑盒”LLMs可能不够。

其次是企业需求(不过多赘述)。

RAGRetrieval-Augmented Generation

  • R:Retrieval 检索

  • A:Augmented 增强

  • G:Generation 生成

RAG通过结合传统的生成式语言模型动态检索机制,实时从外部知识库中检索信息,增强模型的生成输出。

RAG思路:

  • 通过实时检索最新相关文档,结合查询上下文生成更准确、具体的回答,适用于回答复杂问题,或是需要详细解释的场景

  • 可以动态引入训练数据之外的知识、涵盖最新事件、专业术语和冷门知识等,解决传统LLM知识盲区

  • 利用外部知识库替代频繁训练,可以降低更新成本,快速适应变化;支持跨行业应用,无需专门训练

  • 生成内容可以关联原始文档,增强结果的可验证性,有助于减少偏见、提高透明度。

目前有很多大模型支持超长上下文:百万级别token的输入

谷歌的Gemini1.5 100万输入,kimichat 支持200万输入200万Token相当于4本红楼梦

既如此,我直接把整个知识库扔给大模型,那岂不是很爽?但是,

  • 自己部署:推理成本高,效率还低

  • 用开源平台:企业的私有数据泄露风险高

  • LLM在Long Context上的处理能力也有待完善

  • 大海捞针实验:在一个Long Context的随机位置插入多个“针”(needles,即知识点),看LLM能否精准检索出这些“针”。比如把【制作完美披萨的秘密】随机插入到红楼梦内容里面:

    • 随着"针”的数量增加,LLM的检索与推理的正确率会下降;

    • 1K的上下文中,GPT4可以轻而易举的找到10个"针;

    • 上下文扩大10倍甚至100倍后,很显然发生了大量的丢失;

    • 和针的位置有关:越在上下文末尾出现的“针”,越容易被检索到;

    • 上下文腐烂

2、RAG简介

2.1 RAG定义

  • RAG是一种使用私有(专有)数据源的信息辅助文本生成技术

  • RAG是一种结合了检索生成两个主要组件的语言模型架构

  • RAG目的是通过检索相关信息来增强模型的生成能力

价值:RAG对于回答问题和内容生成等任务具有极大价值,因为其能支持生成式AI系统使用外部信息源生成更准确且符合语境的回答。它会实施搜索检索方法(通常是语义搜索或混合搜索)来回应用户提问并提供更相关的结果。

2.2 RAG原理

RAG模型工作分为两个主要步骤:检索生成

  • 检索

    • 知识库、数据库、外部来源检索出与输入查询相关的文档或信息片段(chunk)

    • 检索到的信息转化为Embedding存储向量数据库中;

    • 向量模型基于Embedding与输入查询的相关性,对检索到的信息进行排序

    • 分数最高信息(文档或者段落)会被选中,对其进行进一步处理

  • 生成

    • LLM使用检索到的信息生成文本回复

    • 生成的文本可以再进行额外处理,确保其语法正确,语意连贯

这样使得模型的回复内容会更加准确,更符合语境,因为这些回复使用了检索模型提供的补充信息

2.3 工作流程

分为三大块:知识库、检索、LLM

  • 输入查询处理:接受用户的输入查询

  • 执行检索:利用检索器知识库到对应的相关文档

  • 信息融合:将检索到的文档原始查询融合成为生成模型的输入

  • 内容生成:生成模型根据融合后的信息产生回答或文本

  • 输出结果:向用户展示生成后的内容

2.4 RAG优劣势

优势

  • 通过与外部关联内容提高回答准确信,减少LLM幻觉问题,使能够生成更准确可靠的答案;

  • RAG通过关联最新信息,保持相应的时效性;

  • RAG通过引用来源提高答案的透明度,增加用户对模型的信任程度

  • RAG可以通过检索相关语料库,为特定领域提供知识支持

  • RAG能够处理大规模数据集无需更新参数

劣势

  • 数据复杂多样:结构化(MySQL)、非结构化、Excel、PDF、PPT、Word

  • 数据整理、清洗和准确性验证是个大工程

  • 处理好的数据如何构建知识库:怎么分块?怎么高效索引?

  • 很多上下文相关信息的处理:

    • 如何排序相关信息?

    • 如何写合适的prompt激发大模型潜能?

    • 那种大模型合适?

  • 计算成本与速度:在大型知识库或网络中检索,需要计算成本

  • 要实现检索和生成部分的无缝集成,需要精心设计和优化,是个训练部署过程中的巨大挑战;

  • 处理敏感数据时,从外部来源检索信息可能会涉及到隐私问题,需要脱敏处理;

  • 要遵循隐私和法规要求,限制可访问的信息来源

  • RAG擅长处理基于事实的内容生成,不擅长创作富有想象力或虚构性质的内容

3、基础版RAG

3.1 基本步骤

3.1.1 建立索引

  • 数据准备:提前对数据进行清理和提取,将多种格式(PDF、HTML、Word、Markdown等)转换成统一格式,以便处理和索引。

  • 文本处理:对提取的文本进行分块,以小段落为单位进行处理,以便精确检索到与查询最相关的信息。

  • 索引创建:使用向量数据库(如Milvus、FAISS、ElasticSearch)构建文本块索引,以支持相似性搜索。

3.1.2 输入增强

  • 查询转换:通过修改输入查询,使用Query2doc和HyDE生成一个伪文档,使用这个文档作为检索的关键

  • 数据增强:指在检索前提前改善数据,如去除无关信息、消除歧义、更新过时文档,合成新数据等。

3.1.3 检索文档

  • 问题向量化:利用编码模型将用户查询转换为向量表示,与文档块索引中的嵌入进行相似度比较。

  • 文档选择:根据计算得到的相似度,选择 $TOP-K$ 个文档块作为问题的上下文增强信息,以供生成阶段使用。

3.1.4 文本生成

  • 融合上下文:将选定的问题和其相关文档块合并成一个新的输入提示,为大型语言模型提供丰富的上下文信息。

  • 回答生成:基于合并后的提示,LLM生成回答。

  • 在多轮对话中通过整合历史对话信息,以提升回答的连贯性和相关性。

3.2 挑战

革命尚未成功,同志仍需努力~

3.2.1 检索质量问题

  • 精度和召回率:挑战包括低精度(不是检索到的文档块都与查询严格相关,可能导致信息的断层或误导)和低召回率(未能检索到所有相关文档块,限制了语言模型获取充足上下文的能力)。

  • 幻觉与不相关性:模型可能生成基于错误或不完整上下文的幻觉内容,或生成的回答与查询问题不相关。

  • 有害或偏见性内容:在不适当的上下文引导下,模型可能产生有害或带有偏见的回应。

3.2.2 增强过程的挑战

  • 整合检索段落:有效融合检索到的段落与生成任务当前的上下文,以提高生成内容的相关性和准确性。

  • 冗余与重复:处理多个检索段落中的相似或重复信息,避免在生成的回答中出现重复内容。

  • 重要性评估:评估并确定哪些检索到的文档块对回答生成任务最为关键和相关

  • 风格一致性:处理不同来源文档的写作风格或语气差异,确保生成的回答在风格和语气上保持一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值