AI应用最害怕的就是模型幻觉,同一个问题收到不同的回答是令人绝望的事情,想象一下:
-
你如果是一个患者,同一个问题,医生给了你两个回答,你慌不慌?
-
你如果是一个律师,同一个问题,律师给了你完全不同的结果,你怕不怕?
现阶段做AI应用来说,想解决不光是模型问题,还想让AI回答得更好,而回答得更好,就需要借助外部知识库,从而诞生了RAG这个技术。
RAG是一个融合了基于检索和基于生成模型优势的框架。
它会从知识库中检索相关的外部信息(通常是文档或段落),并依据这些信息,组装提示词,而后模型会针对用户的查询生成更精准、上下文更丰富的回答。
其工作工程如下,首先是传统流程:
-
问题:“在美国,什么是房东和租户之间的法律义务?”
-
提示词:
你是一个资深律师,现在有用户问你法律问题,请你解答。
当前用户的问题是:
在美国,什么是房东和租户之间的法律义务?
- 结果:“在美国,房东和租户之间的法律义务包括租金支付、物业维护、终止合同和保证房产安全。然而,具体的法律义务因州而异,租户和房东必须遵守当地的法规。”
这里可能的问题:
-
缺乏具体的法律依据。
-
没有提到具体的条文或具体州的法律规定,可能会给用户带来误导,尤其是在需要明确法律依据时。
其次是RAG流程,主要看提示词的变化:
你是一个资深律师,现在有用户问你法律问题,请你解答。
当前用户的问题是:
在美国,什么是房东和租户之间的法律义务?
以下是检索到的相关法律条文和案例,帮助你回答用户问题:
根据《美国统一住宅租赁法》第504条,房东有责任确保租赁物业保持适宜的居住条件,并进行必要的维修和保养。
根据《加利福尼亚州民法典》第1941.1条,房东必须确保租赁物业提供安全的居住环境,包括处理供水、供暖等系统问题。
《纽约州租赁法》第227条规定,房东有义务确保物业符合当地建筑标准,并为租户提供安全的居住条件。
美国法院在多个案例中判定,房东未能履行上述义务时,租户有权要求赔偿,包括但不限于租金减免或搬迁费用。
请根据以上法律条文与案例回答用户的问题。
于是答案是:
根据《美国统一住宅租赁法》第504条,房东有责任确保租赁物业保持适宜的居住条件,并负责进行维修和保养。此外,在加利福尼亚州,根据《加利福尼亚州民法典》第1941.1条,房东必须确保租赁物业提供安全的居住环境,包括处理供水和供暖等系统问题。如果房东未履行这些义务,租户可以根据法律要求赔偿。此外,依据《纽约州租赁法》第227条,房东还需确保物业符合当地建筑标准,并为租户提供安全的居住条件。在多个法院判例中,房东未能履行上述责任时,租户有权要求赔偿,包括租金减免或搬迁费用等。
在这个基础上,用户会认为答案更为靠谱,因为相关的权威条款、信息来源全部被带出来了。
RAG是非常好的解决模型幻觉框架,并且能显著提升模型回答质量,但在实际使用过程中,会发现他对模型不太友好,因为他只能提供数据片段,而不能提供数据+逻辑。
其实这本身不是什么问题,只需要在RAG上叠加工程能力,让他具备逻辑能力即可,其核心在于AI应用基于的知识库本身结构化程度。
基于此,业内提出了一套新的框架KAG(Knowledge Augmented Generation)知识增强生成,想要去解决RAG的一些缺陷,今天我们就主要介绍这是什么东西。
RAG的缺陷
因为RAG 存在着向量相似度与知识推理相关性差距大、对知识逻辑(如数值、时间关系、专家规则等)不敏感等问题,这些缺陷阻碍了专业知识服务的落地。
这里大家可能不太了解是什么,举个例子:
假设你正在开发一个医学知识服务系统,用户输入一个病症的描述,系统需要根据病历数据提供相关的诊断信息。
假设用户输入的是:“病人出现反复头痛、恶心和呕吐,体检发现血压升高。”
RAG模型首先会从知识库中检索出一些相似的病例和可能的诊断。
这时,模型可能会检索到与“高血压”相关的病例,但是未必能从这些检索到的信息中得出合适的诊断,因为这个问题涉及到多个病理因素(如血压、神经系统异常等)的关联。
输入提示词:“病人头痛、恶心、呕吐,血压升高,可能的诊断”
检索库:症状、疾病、诊断记录
生成模型输出:可能检索到“高血压”和“头痛”相关的疾病,但缺乏深度推理,可能忽略了“神经系统异常”这个关键点。
为了解决这个问题,我们需要本地知识库本身具备逻辑性及关联性(也就是更加结构化)。
比如这里的头痛与高血压会被明确关联,并且每个症状或疾病的相关因素(如“神经系统异常”)也可以作为附加信息在图谱中关联起来。
在使用RAG时,除了只检索知识片段信息,还要增加推理逻辑,例如,使用基于规则的推理系统或者推理层来增强模型的推理能力。
比如:检索到“头痛”和“高血压”时,推理系统可以进一步检查是否存在“神经系统异常”的可能性,或者推理是否存在其他潜在的关联(如“脑部问题”)。
推理引擎可以分析相关的病理信息,自动推理出潜在的因果关系,避免漏掉“神经系统异常”等关键点。
以下是完整的案例:
输入提示词:病人头痛、恶心、呕吐、血压升高。
检索库:症状与疾病的知识图谱。
检索出与“头痛”和“高血压”相关的疾病。
发现与“高血压”相关的并发症,如“脑部异常”,并自动标记“神经系统异常”作为潜在问题。
推理引擎激活:
推理系统检查“头痛”和“高血压”的组合,发现此组合可能会引发神经系统异常,进一步推理出“脑卒中”或“颅内压增高”等疾病可能性。
生成模型:
结合检索到的信息和推理引擎的结论,生成模型输出:“病人可能存在高血压导致的头痛,建议进行脑部CT检查以排除神经系统异常。”
以上就是通过行业KnowHow与工程能力,对RAG技术进行了进一步保证达到的效果,可以看出他和现在DeepSeek的think功能很类似的。
在这个基础下,我们再看看阿里这边推出的KAG框架。
KAG
10月24日,OpenSPG 发布 v0.5 版本,正式发布了知识增强生成(KAG)的专业领域知识服务框架。
KAG 旨在充分利用知识图谱和向量检索的优势,并通过四个方面双向增强大型语言模型和知识图谱,以解决 RAG 挑战:
-
对LLM友好的知识表示
-
知识图谱与原文片段之间的互索引
-
逻辑形式引导的混合推理引擎
-
与语义推理的知识对齐。
其技术架构如下:
其核心为知识串联:
本质是将用户问题可能相关的信息以及推理逻辑都带上,由于模型上下文多了,所以模型的表现会更好。
从这里便可以看出KAG与RAG的区别了,KAG通过将结构化知识图谱或外部知识库直接融入模型架构,来提升语言模型的生成能力。
与检索非结构化数据(文档或文本)的RAG不同,KAG侧重于整合结构化知识,以此提高生成质量。
因为KAG本质依赖的是知识图谱,那么其回答质量必定会高很多,但也就是其依赖的知识图谱,无论其初始数据导入还是后续图谱的更新都很麻烦。
KAG很厉害的是,他有一套框架,可以自动生成关系链,这个很屌的:
下面是一个复杂案例的完整展示过程:
代表作为《王右丞集》诗人,其家乡被司马迁称之为什么?
其背后的数据库如下:
unsetunset一个案例unsetunset
按照官方引导,安装好程序:
开始尝试将我的一篇文章结构化:
解析过程的日志:
图谱生成:
答案生成:
用官方文档效果要:
但总的来说,不太准…
看了下过程,将文章生成结构化的知识图谱这块不太准确,总的来说有很长的路要走!
unsetunset结语unsetunset
实际KAG使用过程中BUG不少:
应该还不太成熟,只不过产品侧有些考虑提前放了出来,但从长远来说,我认为KAG是最终答案。
RAG利用外部知识库的检索功能来生成更丰富的答案,虽然它有效解决了模型幻觉问题,但仍然存在对复杂推理能力的欠缺。
而KAG通过结合结构化的知识图谱与推理引擎,能够为语言模型提供更具逻辑性和关联性的答案,从而显著提升生成的质量。
然而,KAG的高效性和准确性也依赖于知识图谱的结构化程度以及数据的维护更新,这一过程可能会较为复杂。
无论是RAG还是KAG,它们的核心目标是增强AI模型在特定应用场景下的推理与生成能力,尤其是在医学、法律等专业领域中,这对于提高模型回答的准确性和可靠性至关重要。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。