RAG-202502
目录
- RAG场景的坑
- 知识等级金字塔
- 初级RAG存在的问题
- 高级RAG
- 索前优化
- 检索优化
- 检索后优化
- 优化经验总结
- 参考
RAG场景的坑
- 晦涩的专业术语
误区:在专业领域中。许多文献和资料中充满了专业术语,这些术语对于非专业人士(甚至是大模型)来说都是难以理解的。
风险:当知识库内容包含大量专业术语、且文献错综复杂,对术语没有做出很好的解释和关联时,模型可能就会“倒在”第一步。因为它根本无法很好地理解这些术语,更遑论最终输出正确的答案了。
- 信息提取困难
误区:有时候,文献量太大,RAG系统在处理大量文本数据时,它可能无法有效地从中抽取关键信息。
风险:如果模型无法从复杂的文献中提取出核心要点,那么生成的答案可能会缺乏重点,或者包含大量无关紧要的细节,例如,在法律文献中,关键条款往往隐藏在大量法律条文中,模型在检索时可能会“忽略”,或者一股脑地提取。导致回答要么缺漏重点,要么又多又杂、找不到重点。
- 自相矛盾/不一致的信息
误区:有时候文献过多,输入到RAG系统中的数据可能包含不准确或错误的信息。比如,一个医疗的RAG系统,它的目的为医生和患者在进行询问时,提供准确的药品信息。但是,这个系统在知识库的建立时,收集了多种来源的药品说明书、临床试验报告以及最新的医学研究论文。就极有可能出现以下情况:
说明书A(来自制造商X,2020年发布):“阿莫西林适用于治疗多种细菌感染,如肺炎、咽炎和皮肤感染。,成人每日剂量为500毫克,每日三次。”
最新研究论文C(2023年发表):“最新的临床研究表明,阿莫西林对某些类型的细菌感染不再有效,因为它可能导致耐药性。”
风险:生成答案时,可能会出现自相矛盾的回答,或者是每次的回答都不一致,容易误导用户。
- 过时内容
误区:过时内容是指知识库中的某些信息可能已经不再适用当前的情况。
风险:如果RAG系统提供了过时的信息,那么这些信息可能会导致用户做出基于过时数据的决策。例如,在技术快速发展的领域,如信息技术或生物医药,几年前的研究成果可能已经不再适用。
- 无关且多余的信息
误区:无关且多余的信息是指知识库中包含了一些与当前问题无关或多余的内容。
风险:这些信息可能会干扰模型的判断,导致生成的答案中包含不必要的细节,从而使答案显得冗长而不切题。例如,在用户询问某一产品的具体规格时,系统却给出了大量与产品无关的市场营销材料。
- 与“世界(知识)为敌”
误区:这种经常出现在一些“软”知识上,比如公司管理、领导力咨询等等。在这种知识领域,并没有唯一的、正确的答案,而是不同的“学派”会有不同的切入点和理论体系。这样,同一个概念,在私有知识库和世界知识的说法不同,就可能产出冲突。
风险:模型回答的输出不稳定。面对“外挂”给到的知识点和自己训练时就有的数据,大模型容易陷入“本能迁移”,更倾向于用自己训练时的数据做回答。
知识等级金字塔
并不是所有的知识都是平等的。你需要评估哪些知识“有价值”,而价值的私有知识,才可以称之为“知识资产”,并放入知识库之中。
那什么是有价值的知识资产?尽管各领域的知识内容不尽相同,但在实践中,我们可以遵循金字塔梯度的思路:
- 顶层,核心资产:这应该是公司私有化/专业领域中最为核心、最关键的知识内容。也是这个私有知识库最想给用户传递、最有竞争力的知识体系。例如,一家咨询公司赖以成名的核心方法论,就是这家公司最核心的知识资产。在RAG的实践中,一旦涉及到这类范围的知识理解和输出,必须要求准确、全面、深入,能够体现权威性。
- 次层,独家资产:重要等级比关键知识略低,但同样是私有知识库中的独特的资产。这些知识也许会和世界知识有重合,但在私有知识库中,必须按照私有知识库中的要求回答。这类知识的一种常见场景就是公司的规章制度/文化内容/绩效规则等,世界知识库也许有大量类似的内容,但是在公司中必须要按照公司的要求进行。因此,对这类知识的解读也同样要求准确,且必须以私有知识库为准,不得混淆世界知识。
- 第三层,普通资产:在实践中,经常会出现一种情况:“私有”即“世界”。说白了,不管是多私有的知识,它的源头必然能追溯到人类公有的知识体系中。所以,私有知识库免不了有一些“其实和世界知识差不多,但表述、范围上略有差异”的内容。这类其实是最容易和世界知识发生混淆,造成输出不准确/冗余的“元凶”。因此,这类知识,我们建议不必“敝帚自珍”,在建立知识库时大刀阔斧地去除即可。
- 第四层,不良资产:包括自相矛盾、过时、无用的信息,这些不良资产,一定要尽早剥离。在进行知识库的建设时,就不能存在。
初级RAG存在的问题
主要在三个方面面临挑战:检索质量低、生成质量差和增强过程难。
- 检索质量低:首先使用长文本做索引,不能很好的突出主题,建立索引时,核心知识湮没在大量无用的信息中,其次,使用用户原始query做检索,不能很好的突出其核心诉求,这就导致用户query和知识索引不能很好的匹配,检索质量比较差。
- 生成质量差:未检索到知识或检索知识质量差时,大模型自主回答私域问题时,容易产生幻觉,或回答内容比较空洞,无法直接使用,知识库失去了本身的意义。
- 增强过程难:将检索到的信息与不同任务整合可能具有挑战性,有时会导致输出不连贯或不一致。此外,还有一个担忧是生成模型可能过度依赖增强信息,导致输出仅仅是复述检索内容而没有添加有洞察力或综合信息。
高级RAG
索前优化
检索前优化集中在知识切分、索引方式和query改写的优化上。
知识切分主要把较长的文本按照语义内聚性的分析切成小块,解决核心知识湮没以及语义截断的问题。
索引方式优化技术通过优化数据索引组织方式提升检索效果。比如去除无效数据或插入某些数据来提高索引覆盖程度,从而达到与用户问题的高匹配度问题。
query改写主要需要理解用户想表达的意图,把用户原始的问题转换成适合知识库检索的问题,从而提高检索的精准程度。
检索优化
检索阶段的目标是召回知识库中最相关知识。通常,检索基于向量搜索,它计算查询与索引数据之间的语义相似性。因此,大多数检索优化技术都围绕嵌入模型展开:
- 微调嵌入模型,将嵌入模型定制为特定领域的上下文,特别是对于术语不断演化或罕见的领域。例如,BAAI/bge是一个高性能的嵌入模型,可以进行微调。
- 动态嵌入根据单词的上下文进行调整,而静态嵌入则为每个单词使用单一向量。例如,OpenAI的embeddings-ada-02是一个复杂的动态嵌入模型,可以捕获上下文理解。
- 除了向量搜索之外,还有其他检索技术,例如混合搜索,通常是指将向量搜索与基于关键字的搜索相结合的概念。如果您的检索需要精确的关键字匹配,则此检索技术非常有益。
检索后优化
对检索到的上下文进行额外处理可以帮助解决一些问题,例如超出上下文窗口限制或引入噪声,从而阻碍对关键信息的关注。在RAG调查中总结的检索后优化技术包括:
提示压缩:通过删除无关内容并突出重要上下文,减少整体提示长度。
重新排序:使用机器学习模型重新计算检索到的上下文的相关性得分。
优化经验总结
RAG想做出来比较容易,但想做好还是比较难的,每个步骤都有可能对最终效果产生影响。
- 我们在RAG中也做了大量的探索,比如: 知识切分方面,做了固定字符切分的效果验证,分析索引噪音点,利用大模型做了大量的降噪处理;
- 在query改写方面,利用大模型做了更加明确的意图抽取,并对用户的query进行降噪的探索;
- 在数据召回方面,embedding模型基于bge、voyage和cohere做了大量的测评,探索向量+分词的召回策略;
- 在后置处理优化上,做了知识的去重以及rerank的探索等。
RAG的发展会越来越迅速,只要知识依赖和知识更新的问题没有得到解决,RAG就有其存在的价值和一席之地。
参考
- 阿里云开发者《一文详谈RAG优化方案与实践》
- RAG实践篇(一):知识资产的“梯度”
【RAG的6个坑和知识等级分类】
https://www.woshipm.com/aigc/6130455.html