global search

引言

全局搜索(Global Search)是一种通过MapReduce方式处理所有AI生成的社区报告,从而生成答案的方法。这种方法虽然资源密集,但通常能很好地回答需要理解整个数据集的问题(例如,“笔记本中提到的草药的最重要价值是什么?”)。本文将详细介绍全局搜索的工作原理、实现细节以及如何在实际项目中应用它。

前置知识

在深入了解全局搜索之前,我们需要掌握以下几个关键概念:

  1. MapReduce:一种分布式计算模型,用于处理和生成大数据集。它包括两个主要步骤:Map(映射)和Reduce(归约)。
  2. LLM(Large Language Model):大型语言模型,如GPT-4,能够理解和生成自然语言文本。
  3. Pandas:一个强大的数据处理库,用于数据分析和操作。
  4. Tiktoken:一个用于编码和解码文本的库,常用于处理语言模型的输入和输出。

全局搜索的工作原理

全局搜索的核心思想是通过MapReduce的方式处理AI生成的社区报告,从而生成答案。具体步骤如下:

  1. Map阶段:将社区报告分割成预定义大小的文本块,每个文本块生成一个中间响应,包含要点列表及其重要性评分。
  2. Reduce阶段:从中间响应中筛选出最重要的一组要点,并将其聚合作为上下文,生成最终响应。

代码示例

1. 设置LLM

首先,我们需要设置LLM模型。以下是代码示例:

import os
from graphrag.query.llm.oai.chat_openai import ChatOpenAI
from graphrag.query.llm.oai.typing import OpenaiApiType

api_key = os.environ["GRAPHRAG_API_KEY"]
llm_model = os.environ["GRAPHRAG_LLM_MODEL"]

llm = ChatOpenAI(
    api_key=api_key,
    model=llm_model,
    api_type=OpenaiApiType.OpenAI,  # 可以是OpenaiApiType.OpenAI或OpenaiApiType.AzureOpenAI
    max_retries=20,
)

2. 加载社区报告

接下来,我们加载社区报告作为全局搜索的上下文数据。以下是代码示例:

import pandas as pd
from graphrag.query.indexer_adapters import read_indexer_entities
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值