1、RAG认知
主要用于解决:幻觉问题、时效性和可解释性
-
幻觉问题(制造虚假事实):LLMs经常制造虚假事实,特别是在处理特定领域或者高度专业化的查询时,会一本正经的胡说八道。
-
知识时效性:当所寻求的信息超出模型训练数据范围或者需要更新数据时,LLMs可能无法提供准确答案。
-
不具备可解释性:在实际生产环境中部署生成人工智能时,单纯使用“黑盒”LLMs可能不够。
其次是企业需求(不过多赘述)。
RAG:Retrieval-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 增强过程的挑战
-
整合检索段落:有效融合检索到的段落与生成任务当前的上下文,以提高生成内容的相关性和准确性。
-
冗余与重复:处理多个检索段落中的相似或重复信息,避免在生成的回答中出现重复内容。
-
重要性评估:评估并确定哪些检索到的文档块对回答生成任务最为关键和相关。
-
风格一致性:处理不同来源文档的写作风格或语气差异,确保生成的回答在风格和语气上保持一致性。


1656

被折叠的 条评论
为什么被折叠?



