LLM 可以通过迭代地根据先前的结果改进查询来执行多步骤检索,从而能够更深入地探索复杂的问题。这个过程包括使用 LLM 生成后续查询、分析检索到的信息并动态调整搜索策略。例如,如果用户问“是什么导致了 2008 年金融危机?”,LLM 可能会首先检索高层摘要,识别差距(例如,关于抵押贷款支持证券的不明确提及),然后构建一个新的查询,例如“次级抵押贷款违约如何引发银行倒闭?”。这个循环会一直持续,直到答案足够详细或可用数据耗尽。
为了实现这一点,开发人员可以构建 LLM,使其充当评估中间结果的决策者。第一步是处理初始查询并生成搜索提示,例如提取关键字或为数据库重新措辞问题。在检索到初始文档或数据片段后,LLM 会解析它们以识别歧义或缺失的上下文。例如,如果用户请求帮助调试 Python 错误,LLM 可能会首先检索通用故障排除指南,注意到该错误与特定库相关,然后查询该库的异常处理文档。这需要将 LLM 与检索工具(例如,API、向量数据库)集成,并设计明确指示模型评估结果并规划下一步的提示。
关键挑战包括防止无限循环和确保相关性。开发人员可以设置迭代限制(例如,3-5 步)或实施置信度阈值,如果 LLM 确定进一步搜索不会改善结果,则停止搜索。例如,医疗诊断助手可能会在检索到相互冲突的指南后停止并升级到人工。诸如 LangChain 或 LlamaIndex 之类的工具通过管理步骤之间的上下文来简化构建此类管道的过程。测试至关重要:像部分数据(例如,缺少 API 规范)这样的场景需要 LLM 优雅地处理不确定性,或许通过扩大搜索范围而不是重复失败的查询。通过结合结构化的提示、检索集成和错误处理,多步骤检索成为解决开放式问题的强大方法。