AI个人学习
和实操指南

KAG:国产开源 AI 知识库框架深度解析与安装教程

最近,我发现了一款令人眼前一亮的国产开源AI知识库框架:KAG (Knowledge Augmented Generation) 知识增强生成。

KAG 由蚂蚁集团、浙江大学等多家机构联合推出,专注于构建垂直领域的知识库。论文数据显示,KAG 在电子政务领域达到了 91.6% 的惊人准确率,在电子医疗问答等场景中也表现卓越。


本文将带你深入了解 KAG 的原理、应用场景,对比 RAG 的优劣势,并提供 "喂饭级" 的本地安装使用教程和效果演示,让你沉浸式体验这款由蚂蚁开源的 KAG 框架。如果你正计划使用 AI 构建专属知识库,那么这篇文章绝对不容错过!

 

什么是KAG?新一代知识库框架的核心概念

KAG (Knowledge Augmented Generation) 是一款基于 OpenSPG 引擎和大型语言模型 (LLM) 的推理问答框架。它的核心理念在于融合知识图谱和向量检索的双重优势,旨在为用户提供更严谨的决策支持和更精准的信息检索服务。

alt text

 

KAG 通过以下 四个关键技术 来实现 LLM 和知识图谱的深度融合与增强:

  • 对 LLM 友好的知识表示: 优化知识图谱的结构,使其更易于被大型语言模型理解和利用。
  • 知识图谱与原文片段之间的互索引: 建立知识图谱中的实体、关系与原始文本片段的双向链接,提升检索效率和准确性。
  • 逻辑形式引导的混合推理引擎: 结合知识图谱的逻辑推理能力和 LLM 的语义理解能力,实现更复杂的推理问答。
  • 与语义推理的知识对齐: 确保知识图谱中的知识与语言模型的语义空间对齐,提升知识利用的有效性。

alt text

简单来说,KAG 创新性地 融合了知识图谱和向量检索的优势,构建出强大的知识库框架。它不仅能利用 LLM 的逻辑推理能力,还能结合知识图谱进行深层推理,完成复杂的信息检索任务。更重要的是,当知识图谱信息不足时,KAG 还能巧妙地利用向量检索技术,补充相关的文本片段,确保答案的全面性和准确性。

KAG 整体架构概览

KAG 框架主要由两大核心模块构成:知识构建 (kg-builder) 和 问题求解 (kg-solver)。

  • kg-builder 模块专注于知识的高效构建,针对 LLM 优化了知识表示方式,支持灵活的知识建模和双向索引的建立。
  • kg-solver 模块则负责问题的高效求解,通过集成了检索、图谱推理、语言推理和数值计算等多种能力的混合推理引擎,实现复杂问题的解答。
  • 值得期待的是,第三个模块 kag-model 也将在后续开源,进一步完善 KAG 框架的功能。

alt text

 

KAG对比传统RAG:差异与优势解析

RAG (Retrieval-Augmented Generation) 作为一种常见的知识库技术,已被广泛应用。那么,KAG 相比于 RAG,有哪些差异和优势呢?我们通过以下几个维度进行对比分析:

1. 知识表示:

  • RAG: 主要依赖向量相似度进行检索,知识表示相对简单,难以处理需要多跳推理的复杂问题。
  • KAG: 采用对 LLM 更友好的知识表示方法,兼容无模式和有模式约束的知识,支持图结构知识与文本知识的互索引结构,知识表示更加丰富和结构化。

2. 推理能力:

  • RAG: 对知识的逻辑关系不敏感,缺乏逻辑推理能力,难以应对需要复杂推理的专业领域问题。
  • KAG: 引入了逻辑符号引导的混合推理引擎,具备强大的逻辑推理能力和多跳事实问答能力,能够处理更复杂的专业问题。

3. 性能表现:

  • RAG: 在多跳任务和跨段落任务中表现不佳,生成文本的连贯性和逻辑性相对较弱。
  • KAG: 在多跳任务和跨段落任务中表现出色,能够显著提升推理准确性和信息覆盖度,生成答案更准确、更全面。

4. 适用场景:

  • RAG: 更适用于一般的文本生成和检索任务,但在法律、医学、科学等需要复杂推理的专业领域,表现会受到限制。
  • KAG: 特别适用于需要复杂推理和多跳事实问答的 专业领域,例如金融、医疗、法律、政务等,能够提供更专业、更精准的知识服务。

总而言之,KAG 通过融合知识图谱和向量检索,并在知识表示和推理能力上进行了深度优化,使其在处理复杂问题和专业领域知识问答方面,展现出超越传统 RAG 技术的潜力。

 

