RAG在大模型时代,被寄予了厚望,但在近一年多各大小公司的实施过程中,其效果远没有抖音中宣传的那么振奋人心,其原因是多方面的。这篇文章就RAG中的一个弱项–局部性来展开讨论。
一、RAG原理
图1描述了RAG的原理,用户输入了一个指令Instruct,RAG将其与Document store(向量库)中的预存文本进行匹配,然后将符合条件的筛选文本(Retrieved Documents)与指令Instruct,共同合成为一个增强型的Prompt,并将该增强型Prompt喂给大模型,
最终大模型根据此增强型Prompt,生成最终的Response。
图1 RAG原理图(来源于网络)
因为关于RAG的文章,网络上非常多,本文不再缀叙,因前后逻辑理解上的需要,只就RAG基本流程进行说明。需要更详细了解RAG原理,可参考以下两篇博客:
-
RAG技术架构与实现原理
https://cloud.tencent.com.cn/developer/article/2436421
-
用通俗易懂的方式讲解:一文详解大模型 RAG 模块
https://blog.youkuaiyun.com/python1222\_/article/details/140124845
二、RAG的缺陷
目前RAG效果不佳的原因,一个是Document=>Chunks的切分策略,另一个是在向量库检索(Retrieval)与指令Instruct关联的文本(Chunks)策略。
Document=>Chunks的切分策略最大的问题,如何将一篇完整的文档,自动划分为数个具有完整语义的段落集合,但现有的工具,比如Langchain里提供的RecursiveCharacterTextSpliter、CharacterTextSpliter等,都是简单的武断的将文档分成若干个段落,具有完整语义的段落被拆分为数个chunks,或者一个chunk包含几个不同语义的段落,这样的数据预处理,自然会导致在LLM推理时效果不佳。
从向量库检索匹配指令Instruct的文本,存在只能匹配细粒度的问题,如果用户指令需要从宏观上去总结一篇文章,那传统的RAG的表现就很糟糕了,因为这是传统RAG技术架构上的先天缺陷导致。传统RAG是将一篇文章打碎拆分为几个小的章节(chunks),然后embedding后存入向量库,在查询阶段,RAG将用户指令Instruct挨个在向量库与这些chunks的embedding向量进行相似度匹配,然后输出最匹配的k个作为prompt的上下文(context),无论是在文档预处理进向量库阶段,还是用户查询阶段,都没家考虑各个chunk之间的关联,这就形成了普通RAG技术的先天设计缺陷。
所以,微软这些牛人就针对上面提到的这个RAG先天设计缺陷,提出了GraphRAG的理念和实现版本。
三、GraphRAG
论文:《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》
源码:https://github.com/microsoft/graphrag
GraphRAG提出了一种回答总结类(summary)问题的算法思路,图2展示了GraphRAG算法的工作流程,包括索引建立阶段(index time)和查询阶段(query time)。
图2 GraphRAG算法工作流
- 索引建立(index time)
索引建立阶段,属于数据预处理阶段,主要目的是从提供的文档集合中,提取出知识图谱(Knowledge Graph),然后以聚类算法(Leiden),将知识图谱分为数个社区(community),并总结每个社区(community)所表达的含义(community summary)。
- 查询(query time)
查询阶段,是建立在索引建立的阶段基础上,GraphRAG系统的终端用户,在此阶段加入进来,并向系统提供查询指令Instruct。GraphRAG将用户Instruct与每个社区的community summary进行相似度匹配,并将匹配结果作为最终喂给大模型的prompt的上下文(context),以生成返回给用户的最终回答。
三、GraphRAG部署
GraphRAG部署分为安装包部署和源码部署,这里推荐源码部署,因为部署过程中,可能会遇到不可预知的问题,有些问题只能修改源码才能规避。
1、安装依赖环境
安装依赖管理工具poetry,poetry是比pip更完善依赖管理工具,只要通过poetry安装或删除的包,poetry都会对pyproject.toml文件进行更新。
安装graphrag依赖包
安装openai sdk
2、索引建立
2.1 配置.env文件
配置GRAPHRAG_API_KEY,该API_KEY是OpenAI、Qwen、GLM等大模型API的API Key,可自行去各大模型厂商的官网获取。
2.2 配置settings.yaml
配置llm->model和llm->api_base,使GraphRAG能访问到大模型 API接口
配置embeddings的llm->model和llm->api_base,配置方法同上。
2.3 搭建数据集
将数据集文本 flatten方式存放在input文件夹下,本文目的是展示搭建GraphRAG的流程,数据集只包含一个文本文件。
2.4 建立索引
运行poetry run poe index --root . ,
执行到create_base_entity_graph阶段,遇到错误,查日志发现是大模型服务器证书是自验证的证书,而不是CA这类权威机构颁发的证书。,如果所在网络没有报证书校验问题,可忽略下面跳过证书验证的部分。
为解决自验证证书问题,只能修改GraphRAG网络访问部分的代码,需要修改graphrag/llm/openai/create_openai_client.py、graphrag/query/oai/base.py和tiktoken/loader.py三个文件。
graphrag/llm/openai/create_openai_client.py需要修改:
graphrag/query/oai/base.py需要修改:
tiktoken/loader.py需要修改:
然后再执行构建索引指令,即可成功构建索引。
2.4 查询
执行以下指令,进行global方式查询。
global方式查询效果如下:
执行以下指令,进行local方式查询。
local方式查询效果如下:
至此,GraphRAG调试环境部署完成。
如何系统的去学习大模型LLM ?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业
?”“谁的饭碗又将不保了?
”等问题热议不断。
事实上,抢你饭碗的不是AI,而是会利用AI的人。
继科大讯飞、阿里、华为
等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?
与其焦虑……
不如成为「掌握AI工具的技术人
」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
一、LLM大模型经典书籍
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。
二、640套LLM大模型报告合集
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
三、LLM大模型系列视频教程
四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)
LLM大模型学习路线 ↓
阶段1:AI大模型时代的基础理解
-
目标:了解AI大模型的基本概念、发展历程和核心原理。
-
内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践
- L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
-
目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
-
内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例
- L2.2 Prompt框架
- L2.3 流水线工程
- L2.4 总结与展望
阶段3:AI大模型应用架构实践
-
目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
-
内容:
- L3.1 Agent模型框架
- L3.2 MetaGPT
- L3.3 ChatGLM
- L3.4 LLAMA
- L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
-
目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
-
内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
这份 LLM大模型资料
包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