系列文章目录
玩转大语言模型——ollama导入huggingface下载的模型
玩转大语言模型——langchain调用ollama视觉多模态语言模型
文章目录
- 系列文章目录
- 前言
- 下载和安装
- 用下载项目的方式下载并安装
- 用pip方式下载并安装
- 生成知识图谱
- 初始化文件夹
- 修改模型配置
- 修改知识库生成配置
- 创建索引
- 搜索
前言
GraphRAG是微软开发并开源的一种图基检索增强生成(Graph-based Retrieval Augmented Generation)框架。GraphRAG结合了知识图谱(Knowledge Graph)和大型语言模型(LLM)的技术优势,旨在提升信息处理和问答能力。其基本原理在于,通过知识图谱从非结构化文本中提取结构化信息,并利用大型语言模型的生成能力,为用户提供准确、全面的回答。在本篇中将介绍如何使用GraphRAG结合大模型构建知识图谱。
下载和安装
下载过程分为两种,一种是下载项目,另外一种是直接使用pip下载,两种用法最后的效果是一致的,如果不需要修改源码,可以选择pip方式下载,这样比较方便。但在本篇中,两种都会提到,读者可以根据自己喜好选择。
用下载项目的方式下载并安装
下载
项目地址:https://github.com/microsoft/graphrag
为了方便大家下载,这里把git下载方式直接放到这里,直接执行就好。
安装
git clone https://github.com/microsoft/graphrag.git
切换到graphrag的下载目录,配置好虚拟环境之后,在命令行执行以下命令安装poetry资源包管理工具及相关依赖.
pip install poetry
poetry install
用pip方式下载并安装
没错,用pip方式下载只需要执行一个命令行就可以了
pip install graphrag
生成知识图谱
初始化文件夹
首先在项目文件夹下新建一个文件夹,笔者新建的文件夹为./ragtest
,如果是用项目方式下载,直接在项目下新建,如果是使用pip方式下载的,新建一个项目在新建的项目里新建文件夹。
再在./ragtest
文件夹下新建一个input
文件夹,将要生成知识图谱的文件放到input文件夹中。注意只能是txt文件,编码格式必须为 utf-8。
然后在命令行执行以下命令
graphrag init --root ./ragtest
执行命令后会生成配置文件settings.yaml
和提示词模板prompts
修改模型配置
在修改之前我们首先需要下载相关模型,在本篇中使用的是Ollama
使用Ollama下载语言模型mistral
和编码模型nomic-embed-text
ollama pull mistral
ollama pull nomic-embed-text
下载完可以使用ollama list
查看一下有没有下载成功
不过当前的模型并不能直接拿来使用,我们需要修改一下,不如可能会出现一些奇怪的错误,笔者遇到的问题是在生成entities时识别不到entity。
ollama show --modelfile mistral:latest > Modelfile
打开Modelfile文件,在PARAMETER后面这里添加配置。
PARAMETER num_ctx 10000
然后使用ollama根据配置创建新的模型
ollama create mistral:10k -f Modelfile
修改知识库生成配置
因为我们构建知识库的过程中需要使用到大语言模型和embedding模型,所有需要将设置修改为我们所使用的模型。
打开初始化文件目录,笔者的目录是./ragtest/settings.yaml
,修改以下两部分,将llm.model
修改为mistral:10k
,将llm.api_base
修改为http://localhost:11434/v1
,将embeddings.llm.model
修改为nomic-embed-text
,将embeddings.api_base
修改为http://localhost:11434/v1
llm:api_key: ${GRAPHRAG_API_KEY}type: openai_chat # or azure_openai_chatmodel: mistral:10kmodel_supports_json: false # recommended if this is available for your model.# max_tokens: 4000# request_timeout: 180.0api_base: http://localhost:11434/v1embeddings:## parallelization: override the global parallelization settings for embeddingsasync_mode: threaded # or asynciollm:api_key: ${GRAPHRAG_API_KEY}type: openai_embedding # or azure_openai_embeddingmodel: nomic-embed-textapi_base: http://localhost:11434/v1
创建索引
构建索引的过程就是构建知识图谱的过程,同样的,读者需要将笔者的路径替换为自己的路径。
graphrag index --root ./ragtest
如果运行显示如下说明创建成功
搜索
查询分为局部搜索(Local Search)和全局搜索(Global Search)。当用户的问题需要理解输入文档中提到的特定实体,需要详细了解某个实体及其相关信息时,局部搜索非常有效。而全局搜索在跨数据集进行信息总结上要优于局部搜索。
局部搜索
graphrag query --root ./ragtest --method local --query "要查询的问题"
全局搜索
graphrag query --root ./ragtest --method global --query "主要内容是什么"