准确地找到与用户查询最相关的信息是RAG系统成功的关键,如何帮助检索系统提升召回的效果是RAG系统研究的热门方向。本文将介绍三种query理解的方法,以增强检索增强生成(RAG)系统中的检索过程:
-
查询重写: 重新定义查询,使其更加具体和详细。
-
Step-back提示: 生成更广泛的查询,以获得更好的上下文检索。
-
子查询分解: 将复杂查询分解为更简单的子查询。
每种技术都旨在通过修改或扩展原始查询来提高检索信息的相关性和全面性。
query转化的优点
RAG系统在检索最相关的信息时经常面临挑战,特别是在处理复杂或模糊的查询时。这些查询转换技术通过重新制定查询以更好地匹配相关文档或检索更全面的信息来解决这个问题。
-
提升相关性: 查询重写有助于检索更具体和相关的信息。
-
更好的上下文: 后退提示允许检索更广泛的上下文和背景信息。
-
综合结果: 子查询分解支持检索涵盖复杂查询的不同方面的信息。
-
灵活性: 每种技术可以单独使用,也可以结合使用,这取决于具体的用例。
示例介绍
示例查询:“气候变化对环境的影响是什么?”
查询重写,将其扩展到包括特定方面,如温度变化和生物多样性。
step-back提示,将其概括为“气候变化的一般影响是什么?”
子查询分解,将其分解为生物多样性、海洋、天气模式和陆地环境等问题。
结论
这些查询转换技术为增强RAG系统的检索能力提供了强大的方法。通过以各种方式重新表述查询,它们可以显著提高检索信息的相关性、上下文和全面性。这些方法在查询复杂或多方面的领域中特别有价值,例如科学研究、法律分析或全面的事实查找任务。
方案介绍
1. 查询重写
目的: 使查询更加具体和详细,提高检索相关信息的可能性。
方案: 重写的确认样不仅与原始查询相似,而且还提供不同的角度或透视图,从而提高最终生成的质量和深度。
2. Step-back提示
目的: 生成更广泛、更通用的查询,帮助检索相关的背景信息。
方案: 后退提示(Step-Back Prompting)旨在通过考虑高层次的概念和原则来解决复杂问题,与直接解决问题的方法形成对比。“抽象的目的不是为了让你更迷糊,而是创建了绝对精确的新的语义层次”。
3. 子查询分解
目的: 将复杂查询分解为更简单的子查询,以便更全面地检索信息。
方案: Query分解关键思想是将一个复杂问题分解成一系列更简单的子问题,然后依次解决它们。解决每个子问题都得益于之前解决的子问题的答案。
方案实现和举例
本节我们将介绍上述方法的具体实现,同时给出对应的prompt,并举例说明效果:所有技术都使用大模型进行查询转换;自定义提示模板用于指导模型生成适当的转换,代码为每种转换技术提供了单独的功能,允许轻松地集成到现有的RAG系统中。
1 -查询重写
重新表述查询以改进检索。
query_rewrite_template = """You are an AI assistant tasked with reformulating user queries to improve retrieval in a RAG system.
Given the original query, rewrite it to be more specific, detailed, and likely to retrieve relevant information.Original query: {original_query}Rewritten query:"""query_rewrite_prompt = PromptTemplate(input_variables=["original_query"],template=query_rewrite_template
)
运行例子:
# example query over the understanding climate change dataset
original_query = "气候变化对环境的影响是什么?"
rewritten_query = rewrite_query(original_query)
print("Original query:", original_query)
print("\nRewritten query:", rewritten_query)
效果展示:
Original query: 气候变化对环境的影响是什么?Rewritten query: 气候变化对各种生态系统的具体影响是什么,包括温度、降水模式、海平面和生物多样性的变化?
2 -退步提示
生成更广泛的查询,以便更好地检索上下文。
# Create a prompt template for step-back prompting
step_back_template = """You are an AI assistant tasked with generating broader, more general queries to improve context retrieval in a RAG system.
Given the original query, generate a step-back query that is more general and can help retrieve relevant background information.Original query: {original_query}Step-back query:"""step_back_prompt = PromptTemplate(input_variables=["original_query"],template=step_back_template
)
运行例子
original_query = "气候变化对环境的影响是什么?"
step_back_query = generate_step_back_query(original_query)
print("Original query:", original_query)
print("\nStep-back query:", step_back_query)
效果展示:
Original query: 气候变化对环境的影响是什么?Step-back query: 气候变化的一般影响是什么?
3-子查询分解
将复杂查询分解为更简单的子查询。
subquery_decomposition_template = """You are an AI assistant tasked with breaking down complex queries into simpler sub-queries for a RAG system.
Given the original query, decompose it into 2-4 simpler sub-queries that, when answered together, would provide a comprehensive response to the original query.Original query: {original_query}example: What are the impacts of climate change on the environment?Sub-queries:
1. What are the impacts of climate change on biodiversity?
2. How does climate change affect the oceans?
3. What are the effects of climate change on agriculture?
4. What are the impacts of climate change on human health?"""subquery_decomposition_prompt = PromptTemplate(input_variables=["original_query"],template=subquery_decomposition_template
)
运行例子:
original_query = "气候变化对环境的影响是什么?"
sub_queries = decompose_query(original_query)
print("\nSub-queries:")
for i, sub_query in enumerate(sub_queries, 1):print(sub_query)
效果展示:
Sub-queries:
Original query: 气候变化对环境的影响是什么?
1. 气候变化如何影响生物多样性和生态系统?
2. 气候变化对海洋环境和海洋生物有什么影响?
3. 气候变化如何影响天气模式和极端天气事件?
4. 气候变化对陆地环境,如森林和沙漠有什么影响?
如果对内容有什么疑问和建议可以私信和留言,也可以添加我加入大模型交流群,一起讨论大模型在创作、RAG和agent中的应用。
如何学习AI大模型?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业
?”“谁的饭碗又将不保了?
”等问题热议不断。
不如成为「掌握AI工具的技术人
」,毕竟AI时代,谁先尝试,谁就能占得先机!
想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高
那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
学习路线
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