本地部署“喂饭级”教程:KAG安装、使用、效果演示

理论分析终究需要实践检验!接下来,我将手把手教你如何在本地安装、部署和使用 KAG,并进行简单的效果演示。

KAG 相关资源:

  • Github 地址:https://github.com/OpenSPG/KAG
  • 官方网站:https://spg.openkg.cn/

硬件配置建议:

  • CPU ≥ 8 核
  • 内存 RAM ≥ 32 GB
  • 硬盘 Disk ≥ 100 GB

官方推荐配置较高,但根据我的实际测试,在 16GB 内存的 Windows 电脑上也能基本流畅运行。因此,本教程将在 Windows 环境下进行 KAG 的安装和使用演示。

第一步:安装 Docker Desktop

KAG 的安装部署依赖于 Docker 环境,请确保你的电脑已安装 Docker Desktop。

第二步:创建 docker-compose.yml 文件

  • 在 D 盘(或其他磁盘)根目录下创建一个名为 KAG 的文件夹。
  • 在 KAG 文件夹内,新建一个名为 docker-compose.yml 的文件。
  • 将以下 YAML 代码复制粘贴到 docker-compose.yml 文件中并保存。
version: "3.7"
services:
server:
restart: always
image: spg-registry.cn-hangzhou.cr.aliyuncs.com/spg/openspg-server:latest
container_name: release-openspg-server
ports:
- "8887:8887"
depends_on:
- mysql
- neo4j
- minio
# volumes:
# - /etc/localtime:/etc/localtime:ro
environment:
TZ: Asia/Shanghai
LANG: C.UTF-8
command: [
"java",
"-Dfile.encoding=UTF-8",
"-Xms2048m",
"-Xmx8192m",
"-jar",
"arks-sofaboot-0.0.1-SNAPSHOT-executable.jar",
'--server.repository.impl.jdbc.host=mysql',
'--server.repository.impl.jdbc.password=openspg',
'--builder.model.execute.num=5',
'--cloudext.graphstore.url=neo4j://release-openspg-neo4j:7687?user=neo4j&password=neo4j@openspg&database=neo4j',
'--cloudext.searchengine.url=neo4j://release-openspg-neo4j:7687?user=neo4j&password=neo4j@openspg&database=neo4j'
]
mysql:
restart: always
image: spg-registry.cn-hangzhou.cr.aliyuncs.com/spg/openspg-mysql:latest
container_name: release-openspg-mysql
volumes:
- mysql_data:/var/lib/mysql
environment:
TZ: Asia/Shanghai
LANG: C.UTF-8
MYSQL_ROOT_PASSWORD: openspg
MYSQL_DATABASE: openspg
ports:
- "3306:3306"
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_general_ci'
]
neo4j:
restart: always
image: spg-registry.cn-hangzhou.cr.aliyuncs.com/spg/openspg-neo4j:latest
container_name: release-openspg-neo4j
ports:
- "7474:7474"
- "7687:7687"
environment:
- TZ=Asia/Shanghai
- NEO4J_AUTH=neo4j/neo4j@openspg
- NEO4J_PLUGINS=["apoc"]
- NEO4J_server_memory_heap_initial__size=1G
- NEO4J_server_memory_heap_max__size=4G
- NEO4J_server_memory_pagecache_size=1G
- NEO4J_apoc_export_file_enabled=true
- NEO4J_apoc_import_file_enabled=true
- NEO4J_dbms_security_procedures_unrestricted=*
- NEO4J_dbms_security_procedures_allowlist=*
volumes:
- neo4j_logs:/logs
- neo4j_data:/data
minio:
image: spg-registry.cn-hangzhou.cr.aliyuncs.com/spg/openspg-minio:latest
container_name: release-openspg-minio
command: server --console-address ":9001" /data
restart: always
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio@openspg
TZ: Asia/Shanghai
ports:
- 9000:9000
- 9001:9001
volumes:
- minio_data:/data
volumes:
mysql_data:
neo4j_logs:
neo4j_data:
minio_data:

第三步:启动 KAG 服务

  • 打开命令提示符,切换到 KAG 文件夹目录 (在 KAG 文件夹地址栏输入 cmd 回车)。

alt text

  • 在命令行中输入 docker-compose up -d 并回车,开始自动安装和部署 KAG。

alt text

  • 等待一段时间,当看到 mysql, neo4j, openspg-server, minio 四个服务都显示 Created 或 Started 状态时,表示 KAG 服务已成功启动。

alt text

第四步:访问 KAG 后台管理页面

  • 打开浏览器,输入地址 127.0.0.1:8887,即可访问 KAG 后台操作页面。
  • 使用默认用户名 openspg 和默认密码 openspg@kag 登录系统。

