71.高级RAG-路由检索器(智能选择检索器)

71.高级RAG-路由检索器(智能选择检索器) 内容参考于图灵AI大模型全栈路由检索器根据问题智能匹配合适的检索器就是说检索器a里面的内容是语文相关的检索器b里面的内容是数学相关的路由检索器就是通过问题问大模型使用检索器a还是检索器b好一点在路由检索器中检索器a和检索器b被称为工具a和工具b所以会有一个检索器转工具的过程效果图如下图红框红色的文字是选择原因retriever 0选择的就是我们deepseek的检索器第三个问题的选择原因retriever 1选择的就是我们小说的检索器问题是 萧炎对DeepSeek的看法这样的问题选择哪一个检索器就取决于我们设置的大语言模型的智商了如下图它选择的是小说的检索器代码from llama_index.core import ( VectorStoreIndex, SimpleDirectoryReader, ) # 这个RetrieverTool库用来把检索器转成工具 from llama_index.core.tools import RetrieverTool from llama_index.core.retrievers import RouterRetriever from base_llm import llm, embed_model # 加载 deepseek 文档 deep_docs SimpleDirectoryReader( input_files[./data_file/deepseek介绍.txt] ).load_data() # 创建 deepseek 文档的索引 deep_index VectorStoreIndex.from_documents( deep_docs, embed_modelembed_model ) # 加载 小说文档 doupo_docs SimpleDirectoryReader( input_files[./data_file/小说.txt] ).load_data() # 创建 小说文档 的索引 doupo_index VectorStoreIndex.from_documents( doupo_docs, embed_modelembed_model ) # 创建 deepseek的 Retriever检索器 deep_retriever deep_index.as_retriever( similarity_top_k3 ) # 创建 小说的 Retriever检索器 doupo_retriever doupo_index.as_retriever( similarity_top_k3 ) # deepseek的 Retriever检索器转成 Tool工具 deep_tool RetrieverTool.from_defaults( retrieverdeep_retriever, # 描述当前工具有什么用路由检索器会根据这个描述找合适的工具 description 用于检索 DeepSeek 相关介绍资料。 适合回答 DeepSeek 的背景、模型特点、技术能力、应用场景、人物评价等问题。 ) # 小说的 Retriever检索器转成 Tool工具 doupo_tool RetrieverTool.from_defaults( retrieverdoupo_retriever, # 描述当前工具有什么用路由检索器会根据这个描述找合适的工具 description 用于检索小说相关内容。 适合回答小说人物、剧情发展、章节情节、角色关系、功法设定等问题。 ) # 创建 RouterRetriever路由检索器 router_retriever RouterRetriever.from_defaults( retriever_tools[ deep_tool, doupo_tool ], llmllm, # 能不能一次选择多个 Retriever select_multiFalse ) # 开始检索 questions [ # DeepSeek 为什么受到关注, # Alexander Wang 对 DeepSeek 的评价是什么, # 萧炎和萧薰儿是什么关系, 萧炎对DeepSeek的看法 ] for query in questions: nodes router_retriever.retrieve(query) print(f\n用户问题: {query}) print( * 50) for node in nodes: print(node.text) print()