主题
概念
检索器负责根据用户查询(或对话消息)取回最相关的上下文。
它可以构建在索引之上,也可以独立定义。它是查询引擎(以及对话引擎)里的关键构件,用于检索相关上下文。
提示
不确定检索器在 RAG 流程中处于哪个位置?读一读高层概念
使用方式
从这里开始:
retriever = index.as_retriever()
nodes = retriever.retrieve("Who is Paul Graham?")1
2
2
开始使用
从索引获取检索器:
retriever = index.as_retriever()1
针对一个问题检索相关上下文:
nodes = retriever.retrieve("Who is Paul Graham?")1
注:如何构建索引,见索引(Indexing)
高层 API
选择检索器
你可以通过 retriever_mode 选择与索引类型匹配的检索器类。例如配合 SummaryIndex:
retriever = summary_index.as_retriever(
retriever_mode="llm",
)1
2
3
2
3
这会在摘要索引之上创建一个 SummaryIndexLLMRetriever。
(索引专属的)检索器模式与它们所映射到的检索器类的完整对照,见检索器模式。
配置检索器
同理,你也可以传入关键字参数来配置所选的检索器。
注:有效的关键字参数请查阅所选检索器类构造函数的 API 参考。
例如,若我们选择了 “llm” 检索器模式,可以这样写:
retriever = summary_index.as_retriever(
retriever_mode="llm",
choice_batch_size=5,
)1
2
3
4
2
3
4
低层组合 API
需要更细粒度的控制时,可以使用低层组合 API。
要达到与上面相同的效果,可以直接导入并构造你想要的检索器类:
from llama_index.core.retrievers import SummaryIndexLLMRetriever
retriever = SummaryIndexLLMRetriever(
index=summary_index,
choice_batch_size=5,
)1
2
3
4
5
6
2
3
4
5
6
示例
更多示例见检索器指南。