全局搜索 🔎
全数据集推理
基线RAG在处理需要跨数据集聚合信息以组成答案的查询时表现不佳。例如,“数据中的前5个主题是什么?”这样的查询表现极差,因为基线RAG依赖于数据集中语义相似文本内容的向量搜索。查询中没有任何内容可以引导其找到正确的信息。
然而,通过GraphRAG,我们可以回答这类问题,因为LLM生成的知识图谱结构告诉我们整个数据集的结构(以及主题)。这使得私有数据集可以被组织成有意义的语义集群,这些集群是预先总结的。使用我们的全局搜索方法,LLM利用这些集群在响应用户查询时总结这些主题。
方法论
```mermaid
title: 全局搜索数据流
%%{ init: { 'flowchart': { 'curve': 'step' } } }%% flowchart LR
uq[用户查询] --- .1
ch1[对话历史] --- .1
subgraph RIR
direction TB
ri1[评级中间<br/>响应 1]~~~ri2[评级中间<br/>响应 2] -."{1..N}".-rin[评级中间<br/>响应 N]
end
.1--打乱的社区<br/>报告批次 1-->RIR
.1--打乱的社区<br/>报告批次 2-->RIR---.2
.1--打乱的社区<br/>报告批次 N-->RIR
.2--排名 +<br/>过滤-->agr[聚合中间<br/>响应]-->res[响应]
map_llm_params
: 一个字典,包含在map
阶段传递给 LLM 调用的额外参数(例如,温度、最大令牌数)reduce_llm_params
: 一个字典,包含在reduce
阶段传递给 LLM 调用的额外参数(例如,温度、最大令牌数)context_builder_params
: 一个字典,包含在map
阶段构建上下文窗口时传递给context_builder
对象的额外参数concurrent_coroutines
: 控制map
阶段的并行度callbacks
: 可选的回调函数,可用于为 LLM 的完成流事件提供自定义事件处理程序
如何使用
全局搜索场景的示例可以在以下 notebook 中找到。