微信扫码
与创始人交个朋友
我要投稿
检索增强生成(RAG)系统在处理复杂推理任务方面展现出显著的潜力。然而,现有的RAG系统在面对需要复杂推理、多领域知识集成及数值计算的任务时,仍存在性能瓶颈。为了进一步提升系统的表现,本文提出了一种混合RAG系统,通过整合多种优化方法,显著增强了系统的推理能力和处理复杂任务的能力。本文介绍的RAG系统设计并实现了一个包括网页处理、属性预测、数值计算、LLM知识提取、知识图谱及推理模块在内的综合架构。该系统能够有效地从多种来源提取信息,并通过高级推理模块结合这些信息,生成高质量的答案。
混合RAG系统包括六个关键模块:网页处理、属性预测器、数值计算器、LLM知识提取器、知识图谱模块和推理模块。
网页处理:使用trafilatura和BeautifulSoup库从网页中提取文本和表格,然后使用Blingfire库将文本分割成句子,并根据关键词将句子组织成文本块。
属性预测器:通过LLMs和SVM分类器评估问题的领域、类型和时效性,以优化模型在不同问题类型上的性能。
数值计算器:利用外部Python解释器进行数值计算,通过LLMs生成数学表达式,并使用eval函数处理这些表达式。
LLM知识提取器:利用LLMs内部的知识进行推理,减少对外部参考文档的依赖。
知识图谱模块:通过模拟API查询知识图谱,使用LLMs生成查询语句。
推理模块:结合文本块、表格、知识图谱三元组和LLM知识进行最终答案的推理,通过设计良好的提示模板和控制推理路径来实现。
文本块处理:
表格处理:
文本嵌入和rank指标:
In-Context Learning(ICL):利用大型语言模型(LLMs)的自然语言理解和多任务泛化能力。通过向模型提供分类指令和5个类别的示例,指导其对后续问题进行分类。采用自我一致性策略,多次采样模型的输出,选择出现频率最高的类别作为问题的分类结果。
支持向量机(SVM):使用CRAG公开数据集训练一个SVM分类器。利用MiniLM-L6-v2模型获取句子嵌入,用于训练SVM。SVM模型在预测属性方面表现出较高的准确性,并且计算开销较小。
生成数学表达式:鼓励大型语言模型(LLMs)将推理过程表述为数学表达式。将可能包含数值信息的检索到的文本块和表格整合到模型的提示中。使用提示技术促使模型直接生成有效的Python表达式。
计算表达式:使用多次采样生成Python表达式,并通过eval函数处理这些表达式以得到计算结果。
知识提取器的过程类似于常规的模型生成过程。使用zero-shot提示,这些提示要求模型评估给定查询是否涉及错误前提,并生成更简洁的响应。在提示中不包含来自外部知识库的参考文档,并且不包括多次采样,以减少计算开销。
LLM能够仅基于训练过程中内部化的知识进行响应。这种方法在处理被分类为慢变和稳定的问题时表现良好。
直接让模型回答问题可能会引入幻觉,尽管使用了零样本CoT推理。为了平衡幻觉和LLM内部知识,系统将LLM知识提取器的输出仅作为参考之一。设计了特定的提示,确保模型既不过度依赖文档参考,也不过分信任LLM的知识。
提示模板旨在让LLM基于所有参考信息进行推理并得出最终答案。通过输出格式示范和零样本CoT控制推理过程,这对于多跳问题特别有用。利用Llama3-70B-Instruct的强指令遵循能力,成功地在控制推理任务方面取得了稳步进展。
设计了多条规则来约束推理路径和输出格式,确保输出精确。通过在提示中提出中间问题来引导模型推理。
使用 函数调用方法:系统从查询中提取实体,并使用LLM生成函数调用来检索相关信息。函数调用的质量取决于LLM生成的查询语句的质量。
输入信息整合:推理模块接收来自网页处理、数值计算器、LLM知识提取器和知识图谱模块的所有参考信息,包括文本块、表格、知识图谱三元组和LLM生成的知识。
提示模板设计:设计了一个详细的提示模板,用于指导大型语言模型(LLM)进行推理。提示模板包括系统提示和用户提示。系统提示明确了任务要求、规则和输出格式。用户提示包含了具体的查询和参考信息。
推理路径控制:通过输出格式示范和零样本CoT技术,控制推理路径,特别是对于多跳问题。设计了多条规则来约束推理路径和输出格式,确保输出精确。
中间问题引导:在提示中提出中间问题,引导模型进行逐步推理,从而提高推理的准确性和详细程度。
处理不确定性和错误:如果参考信息不包含回答问题所需的信息,或者模型无法基于当前知识直接回答问题,模型将回答“我不知道”。如果问题的前提是错误的,模型将回答“无效问题”。
最终答案生成:模型生成的推理过程和最终答案必须遵循严格的格式要求,确保答案简洁且详细解释推理过程。
无效问题:通过分析提供的参考信息,识别出具有错误前提的问题,即查询与事实相矛盾的问题。在推理提示中添加特殊规则,使模型在这种情况下输出“无效问题”。
减少幻觉:使用属性预测器和推理模块来减少幻觉。对于时间变化的问题,模型会回答“我不知道”,因为这些问题难以处理。在推理模块中添加规则和提示工程技术,使模型在不确定时回答“我不知道”。
格式错误:由于未对推理输出进行约束采样,模型可能会生成无法解析的答案。设计了一个备份总结代理,当解析失败时,基于推理模块的输出生成简洁准确的总结。设计了一个备份总结代理,当解析失败时,基于推理模块的输出生成简洁准确的总结。
数值计算器和推理模块对系统性能的提升贡献显著。
本文介绍了一种混合检索增强生成(RAG)系统,通过一系列综合优化显著提高了检索质量、增强了推理能力并提升了数值计算能力,通过多个模块的协同工作显著提升了LLMs在复杂推理任务中的表现。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-23
FastRAG半结构化RAG实现思路及OpenAI O1-long COT蒸馏路线思考
2024-11-23
检索增强生成(RAG):解密AI如何融合记忆与搜索
2024-11-23
如何提高RAG系统准确率?12大常见痛点及巧妙解!
2024-11-23
RAG 2.0性能提升:优化索引与召回机制的策略与实践
2024-11-22
RAG技术在实际应用中的挑战与解决方案
2024-11-22
从普通RAG到RAPTOR,10个最新的RAG框架
2024-11-22
如何使用 RAG 提高 LLM 成绩
2024-11-21
提升RAG性能的全攻略:优化检索增强生成系统的策略大揭秘 | 深度好文
2024-07-18
2024-05-05
2024-07-09
2024-05-19
2024-07-09
2024-06-20
2024-07-07
2024-07-07
2024-07-08
2024-07-09
2024-11-06
2024-11-06
2024-11-05
2024-11-04
2024-10-27
2024-10-25
2024-10-21
2024-10-21