动手实现GraphRAG,检索效果大幅提升

1 理解检索增强生成(RAG)

检索增强生成(RAG)技术通过融合检索得到的文档和用户输入的查询,为语言模型注入了额外的上下文信息。这种结合不仅丰富了模型的知识库,还提升了其回答的准确性和相关性。

例如,当用户提出涉及特定个人信息或商业数据的问题时,RAG能够从预设的数据源中提取关键信息,辅助模型给出更加精准的答复。

简而言之,RAG技术就像是给语言模型配备了一个智能的背景知识库,使其在面对复杂问题时,能够做出更加明智的回应。

2 GraphRAG:通过图形结构增强上下文

GraphRAG技术在传统RAG的基础上更进一步,通过构建信息的图形网络,实现了对数据的深度理解和应用。这不仅仅是简单地检索相关文档,更重要的是能够洞察文档中实体间的复杂联系。

举个例子,假设数据集中包含了纽约、洛杉矶和芝加哥等城市的信息。GraphRAG不仅能够检索到这些城市的相关资料,还能识别并利用它们之间的各种关系,比如纽约与洛杉矶之间的贸易伙伴关系,或是洛杉矶与芝加哥之间的文化交流项目。

这样的技术使GraphRAG在处理信息时能够展现出更为丰富的洞察力和更深层次的分析能力。

3 设置环境

源码地址:

https://github.com/aniket-work/why_graphRAG_such_game_changer

创建虚拟环境:

python -m venv why_graphRAG_such_game_changer   

激活环境:

