GraphRAG
1 安装
mkdir graphrag
virtualenv .venv
source .venv/bin/activate
pip install graphrag
2 初始化文本库
mkdir -p sanxiao/input
python -m graphrag.index --init --root ./sanxiao/
把需要放入知识库的内容复制到这个目录中
修改 ./sanxiao/setting.yaml 中的几个内容
llm: # 定义索引和查询模型配置
api_key: ${GRAPHRAG_LLM_API_KEY}
model: ${GRAPHRAG_LLM_MODEL}
api_base: ${GRAPHRAG_LLM_API_BASE}
model_supports_json: true # 如果模型不支持 json 输出,改为 false
embeddings: # 定义向量模型配置
llm:
api_key: ${GRAPHRAG_EMBEDDING_API_KEY}
model: ${GRAPHRAG_EMBEDDING_MODEL}
api_base: ${GRAPHRAG_EMBEDDING_API_BASE}
claim_extraction:
enabled: true
input:
file_pattern: ".*\\.txt$". # 要跟input目录中的文本扩展名一致
entity_extraction:
entity_types: ${GRAPHRAG_ENTITY_EXTRACTION_ENTITY_TYPES}
编辑 .env
# 配置索引模型
GRAPHRAG_LLM_API_KEY=sk-xxx
GRAPHRAG_LLM_MODEL=gpt-4o-mini
GRAPHRAG_LLM_API_BASE=[Site Unreachable](https://api.openai.com/v1)
# 配置向量模型
GRAPHRAG_EMBEDDING_API_KEY=sk-xxx
GRAPHRAG_EMBEDDING_MODEL=text-embedding-3-large
GRAPHRAG_EMBEDDING_API_BASE=https://api.openai.com/v1
GRAPHRAG_ENTITY_EXTRACTION_ENTITY_TYPES="办学理念,事件,人物,部门" # 这里定义关心的实体,用英文逗号分隔
!!! 可以索引的时候使用 gpt-4o-mini,查询的时候使用gpt-4o
3 自动优化提示词
python -m graphrag.prompt_tune \
--config ./sanxiao/settings.yaml --root ./sanxiao \
--no-entity-types \
--language Chinese \
--output sanxiao/prompts
4 索引
python -m graphrag.index --verbose --root ./sanxiao/ --nocache
5 查询
5.1 区别
在GraphRAG中,局部搜索(Local Search)和全局搜索(Global Search)是两种不同的查询方法,各自适用于不同类型的问题和信息需求。
5.1.1 局部搜索(Local Search)
- 目的:
- 局部搜索主要用于处理具体的、细节丰富的问题,关注特定实体及其相关概念。例如,当你想要了解某个具体人物的详细信息时,局部搜索是更合适的选择。
- 信息来源:
- 它利用知识图谱中的结构化数据和原始文本单元,聚焦于与查询相关的实体、关系和事件信息。这种方法能够提供更详细的上下文,帮助大型语言模型(LLM)进行更精准的推理。
- 优化原理:
- 局部搜索通过识别与查询相关的实体集,结合这些实体及其关联概念,从而增强对特定问题的搜索效率和准确性。
5.1.2 全局搜索(Global Search)
- 目的:
- 全局搜索则用于处理更为抽象和综合性的问题,适合需要跨文档聚合信息的查询。例如,询问某个主题的总体趋势或多个文档中的共同主题时,全局搜索会更有效。
- 信息来源:
- 全局搜索依赖于社区报告,这些报告是对数据集的语义结构进行总结的结果。通过映射-归约(map-reduce)方法,它能有效地组织和分析大量信息,以形成对整体查询的响应。
- 优化原理:
- 全局搜索通过将数据分解为小块进行独立处理(映射),然后汇总结果(归约),从而优化信息的聚合能力,使其能够高效处理复杂的跨文档查询。
5.1.3 何时使用哪种查询
- 使用局部搜索的场景:
- 当问题需要深入细节,涉及特定实体或关系时。
- 例如,询问“谁是斯克鲁奇,他的主要关系是什么?”。
- 使用全局搜索的场景:
- 当需要对多个文档或数据集进行综合分析时。
- 例如,询问“这篇故事中的主要主题是什么?”。
5.2 全局查询
python -m graphrag.query \
--root ./sanxiao \
--method global \
"三小的特色是什么?"
5.3 局部查询
python -m graphrag.query \
--root ./sanxiao \
--method local \
"三小的特色是什么?"
5.4 生成查询的多种格式
有多种查询格式,依靠 --response_type 设置,支持的查询格式有
- Multiple Paragraphs
- Single Paragraph
- Single Sentence
- List of 3-7 Points
- Single Page
- Multi-Page Report
默认查询输出格式为:Multiple Paragraphs
下面举例,使用的都是 global search,查询问题是“三小的特色是什么?”。
5.4.1 Single Paragraph
三小教育集团的特色在于其全面发展的教育理念和高质量的教育服务。该集团致力于培养学生的核心素养,强调德、智、体、美、劳的全面发展,以促进学生的综合素质提升,这与素质教育的目标相一致 [Data: Reports (17, 19, 18)]. 此外,三小强调集体智慧和团队合作,教师在教育实践中扮演着至关重要的角色,他们的工作直接影响教育质量和集团的发展 [Data: Reports (4, 3)]。
在课程设置方面,三小实施的综合任务课程和分科课程相辅相成,通过项目导向的学习方式,培养学生的批判性思维和创造力,鼓励他们在真实情境中解决问题 [Data: Reports (20)]. 项目式学习的广泛应用也促进了学生的主动学习和团队合作精神 [Data: Reports (20)]。此外,三小通过教师培训和课程改革,构建了一个相互滋养的教育生态系统,以更好地支持学生的成长 [Data: Reports (17, 18)]。
三小还注重积极行为的养成,认为良好的行为习惯有助于学生在情感、心理和社会适应方面的健康发展,从而提升学习效果和社交能力 [Data: Reports (3, 17)]。通过混龄教育和班组群的形式,三小促进了不同年龄段学生的互动与学习,推动了教育的创新与发展 [Data: Reports (12, 17)]。
5.4.2 Multiple Paragraphs
三小教育集团以其独特的教育理念和实践,致力于培养学生的综合素质,强调德、智、体、美、劳的全面发展。这种教育理念与素质教育相一致,体现了教育的多元化和全面性,旨在促进学生的综合素质提升 [Data: Reports (17, 19, 18)]。
### 教育目标与质量
三小的教育目标与高质量发展相结合,展现了其前瞻性和社会责任感。该集团关注学生的学业成绩与长远发展,确保学生在未来的学习和生活中具备必要的技能和素养 [Data: Reports (17, 18)]。通过实施课程改革,三小旨在适应新的教育需求,提升教育质量 [Data: Reports (17, 19)]。
### 教师的角色
教师在三小教育体系中扮演着至关重要的角色。他们不仅传授知识,还需关注学生的情感和社会发展,以更好地支持学生的成长。教师的工作直接影响教育质量和集团的发展 [Data: Reports (4, 3)]。
### 综合与分科课程
三小实施的综合任务课程通过项目导向的方式培养学生的综合素养,强调问题引领的学习方式,鼓励学生在真实情境中解决问题,从而提升他们的批判性思维和创造力 [Data: Reports (20, 108)]。同时,分科课程在教育体系中同样扮演着重要角色,旨在通过各学科的教学来提升学生的综合素养,为综合任务课程的实施提供必要的学科支持 [Data: Reports (20, 109)]。
### 项目式学习
项目式学习作为一种以项目为基础的学习方式,在三小的教育实践中得到了广泛应用。该方法强调学生在自主、合作和探究中发展能力,促进了学生的主动学习和团队合作精神 [Data: Reports (20, 110)]。
### 行为习惯的培养
三小还强调积极行为的养成,认为良好的行为习惯有助于学生在情感、心理和社会适应方面的健康发展,从而提升其学习效果和社交能力 [Data: Reports (3, 17)]。
### 品牌价值
通过不断提高教育质量,三小增强了其品牌价值,从而吸引更多的学生和家长的关注。品牌价值直接反映了其教育质量和特色 [Data: Reports (4, 9)]。
综上所述,三小的特色在于其全面的教育理念、高质量的教育服务、教师的关键作用、综合与分科课程的结合、项目式学习的广泛应用以及对学生行为习惯的重视。这些因素共同构成了三小独特的教育体系。
5.4.3 Single Sentence
三小的特色在于其全面发展的教育理念,强调德、智、体、美、劳的综合素质提升,同时注重教师的作用和团队合作,通过项目导向的综合任务课程和分科课程的实施,培养学生的批判性思维和创造力,此外,三小还通过混龄教育促进不同年龄段学生的互动与学习,以适应新的教育需求并提升教育质量 [Data: Reports (17, 19, 18, 4, 20, +more)].
5.4.4 List of 3-7 Points
## 引言
三小教育集团以其独特的教育理念和实践而闻名,致力于培养学生的综合素质,强调德、智、体、美、劳的全面发展。以下将详细探讨三小的特色及其在教育领域的影响。
## 教育理念
三小的教育理念强调素质教育,旨在促进学生的全面发展。这种理念不仅关注学术成绩,还重视学生的情感和社会发展,以支持他们的成长和未来的社会责任感 [Data: Reports (17, 19, 18)]。
## 教学方法
### 综合任务课程
三小实施的综合任务课程通过项目导向的方式,培养学生的综合素养。该课程强调问题引领的学习方式,鼓励学生在真实情境中解决问题,从而提升他们的批判性思维和创造力 [Data: Reports (20)]。
### 分科课程
在三小的教育体系中,分科课程同样扮演着重要角色。这些课程旨在通过各学科的教学来提升学生的综合素养,为综合任务课程的实施提供必要的学科支持 [Data: Reports (20)]。
### 项目式学习
项目式学习作为一种以项目为基础的学习方式,在三小的教育实践中得到了广泛应用。该方法强调学生在自主、合作和探究中发展能力,促进了学生的主动学习和团队合作精神 [Data: Reports (20)]。
## 教师角色
三小教育集团强调教师在教育过程中的重要性。教师不仅要传授知识,还需关注学生的情感和社会发展,以更好地支持学生的成长 [Data: Reports (4, 3)]。教师的综合育人能力的提升直接影响教育质量和集团的发展。
## 品牌价值与教育质量
三小通过不断提高教育质量,增强其品牌价值,从而吸引更多的学生和家长的关注。品牌价值直接反映了其教育质量和特色 [Data: Reports (4)]。此外,三小重视积极行为的养成,认为良好的行为习惯有助于学生的心理健康和学业成功 [Data: Reports (3, 17)]。
## 结论
三小的特色在于其全面的教育理念、创新的教学方法、重视教师角色以及对教育质量的持续追求。这些特色不仅提升了学生的综合素质,也为教育界树立了良好的榜样。通过这些努力,三小将继续在教育领域发挥重要作用,培养出更多具备社会责任感和创新能力的人才。
5.4.5 Single Page
三小教育集团在教育理念、课程设置和教师发展等方面展现出独特的特色,以下是其主要特点的综合分析:
## 教育理念
三小致力于培养学生的核心素养,强调德、智、体、美、劳的全面发展,以促进学生的综合素质提升。这种教育理念与素质教育相一致,体现了教育的多元化和全面性 [Data: Reports (17, 19, 18)]。此外,三小的教育目标与高质量发展相结合,关注学生的长远发展和社会责任感,展现出前瞻性和社会责任感 [Data: Reports (17, 18)]。
## 教师角色
教师在三小教育体系中扮演着至关重要的角色,他们不仅传授知识,还需关注学生的情感和社会发展,以更好地支持学生的成长 [Data: Reports (4, 3, 20)]。三小强调集体智慧和团队合作,教师的工作直接影响教育质量和集团的发展 [Data: Reports (4, 3, 20)]。
## 课程设置
三小实施的综合任务课程旨在通过项目导向的方式培养学生的综合素养,强调问题引领的学习方式,鼓励学生在真实情境中解决问题,从而提升他们的批判性思维和创造力 [Data: Reports (20)]。分科课程在三小的教育体系中同样扮演着重要角色,旨在通过各学科的教学来提升学生的综合素养,为综合任务课程的实施提供必要的学科支持 [Data: Reports (20)]。
## 学习方式
项目式学习作为一种以项目为基础的学习方式,在三小的教育实践中得到了广泛应用,强调学生在自主、合作和探究中发展能力,促进了学生的主动学习和团队合作精神 [Data: Reports (20)]。此外,三小通过实施课程改革,旨在适应新的教育需求,提升教育质量,确保学生在未来的学习和生活中具备必要的技能和素养 [Data: Reports (19, 17)]。
## 行为习惯
三小重视积极行为的养成,认为良好的行为习惯与学生的心理健康密切相关,强调教育工作者在这一过程中的重要角色 [Data: Reports (3, 17)]。
## 结论
综上所述,三小的特色在于其全面的教育理念、重视教师角色、创新的课程设置、灵活的学习方式以及对学生行为习惯的关注。这些特色共同构成了三小教育集团的独特教育模式,旨在培养全面发展的学生,适应未来社会的需求。
5.4.6 Multi-Page Report
## 引言
三小教育集团以其独特的教育理念和实践,致力于培养学生的综合素质,强调德、智、体、美、劳的全面发展。这一教育模式不仅符合素质教育的要求,还体现了教育的多元化和全面性。
## 教育理念
三小的教育理念强调集体智慧和团队合作,教师在这一理念中扮演着至关重要的角色。教师的专业能力和教育质量直接影响到学生的成长和集团的发展 [Data: Reports (4, 3)]。通过教师培训和课程改革,三小构建了一个相互滋养的教育生态系统,以更好地支持学生的成长 [Data: Reports (17, 18)]。
## 课程设置
### 综合任务课程
三小实施的综合任务课程旨在通过项目导向的方式培养学生的综合素养,强调问题引领的学习方式。这种方法鼓励学生在真实情境中解决问题,从而提升他们的批判性思维和创造力 [Data: Reports (20, 108)]。
### 分科课程
分科课程在三小的教育体系中同样扮演着重要角色,旨在通过各学科的教学来提升学生的综合素养,为综合任务课程的实施提供必要的学科支持 [Data: Reports (20, 109)]。
### 项目式学习
项目式学习作为一种以项目为基础的学习方式,在三小的教育实践中得到了广泛应用。它强调学生在自主、合作和探究中发展能力,促进了学生的主动学习和团队合作精神 [Data: Reports (20, 110)]。
## 教育质量与品牌价值
三小教育集团通过不断提高教育质量,增强其品牌价值,从而吸引更多的学生和家长的关注。品牌价值直接反映了其教育质量和特色 [Data: Reports (4, 9)]。
## 学生发展
三小强调积极行为的养成,认为良好的行为习惯有助于学生在情感、心理和社会适应方面的健康发展,从而提升学习效果和社交能力 [Data: Reports (3, 17)]。此外,三小通过混龄教育和班组群的形式,促进不同年龄段学生的互动与学习,推动教育的创新与发展 [Data: Reports (12, 17)]。
## 结论
综上所述,三小的特色在于其全面的教育理念、丰富的课程设置、注重教育质量与品牌价值的提升,以及对学生综合素质的全面培养。这些特色共同构成了三小教育集团在教育领域的独特地位和影响力。
5.4.7 不输出 [Data:xxx]
查询时加上`不要输出[Data|Entities:xxx]
python -m graphrag.query --root ./sanxiao --method global "三小的特色是什么?不要输出[Data|Entities: xxx]" --response_type "Single Sentence"
INFO: Reading settings from sanxiao/settings.yaml
creating llm client with {'api_key': 'REDACTED,len=51', 'type': "openai_chat", 'model': 'gpt-4o-mini', 'max_tokens': 4000, 'temperature': 0.0, 'top_p': 1.0, 'n': 1, 'request_timeout': 180.0, 'api_base': 'https://oneapi.ibreakwall.me:1443/v1', 'api_version': None, 'organization': None, 'proxy': None, 'cognitive_services_endpoint': None, 'deployment_name': None, 'model_supports_json': False, 'tokens_per_minute': 0, 'requests_per_minute': 0, 'max_retries': 10, 'max_retry_wait': 10.0, 'sleep_on_rate_limit_recommendation': True, 'concurrent_requests': 25}
SUCCESS: Global Search Response: 三小的特色在于其教育理念强调德、智、体、美、劳的有机融合,致力于培养学生的核心素养和综合能力,通过综合任务课程和项目式学习促进学生的全面发展,同时重视道德品质与智力水平的提升,形成一个相互支持的教育生态系统。