一文读懂 RAG 与 KAG:原理、工程落地与开源实战(含代码与链接)

向量数据库大模型机器学习

picture.image

向AI转型的程序员都关注公众号 机器学习AI算法工程

  • RAG(Retrieval-Augmented Generation):从文档中“找证据再回答”,更适合开放域、时效更新快的场景。
  • KAG(Knowledge-Augmented Generation):把结构化知识(知识图谱/数据库)“融进生成过程”,在实体关系与事实一致性上更稳。

RAG与KAG:主要区别

picture.image

实战建议:多数业务选 RAG 起步;需要强事实一致性/规则推理时上 KAG;混合(GraphRAG/KG-RAG)能同时兼顾覆盖与可信。

RAG:原理、工程要点与开源实战

  1. 工作流要点
  • 文档管线:清洗 → 分块(保标题层级/表格结构)→ 向量化 → 向量库
  • 检索:向量召回(ANN)+ 重排(Cross-Encoder)+ 上下文压缩
  • 生成:基于证据回答,标注引用/拒答策略
  • 评估:检索命中率、答案一致性、引用可溯源、延迟/成本
  1. 最小可跑示例(FAISS + bge-m3 + 任何LLM)

依赖:pip install sentence-transformers faiss-cpu

示例仅演示“检索到上下文”,生成可对接任意 LLM(OpenAI/Claude/本地模型)。

  
# pip install sentence-transformers faiss-cpu  
from sentence_transformers import SentenceTransformer  
import faiss, numpy as np  
# 1) 准备文档(示例用三段文本)  
docs = [  
    "RAG 通过从外部文档检索证据,再让大模型基于证据生成答案。",  
    "KAG 侧重结构化知识(知识图谱)注入,强调事实一致性与可控性。",  
    "GraphRAG 将文档抽取成图谱,再结合图谱结构化检索与生成。"  
]  
titles = ["什么是RAG", "什么是KAG", "什么是GraphRAG"]  
# 2) 向量化(bge-m3 多语模型)  
embedder = SentenceTransformer("BAAI/bge-m3")  
embs = embedder.encode(docs, normalize_embeddings=True)  
dim = embs.shape[1]  
# 3) 建索引(内积检索)  
index = faiss.IndexFlatIP(dim)  
index.add(embs)  
def retrieve(query, k=2):  
    q = embedder.encode([query], normalize_embeddings=True)  
    D, I = index.search(q, k)  
    return [(titles[i], docs[i], float(D[0][j])) for j, i in enumerate(I[0])]  
# 4) 查询 + 构造提示(把证据拼进提示)  
query = "RAG 和 KAG 有什么区别?"  
hits = retrieve(query, k=2)  
context = "\n\n".join([f"[{t}] {c}" for t, c, _ in hits])  
prompt = f"仅依据以下上下文作答,并给出要点对比:\n{context}\n\n问题:{query}"  
print("拼装的上下文:\n", context)  
print("\n可将上面 prompt 交给任意 LLM 生成答案(OpenAI/Claude/本地模型)。")

要接 LLM 生成(可选)

  • LlamaIndex 端到端(最省心):LlamaIndex 负责分块、存储、检索、重排与调用 LLM。
  1. 开源组件选择(常用)

Milvus https://github.com/milvus-io/milvus

Weaviate https://github.com/weaviate/weaviate

Chroma https://github.com/chroma-core/chroma

TruLens https://github.com/truera/trulens

DeepEval https://github.com/confident-ai/deepeval

  1. 可复用实战项目/教程

KAG:原理、工程要点与开源实战

  1. 工作流要点
  • 知识构建:知识图谱/结构化库(实体、关系、属性、来源、时效)
  • 实体识别与链接:把文本里的实体映射到图谱节点
  • 图检索与推理:路径查询、多跳推理、约束查询(Cypher/SPARQL)
  • 知识注入:提示中嵌入三元组/属性卡片、图嵌入、或解码约束
  • 生成:基于结构化事实的可控生成(可带来源)
  1. 最小可跑示例(Neo4j 小图谱 + Cypher 查询 + 把结果交给 LLM)

依赖:pip install neo4j

  
# pip install neo4j  
from neo4j import GraphDatabase  
URI = "bolt://localhost:7687"    # 你本地 Neo4j,或远程地址  
AUTH = ("neo4j", "password")     # 修改为你的用户名/密码  
driver = GraphDatabase.driver(URI, auth=AUTH)  
with driver.session() as session:  
    # 1) 建立一个极小知识图谱:Tesla <-[CEO]- Elon Musk  
    session.run("""  
    MERGE (c:Company {name:'Tesla'})  
    MERGE (p:Person {name:'Elon Musk'})  
    MERGE (p)-[:HOLDS_ROLE {title:'CEO'}]->(c)  
    """)  
    # 2) 以自然语言问题为入口,转成 Cypher(这里直接写死规则)  
    question = "谁是特斯拉的首席执行官?"  
    cypher = """  
    MATCH (p:Person)-[r:HOLDS_ROLE {title:'CEO'}]->(c:Company {name:'Tesla'})  
    RETURN p.name AS person, r.title AS title, c.name AS company  
    """  
    result = session.run(cypher).data()  
driver.close()  
# 3) 将结构化结果喂给 LLM(这里仅打印;实际你可把 result 拼进提示再生成)  
print("结构化答案:", result)  
# -> [{'person': 'Elon Musk', 'title': 'CEO', 'company': 'Tesla'}]
  • 图谱搭建/探索:
  • 图谱与 LLM 集成:
  • 图谱嵌入/推理:
  1. 适用场景与实践提醒
  • 适合:实体密集、规则明确、需要溯源一致性的任务(合规校验、设备部件关系、医药/专利实体关系、推荐系统特征联动)。
  • 工程要点:实体链接质量>一切;定义好本体和命名规范;事实需要来源与时间戳;考虑冲突与版本管理。

混合范式(GraphRAG/KG-RAG):把“可用”和“可信”都做强

  • 思路:先从文档中抽取实体/关系构成轻量知识图谱,再进行图结构检索与生成;同时保留原文片段用于溯源。
  • 开源项目
  • 何时选
  • 文档繁杂且跨域,需要图结构来理清“谁-与谁-什么关系”;但仍需原文引用与时效更新。

评估与监控:把“看起来会”变成“稳定可用”

  • 指标与工具
  • 检索:Top-k 命中率、重排提升、覆盖率(BEIR/自建评测集)
  • 生成:基于证据的正确性(RAGAS/TruLens)、一致性(同问同答)、拒答率
  • 体验与成本:延迟、吞吐、调用费用
  • 资源

快速选型清单

  • 你的知识主要是文档、更新频繁 → RAG(向量库 + 重排 + 引用)

  • 需要强一致性、图结构推理/约束 → KAG(知识图谱 + 实体链接)

  • 两者都要:关键事实入图谱+规则约束,长尾与时效用检索补齐 → GraphRAG/KG-RAG

进一步阅读(论文/技术参考)

机器学习算法AI大数据技术

搜索公众号添加: datanlp

picture.image

长按图片,识别二维码

阅读过本文的人还看了以下文章:

实时语义分割ENet算法,提取书本/票据边缘

整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主

《大语言模型》PDF下载

动手学深度学习-(李沐)PyTorch版本

YOLOv9电动车头盔佩戴检测,详细讲解模型训练

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

《深度学习:基于Keras的Python实践》PDF和代码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

搜索公众号添加: datayx

picture.image

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论