alt text

第五步:配置 KAG 系统

  • 登录后,首先点击 全局配置 菜单。

alt text

  • 通用配置:进行以下配置
    • 图存储配置
    • database:neo4j
    • password:neo4j@openspg
    • uri:neo4j://release-openspg-neo4j:7687
    • user:neo4j
    • 提示词中英文配置
      • biz_scene:default
      • language:zh
    • 向量配置 (使用免费的向量模型 API)
      • type:openai
      • model:BAAI/bge-large-zh-v1.5
      • base_url:https://api.siliconflow.cn/v1
      • api_key:前往 硅基流动 平台获取免费 API Key。

alt text

  • 硅基流动 平台注册登录后,按照下图指引即可找到免费向量模型,并创建 API 密钥。

alt text

alt text

  • 模型配置:点击 添加maas模型(兼容openai接口),配置你希望使用的大语言模型。

alt text

  • 这里以 gpt-4o 为例进行配置,填写模型相关信息后点击 确定保存。

alt text

  • 模型 API 中转站推荐:如果你有多种大模型 API 调用需求,可以考虑使用 API中转服务,它兼容 OpenAI 接口,支持一键切换国内外主流大模型,并提供 MJ, SD, Suno 等绘图、音乐创作接口。价格也更具优势。

第六步:创建知识库并导入文档

  • 返回首页,点击 创建知识库。

alt text

  • 为知识库命名,点击 保存。

alt text

  • 创建成功后,在首页找到新创建的知识库,点击 知识库构建。

alt text

  • 点击 创建任务,开始导入文档。

alt text

  • 上传你的知识库文档(目前 KAG 每次仅支持上传一个文档,如有多个文档需分批上传)。我这里上传了我的最新产品 微信AI助理 的相关文档。
  • 文件合并工具分享征集: 如果你有好用的免费文件合并工具,欢迎在评论区分享,方便大家批量处理文档。

alt text

  • 在下一步设置中,建议勾选 根据文档语义切分段落,以保留段落的上下文连贯性。

alt text

  • 抽取模型 选择 default (默认配置即可)。 提示词 可根据需要自定义,我这里简单设置为 "问答拆分" (理解不一定准确,欢迎指正)。

alt text

  • 点击 完成,KAG 开始抽取和解析文档,这个过程可能需要一些时间。
  • 文档解析过程分为 6 个步骤,如下图所示:

alt text

  • 等待任务状态变为 完成,表示文档已成功导入知识库。(如果状态长时间未更新,可尝试刷新页面)。

alt text

第七步:效果演示

  • 知识抽取关联关系图: 这是 KAG 从文档中抽取出的知识关联关系可视化效果。

alt text

  • 问答效果测试
    • 问题一: "简单介绍一下个微AI助理"

    KAG 会先进行一段思考和推理过程,然后检索并给出答案。可以看到,KAG 给出的答案是比较准确和全面的。但响应速度较慢,约 40 秒 (因此 KAG 可能不太适合简单问答场景)。

alt text

alt text

  • 问题二: "个微AI助理 如何配置AI全家桶秘钥?"

    KAG 同样能够给出答案,但耗时依然较长。

alt text

 

总结与展望

通过以上体验,我们可以看到,蚂蚁开源的 KAG 知识库框架目前仍处于快速发展阶段,一些功能和用户体验还有待完善 (例如知识库参数调整、知识库编辑修改等功能尚不完善,使用中也可能遇到一些 Bug)。但从 Github 的更新记录来看,KAG 团队正在积极进行代码迭代和功能优化。

KAG 融合知识图谱和向量检索的技术方向是极具潜力的。正如 RAG 技术需要高质量的知识库数据、模型加持和参数调优才能发挥最佳效果一样,KAG 的发展也需要不断完善和优化。

正如文章开头所言,KAG 更适合医疗、金融、法律、政务等需要复杂推理的专业领域,而非简单的日常问答场景 (响应速度是其短板)。

目前 KAG 尚未开放 API,期待未来开放 API 后,能将其集成到 Agent 应用中,通过问题识别机制,将简单问题和复杂问题分流处理,发挥 KAG 在复杂问题处理上的优势。

总而言之,本文旨在带大家体验 KAG 这项前沿技术。 尽管 KAG 目前可能还未臻于完美,但作为一款开源的知识库框架,它已展现出巨大的潜力。相信在社区的共同努力和技术的不断迭代下,KAG 将为 AI 知识库领域带来更多可能性。

未经允许不得转载:首席AI分享圈 » KAG:国产开源 AI 知识库框架深度解析与安装教程

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文