# graphrag-local-ollama **Repository Path**: GodJason/graphrag-local-ollama ## Basic Information - **Project Name**: graphrag-local-ollama - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: dependabot/github_actions/JamesIves/github-pages-deploy-action-4.6.3 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-30 - **Last Updated**: 2024-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 🤝 贡献 原著保护 **我们欢迎社区的贡献,以帮助增强GraphRAG Local Ollama!有关如何参与的更多详细信息 [Contributing Guidelines](CONTRIBUTING.md) 请参阅我们的社区。** # 🚀 GraphRAG Local Ollama - 知识图谱 欢迎来到**GraphRAG当地Ollama**!这个存储库是微软[GraphRAG]开源的改编版本(https://github.com/microsoft/graphrag),专为支持使用Ollama下载的本地模型而定制。告别收费的OpenAPI模型,欢迎使用Ollama进行高效、经济高效的本地推理! ## 📄 研究论文 有关GraphRAG实现的更多详细信息,请参阅 [GraphRAG paper](https://arxiv.org/pdf/2404.16130). **论文摘要** 检索增强生成(RAG)的使用,通过从外部知识源检索相关信息,使大型语言模型(LLMs)能够回答涉及私有和/或之前未见过的文档集合的问题。然而,RAG在针对整个文本语料库的全局问题上失败了,例如“数据集中的主要主题是什么?”,因为这本质上是一个查询聚焦的摘要(QFS)任务,而不是一个明确的检索任务。与此同时,先前的QFS方法无法扩展到典型RAG系统索引的文本量。为了结合这些对比方法的优势,我们提出了一种基于图的RAG方法,用于在私有文本语料库上进行问题回答,这种方法既能够扩展到用户问题的普遍性,也能够扩展到要索引的源文本量。我们的方法使用LLM在两个阶段构建基于图的文本索引:首先从源文档中派生出实体知识图谱,然后为所有密切相关的实体组预生成社区摘要。给定一个问题,每个社区摘要用于生成部分响应,然后所有部分响应再次汇总为最终响应提供给用户。对于一类在100万个令牌范围内的数据集上的全局意义构建问题,我们展示了基于图的RAG在生成答案的全面性和多样性方面,相较于简单的RAG基线,带来了显著的改进。 ## 🌟 特性 - **本地模型支持:** 利用Ollama的本地模型进行LLM和嵌入。 - **成本效益:** 不适用收费模型,降低成本提高效率。 - **易于设置:** 设置过程简单明了。 ## 📦 安装步骤 按照以下步骤设置此存储库,并将GraphRag与Ollama提供的本地模型一起使用 1. **创建并激活新的conda环境:** ```bash conda create -n graphrag-ollama-local python=3.10 conda activate graphrag-ollama-local ``` 2. **安装 Ollama:** - 访问 [Ollama's website](https://ollama.com/) 参考安装说明. - 运行: ```bash pip install ollama ``` 3. **使用Ollama下载所需的模型,我们可以选择Ollama提供的任何llm和嵌入模型:** ```bash ollama pull mistral #llm ollama pull nomic-embed-text #embedding ``` 4. **下载代码:** ```bash git clone https://github.com/TheAiSingularity/graphrag-local-ollama.git ``` 5. **导航到存储库目录:** ```bash cd graphrag-local-ollama/ ``` 6. **安装graphrag软件包 ** 这步很重要 :** ```bash pip install -e . ``` 7. **创建所需的输入目录:这是存储实验数据和结果的地方 - ./ragtest** ```bash mkdir -p ./ragtest/input ``` 8. **将样本数据文件夹输入/复制到 ./ragtest. Input/ 有运行安装程序的示例数据。您可以在此处以.txt格式添加自己的数据.** ```bash cp input/* ./ragtest/input ``` 9. **初始化/用于创建所需文件的ragtest文件夹:** ```bash python -m graphrag.index --init --root ./ragtest ``` 10. **移动settings.yaml文件,这是配置了ollama本地模型的主要预定义配置文件 :** ```bash mv settings.yaml ./ragtest ``` 用户可以通过更改模型进行实验。llm模型期望使用llama3、mistral、phi3等语言模型,嵌入模型部分期望使用Ollama提供的mxbai embed large、nomic embed text等嵌入模型。您可以在此处找到Ollama提供的完整型号列表https://ollama.com/library,可以在本地部署。默认的API基础URL为http://localhost:11434/v1LLM和http://localhost:11434/api对于嵌入,因此它们被添加到相应的部分。 ![输入图片说明](Screenshot%202024-07-09%20at%203.34.31%E2%80%AFAM-1.png) ![输入图片说明](Screenshot%202024-07-09%20at%203.36.28%E2%80%AFAM.png) 11. **运行索引,创建图表:** ```bash python -m graphrag.index --root ./ragtest ``` 12. **运行查询:仅支持全局方法** ```bash python -m graphrag.query --root ./ragtest --method global "What is machinelearning?" ``` **通过在settings.yaml中将graphml更改为“true”,可以保存图形,这些图形还可以用于可视化 :** snapshots: graphml: true **要可视化生成的graphml文件,您可以使用:https://gephi.org/users/download/或者使用repo visualize-graphml.py中提供的脚本 :** Pass the path to the .graphml file to the below line in visualize-graphml.py: graph = nx.read_graphml('output/20240708-161630/artifacts/summarized_graph.graphml') 13. **可视化.graphml :** ```bash python visualize-graphml.py ``` ## 引文 - 微软的原始GraphRAG存储库: [GraphRAG](https://github.com/microsoft/graphrag) - Ollama: [Ollama](https://ollama.com/) --- 按照上述步骤,您可以使用GraphRAG设置和使用本地模型,使该过程更具成本效益和效率。这对了解词与词之间的关系有很大帮助。