why_graphRAG_such_game_changer\Scripts\activate   (Windows)      source why_graphRAG_such_game_changer/bin/activate  (Unix/macOS   

安装依赖项:

cd path/to/your/project   pip install -r requirements.txt   

使用Ollama拉取必要的模型:

ollama pull mistral   ollama pull nomic-embed-text   

安装Ollama:

  • 访问Ollama官方网站:https://ollama.ai/

  • 下载适合的操作系统的版本(Windows、macOS或Linux)。

  • 按照操作系统提供的安装说明进行操作。

  • 安装完成后,打开终端或命令提示符。

  • 通过运行以下命令来验证安装:

ollama --version   

初始化和使用GraphRAG:

python -m graphrag.index --init --root ragtest   

下载数据

你可以下载任何你喜欢的数据,已经将一个小型的、基于场景的、面向关系的故事情节检查并放入了“input”文件夹中。

4 初始化过程

运行命令python -m graphrag.index --init --root ragtest初始化GraphRAG时,以下一系列操作将会自动进行:

创建配置文件

  • .env:此文件包含运行GraphRAG管道所需的环境变量。它通常包括用于OpenAI API或Azure OpenAI端点的API密钥。例如:

    GRAPHRAG_API_KEY=<API_KEY>   
    
    
  • settings.yaml:此文件保存GraphRAG管道的设置。可以修改此文件以调整各种管道设置,例如Azure OpenAI的API基础、版本和部署名称。例如:

    llm:     type: azure_openai_chat     api_base: https://<instance>.openai.azure.com     api_version: 2024-02-15-preview     deployment_name: <azure_model_deployment_name>   
    
    
  • prompts/:此目录包含GraphRAG使用的默认提示。这些提示指导大型语言模型(LLM)生成回答。可以修改这些提示或运行自动提示调整命令以生成适应你数据的新提示。

5 目的和用途

  • .env 文件:

  • 目的:存储环境变量,包括用于验证对OpenAI或Azure OpenAI服务请求的API密钥。

  • 用途:此文件由GraphRAG系统引用,以访问必要的凭据和配置设置。

  • settings.yaml 文件:

  • 目的:包含GraphRAG管道的详细配置设置,如API端点、模型版本和部署名称。

  • 用途:此文件用于自定义GraphRAG管道的行为,允许用户指定使用哪个LLM以及如何与之交互。

  • prompts/ 目录:

  • 目的:保存默认的LLM提示,指导模型生成回答。这些提示可以根据你的数据的具体需求进行定制。

  • 用途:用户可以修改提示以提高生成回答的准确性和相关性。该目录还支持运行自动提示调整命令以创建新的、特定于数据的提示。

6 修改 settings.yaml

由于我们打算在本地运行graphRAG,需要对默认的 settings.yaml 文件进行一些更改。

encoding_model: cl100k_base   skip_workflows: []   llm:     api_key: ${GRAPHRAG_API_KEY}     type: openai_chat     model: mistral     model_supports_json: true   api_base: http://localhost:11434/v1   parallelization:     stagger: 0.3   async_mode: threaded   embeddings:     async_mode: threaded     llm:       api_key: ${GRAPHRAG_API_KEY}       type: openai_embedding       model: nomic_embed_text       api_base: http://localhost:11434/api   

7 修改以使用 Ollama 嵌入

GraphRAG 本身不支持 Ollama 嵌入模型,但可以通过修改 GraphRAG 库中的特定文件来添加此支持。通过编辑 openai_embeddings_llm.py 文件,我们可以启用使用 Ollama 嵌入模型。这涉及导入必要的模块并更新代码以调用 Ollama 的嵌入函数,允许我们在 GraphRAG 管道中利用高级嵌入。

以下是如何更新 openai_embeddings_llm.py 文件的方法:

from typing_extensions import Unpack   from graphrag.llm.base import BaseLLM   from graphrag.llm.types import EmbeddingInput, EmbeddingOutput, LLMInput   from .openai_configuration import OpenAIConfiguration   from .types import OpenAIClientTypes   import ollama      class OpenAIEmbeddingsLLM(BaseLLM[EmbeddingInput, EmbeddingOutput]):       """       使用 Ollama 进行嵌入的自定义 LLM(大型语言模型)实现。       """          def __init__(self, client: OpenAIClientTypes, configuration: OpenAIConfiguration):           """           初始化 OpenAIEmbeddingsLLM 实例。              参数:               client (OpenAIClientTypes): 与AI服务交互的客户端。               configuration (OpenAIConfiguration): AI服务的配置设置。           """           self._client = client           self._configuration = configuration          async def _execute_llm(           self, input: EmbeddingInput, **kwargs: Unpack[LLMInput]       ) -> EmbeddingOutput | None:           """           使用 Ollama 嵌入执行大型语言模型。              参数:               input (EmbeddingInput): 嵌入模型的输入数据。               **kwargs (Unpack[LLMInput]): 模型参数的附加关键字参数。              返回:               EmbeddingOutput | None: 模型的输出嵌入或如果没有输出则为 None。           """           args = {               "model": self._configuration.model,               **(kwargs.get("model_parameters") or {}),           }           embedding_list = []           for inp in input:               embedding = ollama.embeddings(model="nomic-embed-text", prompt=inp)               embedding_list.append(embedding["embedding"])           return embedding_list   

8 使用 GraphRAG 运行查询

使用以下命令索引数据:

python -m graphrag.index --root .\ragtest   

输出

运行查询以测试设置:

python -m graphrag.query --root .\ragtest --method global "How was the impact of Lily's action on villagers"   

输出

9 结语

未来,人工智能在商业领域的影响力将日益增强。那些能够将人工智能技术有效融入其业务运营的公司,将具备更快的创新速度、更优质的客户服务体验,以及更高效的流程优化能力。GraphRAG技术的出现,仅是人工智能潜力的冰山一角。

随着时间推移,人工智能将变得更加精密复杂。它将不仅能够理解问题,还能生成贴近人类思维的回答。预计不久的将来,企业将见证一种新型人工智能系统的诞生——这些系统不仅能够回答问题,还能基于海量数据分析提供战略性的见解和建议。因此,对于任何希望在竞争中保持领先地位的企业而言,积极拥抱人工智能并持续关注其最新发展,显得尤为关键。这不仅是一个选择,更是一个必然的趋势。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文转自 https://blog.csdn.net/m0_59164304/article/details/140879283?spm=1001.2014.3001.5501,如有侵权,请联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值