Skip to content

全局搜索 🔎

全数据集推理

基线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 中找到。