问题验证
- 我在文档和discord上都搜索了答案。
问题
我想使用llama-index构建一个Agentic RAG,如https://learn.deeplearning.ai/courses/building-agentic-rag-with-llamaindex/lesson/1/introduction中提到的。我希望系统对大多数简单问题进行一次RAG查询。对于复杂问题,我希望系统使用代理进行多次检索,并根据答案给出总结。我的问题是,如何判断用户的提问是否应该由单个RAG查询还是代理来分解查询并进行多次检索?
我在这里有两个想法:
- 在开始时添加另一个LLM调用,以判断问题是否可以通过a)单个RAG检索回答,或者b)它足够复杂,需要多次检索。如果LLM调用回答“a)”,则将问题直接发送到RAG。如果LLM调用回答“b)”,则使用代理进行多次检索。
- 始终先将问题发送到RAG。找到一种方法让LLM判断答案是否足够全面,如果不够,就切换到代理进行多次检索。
您能提供关于如何处理的建议吗?
问题示例:
- 可以由单个RAG查询回答的简单示例:
- 支持IPv6的调度程序X是否支持?
- 统计计数器Y是什么?
- 需要代理通过多次检索回答的复杂示例:
- 查找所有支持IPv6的调度程序类型。(需要代理首先列出所有调度程序类型,然后检查每个调度程序是否支持IPv6。)
- 查找所有与计费功能相关的统计计数器。(需要代理首先列出所有统计计数器,然后检查每个计数器是否与计费功能相关。)
提前感谢您!
3条答案
按热度按时间tjjdgumg1#
要确定用户的问题是否应该由单个RAG查询回答,还是需要代理来分解查询并执行多个检索,您可以遵循以下指导原则:
对于实现,您可以考虑以下方法:
方法1:初始LLM调用以分类查询复杂性
方法2:初始RAG查询后处理
示例实现
对于简单的查询:
对于复杂的查询:
此外,还可以考虑使用
Router Query Engine
,这可能对根据其复杂性将查询路由到适当的引擎很有用 1(https://github.com/run-llama/llama_index/issues/10483) 。通过遵循这些指导原则和方法,您可以有效地确定用户的问题是否应该由单个RAG查询回答,还是需要代理来执行多个检索。
kyvafyod2#
@jerryjliu, 你能帮我检查一下我的问题吗?因为你是https://learn.deeplearning.ai/courses/building-agentic-rag-with-llamaindex/lesson/1/introduction的作者。:-)
5uzkadbs3#
你能帮忙提供一些建议吗?谢谢!