首页 > 其他分享 >RAG知识库之构建知识库图谱

RAG知识库之构建知识库图谱

时间:2024-08-12 08:55:56浏览次数:12  
标签:RAG 图谱 chunk 知识库 三元组 文档 节点

      前面几篇文章谈了多种针对RAG的优化如多表示索引(Multi-representation indexing)、Raptor等但其都是存储在向量库中的,这里将介绍一种新的存储模式,图数据库,适合存储数据高度相关的数据。其存储实体与实体间的关系,存储着丰富的关系类型数据,能给RAG知识库带来更精准的上下文信息。

      在图数据库中三元组是数据存储的基本单位,它由头实体、关系和尾实体组成,用于表示实体之间的关系。三元组通常用于构建知识图谱,其中每个三元组代表一个事实或断言。例如,在知识图谱中,一个三元组可以表示“(海南,管辖,定安)”这样的关系,其中“海南”是头实体,“管辖”是关系,“定安”是尾实体。

      图形数据模型使得节点和关系可以自然地表示实体之间的连接。使用知识图谱后RAG除了能获取到与问题相关的上下文描述外还能得到上下文所包含的实体间的三元组使得其上下文信息更丰富。
      但知识图谱的构建并不容易,往往要花很多时间去识别三元组(头实体、关系、尾市体)有了大模型之后三元组的识别会方便很多,但三元组的质量可能还需要人工去识别修正。
      这里先介绍如何用LLM构建neo4j知识图谱,后面再看图谱如何与RAG的结合应用,在这里由于要结合知识图谱RAG使用所以加了两个特殊的节点:Document与Chunk节点,每个文档会有一个Document节点,文档分割后的块为Chunk节点,分割为几块就有几个Chunk节点。

图谱构造

      知识图谱构造最重要的工作时识别三元组,这边我们把它交给了LLM来完成,所以剩下了的主要任务是拿到三元组数据集后我们怎么构造图谱的节点及其关系比较使其能够适应与RAG结合的场景。
      在RAG的使用场景中通常是抓取Web网页源作为内容或上传的文档作为内容生成知识图谱后,对所上传或抓取得到的内容进行提问,从图谱中搜索问题相关内容作为上下文提交给LLM,让LLM进行回答。这里需要考虑的问题有:文档太大、答案溯源等。
      这两个问题在RAG向量库存储时也是比较常见的问题:分割、打标签就能解决。

      构建知识图谱主要有这么几个流程:

1、创建原文件节点

      主要用于文档溯源其属性包括文件名称等;

2、分割文档并创建分割文档后块节点、创建chunk以及块与源文档的关系

      文档分割主要用于解决文件过大问题,主要参数有:chunk_size、 chunk_overlap控制块大小与重叠大小。

3、创建向量索引

      为每个chunk创建embeddings属性,为chunk文本内容的词嵌入向量,为chunk块节点embeddings创建向量索引,用于问题上下文的检索。

4、合并chunk

      将指定数量的chunk合并组合为一个combined chunks,得到combined chunks列表
如果不合并chunk直接每个chunk生成一个图谱可能会由于文档分割时某些上下文丢失导致生成的图谱可靠性下降,多个chunk合并组合为一个chunk组可能会减少此类情况出现。也可不合并因为文本分割重叠参数从一定程度上也避免了类似情况。也可以不合并chunk直接将每个chunk文档提交给LLM生成返回图谱json,在neo4j中创建图谱并创建源文档节点。

5、生成图谱数据集

      将chunks列表遍历提交给LLM,LLM返回节点及节点间关系集后生成图谱以及源文档节点,图谱质量取决与LLM返回数据集的质量;

6、创建chunks与实体的关系

7、获取未进行词嵌入的实体节点、并对实体节点的text生成词嵌入向量

      大模型现阶段生成知识图谱完全没问题,但是要高质量的图谱恐怕还需要人为介入对数据进行清洗、修复重复项错误数据、验证完整性等。不过对于只是需要将知识图谱作为RAG知识库的内容引用来说有一定影响,但只要不是胡说八道的错误视乎影响不是特别大。

标签:RAG,图谱,chunk,知识库,三元组,文档,节点
From: https://www.cnblogs.com/softlin/p/18353588

相关文章

  • 一文搞懂RAG:从理论到实践
    一、引言在人工智能和自然语言处理领域,RAG(Retrieval-AugmentedGeneration)作为一种新兴的模型架构,正在引起越来越多的关注。RAG结合了信息检索与文本生成的优势,能够在生成文本时利用外部知识库,提高生成内容的准确性和丰富性。本文将深入探讨RAG的原理、架构以及在实际应用中的......
  • 使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
    使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)使用OpenAI模型体验GraphRag——以《边城》为例在使用SiliconCloud之前,先使用OpenAI的模型看看GraphRag的效果。GraphRAG是一种基于AI的内容理解和搜索能力,利用LLMs,解析数据以创建知识图谱,并对用户......
  • bugbountyhunter scope BARKER:第十滴血 存储型 Storage Cross-Site Scripting XSS 添
    登录后点击MemberDogs,Addyourdog头像处可以上传SVG图片检查xsspayload:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSSInjection#xss-in-files使用SVG进行图片上传,发现SVG文件上传成功并返回图片地址poc:https://cfceb12f2bfd-sec875.a.barker......
  • bugbountyhunter scope BARKER:第九滴血 存储型 Storage Cross-Site Scripting XSS SVG
    登录后来到Myprofile页面,页面里存在一个EditProfile头像处可以上传SVG图片检查xsspayload:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSSInjection#xss-in-files使用SVG进行图片上传,发现SVG文件上传成功并返回图片地址poc:https://cfceb12f2......
  • OpenWebUI + Ollma 构建本地AI知识库
    本机环境:rocky_linux9.4,10G8核,100G磁盘部署的实验 安装Docker#step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/......
  • bugbountyhunter scope BARKER:第八滴血 存储型 Storage Cross-Site Scripting XSS SVG
    登录后来到home页面,留言中存在一个Attachimage检查xsspayload:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSSInjection#xss-in-files使用SVG进行图片上传,发现SVG文件上传成功并返回图片地址poc:https://cfceb12f2bfd-sec875.a.barker-social.com......
  • 使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
    使用OpenAI模型体验GraphRag——以《边城》为例在使用SiliconCloud之前,先使用OpenAI的模型看看GraphRag的效果。GraphRAG是一种基于AI的内容理解和搜索能力,利用LLMs,解析数据以创建知识图谱,并对用户提供的私有数据集回答用户问题的方法。GitHub地址:https://github.com/microsoft......
  • 基于AI的图像生成技术:商汤科技的SenseMirage平台
    摘要:本文介绍了商汤科技推出的AI内容创作社区平台SenseMirage,该平台利用自研的AIGC大模型,实现了快速、高质量的图像生成技术。**关键词:**人工智能,图像生成,内容创作,风格模型1.引言随着人工智能技术的不断进步,AI在艺术创作领域的应用日益广泛。商汤科技作为AI领域的先行者,......
  • Ollama+MaxKB 部署本地知识库
    Ollama+MaxKB部署本地知识库本文我们介绍另外一种部署本地知识库的方案:Ollama+MaxKB相对来说,容易安装且功能较完善,30分钟内即可上线基于本地大模型的知识库问答系统,并嵌入到第三方业务系统中。缺点是如果你的电脑配置不高,问题回答响应时间较长。下图为MaxKB的产......
  • 《Advanced RAG》-10-Corrective Retrieval Augmented Generation (CRAG)
    摘要CRAG设计了一个轻量级检索评估器,用于评估针对特定查询检索到的文档的整体质量,并使用网络搜索作为改进检索结果的辅助工具。CRAG可与基于RAG的各种方法无缝集成,并提供了一个插件式的解决方案。CRAG的主要思想是引入一个检索评估器,用于评估检索文档与查询之间的关......