0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用知识图谱与Llama-Index技术构建大模型驱动的RAG系统(上)

深度学习自然语言处理 来源:爱吃牛油果的璐璐 2024-02-22 14:07 次阅读

幻觉是在处理大型语言模型(LLMs)时常见的问题。LLMs生成流畅连贯的文本,但经常产生不准确或不一致的信息。防止LLMs中出现幻觉的一种方法是使用外部知识源,如提供事实信息的数据库或知识图谱。

矢量数据库和知识图谱使用不同的方法来存储和表示数据。矢量数据库适合基于相似性的操作,知识图谱旨在捕捉和分析复杂的关系和依赖关系。

对于LLM中的幻觉问题,知识图谱是一个比向量数据库更好的解决方案。知识图谱为LLM提供了更准确、相关、多样化、有趣、逻辑和一致的信息。因此,使用知识图谱可以减少LLM中的幻觉,使其在生成准确和真实的文本时更加可靠。但关键是文档需要清楚地展示关系,否则知识图谱将无法捕捉到它。

向量数据库

向量数据库是一组高维向量的集合,用于表示实体或概念,例如单词、短语或文档。向量数据库可以根据实体或概念的向量表示来度量它们之间的相似性或关联性。

举个例子,向量数据库可以告诉你“巴黎”和“法国”比“巴黎”和“德国”更相关,基于它们的向量距离。

知识图谱

知识图谱是一组节点和边,用于表示实体或概念以及它们之间的关系,例如事实、属性或类别。知识图谱可以根据节点和边的属性来查询或推断不同实体或概念的事实信息。

举个例子,知识图谱可以告诉你“巴黎”是“法国”的首都,基于它们的边标签

知识图谱组件

顶点/节点:表示知识领域中的实体或对象。每个节点对应一个唯一的实体,并由唯一的标识符进行标识。例如,在关于Chennai Kings的知识图谱中,节点可以具有诸如“Philadelphia Phillies”和“Major League Cricket”这样的值。

边:表示两个节点之间的关系。例如,一条“compete in”的边可以将“Chennai Kings”节点连接到“Major League Cricket”节点。

知识图谱中的基本数据单元

三元组是图中的基本数据单元。它由三个部分组成:

主语:三元组所关于的节点。

宾语:关系指向的节点。

谓语:主语和宾语之间的关系。

在以下三元组示例中,“Chennai Kings”是主语,“compete in”是谓语,“Major League Cricket”是宾语。

(Chennai Kings) — [compete in]->(Major League Cricket)

知识图谱数据库可以通过存储三元组来高效地存储和查询复杂的图数据。

查询图数据库

查询涉及遍历图结构并根据特定标准检索节点、关系或模式。下面是一个简单的示例,展示了如何查询图数据库:假设你有一个代表社交网络的图数据库,其中用户是节点,而它们的关系(例如友谊)由连接节点的边表示。你想要找到给定用户的朋友圈(共同的连接)。

从参考用户开始:在图数据库中,通过查询特定的用户标识符或其他相关标准来识别代表参考用户的节点。

遍历图:使用图形查询语言(如Neo4j中使用的Cypher或Gremlin)从参考用户节点遍历图。编写一个查询,指定要探索的模式或关系。在这种情况下,您想要找到朋友的朋友。示例Cypher查询:MATCH (:User {userId: ‘referenceUser’})-[:FRIEND]->()-[:FRIEND]->(fof:User) RETURN fof这个查询从参考用户开始,沿着FRIEND关系找到另一个节点(朋友),然后再沿着另一个FRIEND关系找到朋友的朋友(fof)。

检索结果:在图数据库上执行查询,根据查询模式检索出相应的节点(朋友的朋友)。如果需要,还可以获取检索到的节点的特定属性或附加信息。

呈现结果:将检索到的朋友的朋友显示给用户或按照需求进一步处理数据。这些信息可以用于建议、网络分析或其他相关目的。

图数据库提供了更高级查询功能,包括过滤、聚合和复杂模式匹配。具体的查询语言和语法可能有所不同,但总体过程涉及遍历图结构以检索与所需条件匹配的节点和关系。

查询向量数据库

通常涉及搜索相似向量或根据特定条件检索向量。以下是查询向量数据库的简单示例:假设你有一个包含客户配置文件的向量数据库,这些配置文件表示为高维向量,你想找到与给定参考客户相似的客户。

定义参考客户向量:首先,为参考客户定义一个向量表示。这可以通过提取相关特征或属性并将它们转换为向量格式来完成。

执行相似性搜索:使用合适的算法,如k-最近邻(k-NN)或余弦相似度,在向量数据库中执行相似性搜索。该算法将根据相似性分数识别参考客户向量的最近邻居。

检索相似客户:检索与上一步中识别的最近邻居向量对应的客户配置文件。这些配置文件将根据定义的相似性度量表示与参考客户相似的客户。

呈现结果:最后,将检索到的客户配置文件或相关信息呈现给用户,例如显示他们的名字、人口统计信息或购买历史。此信息可用于推荐、定向营销活动或个性化体验。

知识图谱的优势

相比于向量数据库,知识图谱提供了更精确和具体信息。向量数据库表示两个实体或概念之间的相似性或关联性,而知识图谱能够更好地理解它们之间的关系。例如,知识图谱可以告诉你“埃菲尔铁塔”是“巴黎”的地标,而向量数据库只能表示这两个概念的相似程度。这可以帮助LLM生成更准确和相关的文本。

知识图谱支持比向量数据库更多样化和复杂的查询。向量数据库主要基于向量距离、相似度或最近邻来回答问题,这些仅限于直接相似度测量。相比之下,知识图谱可以处理基于逻辑运算符(如“具有属性Z的所有实体是什么?”或“W和V的共同类别是什么?”)的查询。这可以帮助LLM生成更多样化和有趣的文本。

知识图谱比向量数据库能够进行更多的推理和推断。向量数据库只能提供直接存储在数据库中的信息。相比之下,知识图谱可以从实体或概念之间的关系推导出间接信息。例如,知识图谱可以根据“巴黎是法国的首都”和“法国位于欧洲”的事实推断出“埃菲尔铁塔位于欧洲”。这可以帮助LLM生成更符合逻辑和一致的文本。

LlamaIndex

LlamaIndex是一个编排框架,用于简化将私有数据与公共数据集成以构建使用大型语言模型(LLMs)的应用程序。它提供了数据摄取、索引和查询的工具,使其成为生成式AI需求的一种多功能解决方案。

嵌入模型

嵌入模型需要将文本转换为所提供文本的信息的数字表示形式。该表示形式捕获了所嵌入内容的语义含义,使其适用于许多行业应用。在这里,我们使用了“thenlper/gte-large”模型。

LLM

大型语言模型需要根据提供的问题和上下文生成响应。在这里,我们使用了Zephyr 7B beta模型。

代码实现

1、安装所有依赖库

pipinstallllama_indexpyvisIpythonlangchainpypdf

2、设置日志

importlogging
importsys
#
logging.basicConfig(stream=sys.stdout,level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))

3、导包

fromllama_indeximport(SimpleDirectoryReader,
LLMPredictor,
ServiceContext,
KnowledgeGraphIndex)
#
fromllama_index.graph_storesimportSimpleGraphStore
fromllama_index.storage.storage_contextimportStorageContext
fromllama_index.llmsimportHuggingFaceInferenceAPI
fromlangchain.embeddingsimportHuggingFaceInferenceAPIEmbeddings
fromllama_index.embeddingsimportLangchainEmbedding
frompyvis.networkimportNetwork

SimpleDirectoryReader:用于读取非结构化数据。
LLMPredictor:用于使用大型语言模型(LLM)生成预测。
ServiceContext:提供协调各种服务所需的上下文数据。
KnowledgeGraphIndex:用于构建和操作知识图谱。
SimpleGraphStore:用作存储图数据的简单仓库。
HuggingFaceInferenceAPI:用于利用开源LLM的模块。

4、引入LLM

HF_TOKEN='YourHuggaingfaceapikey'
llm=HuggingFaceInferenceAPI(
model_name='HuggingFaceH4/zephyr-7b-beta',token=HF_TOKEN
)

5、引入embedding

embed_model=LangchainEmbedding(
HuggingFaceInferenceAPIEmbeddings(api_key=HF_TOKEN,model_name='thenlper/gte-large')
)

6、装载数据

documents=SimpleDirectoryReader('/content/Documents').load_data()
print(len(documents))

da999318-cfed-11ee-a297-92fbcf53809c.png

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3759

    浏览量

    64266
  • 大模型
    +关注

    关注

    2

    文章

    2314

    浏览量

    2456

原文标题:借助知识图谱和Llama-Index实现基于大模型的RAG-上

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    分享自底向上构建知识图谱的过程

    一文揭秘!自底向上构建知识图谱全过程
    发表于 09-29 14:27

    KGB知识图谱基于传统知识工程的突破分析

    知识图谱本质是一种大规模的语义网络。从2012年谷歌提出知识图谱知识图谱一直在快速发展,其应用也不再局限于“语义网络”范畴。现如今的知识图谱
    发表于 10-22 15:25

    KGB知识图谱技术能够解决哪些行业痛点?

    具有有效性。KGB知识图谱凭借其在知识图谱构建,更新方面的技术优势,现在已经在公共安全,企业文件内容核查等得以广泛应用。KGB知识图谱现已
    发表于 10-30 15:34

    知识图谱的三种特性评析

    都有很高的要求。由此可见,行业知识库和数据决策这些场景所建设的知识图谱的质量水平是有着较高要求的。KGB知识图谱凭借其在知识图谱构建,更新
    发表于 12-13 13:57

    KGB知识图谱通过智能搜索提升金融行业分析能力

    的自然语言处理技术,搭建专业领域深度知识图谱,快速学习并迭代金融行业最新知识构建一二级市场众多实体模型,智能化的理解用户的搜索请求,使得搜
    发表于 06-22 21:23

    如何使用知识图谱对图像语义进行分析技术及应用研究

    模型对图像的机构化语义信息进行描述和抽取,在此基础研究了基于知识图谱的图像语义知识融合和加工技术构建
    发表于 11-21 17:05 17次下载
    如何使用<b class='flag-5'>知识图谱</b>对图像语义进行分析<b class='flag-5'>技术</b>及应用研究

    知识图谱在工程应用中的关键技术、应用及案例

    近年来,知识图谱及其相关技术得到快速发展,并被广泛应用于工业界各种认知智能场景中。在简述知识图谱相关研究的基础,介绍知识图谱在工程应用中的
    发表于 03-30 15:12 15次下载
    <b class='flag-5'>知识图谱</b>在工程应用中的关键<b class='flag-5'>技术</b>、应用及案例

    通用知识图谱构建技术的应用及发展趋势

    构建平台,需要对知识图谱构建体系进行研究,以满足不同的行业应用需求。文中以知识图谱构建为主线,首先介绍目前主流的通用
    发表于 04-14 11:37 27次下载
    通用<b class='flag-5'>知识图谱</b><b class='flag-5'>构建</b><b class='flag-5'>技术</b>的应用及发展趋势

    知识图谱Knowledge Graph构建与应用

    一、知识图谱概论         1.1知识图谱的起源和历史 1.2知识图谱的发展史——从框架、本体论、语义网、链接数据到知识图谱 1.3知识图谱
    发表于 09-17 10:12 629次阅读

    知识图谱知识图谱的典型应用

    作者: cooldream2009  我们构建知识图谱的目的,在于利用知识图谱来做一些事情。有效利用知识
    的头像 发表于 10-18 09:26 1858次阅读
    <b class='flag-5'>知识图谱</b>:<b class='flag-5'>知识图谱</b>的典型应用

    基于本体的金融知识图谱自动化构建技术

    本评测任务参考 TAC KBP 中的 Cold Start 评测任务的方案,围绕金融研报知识图谱的自动化图谱构建所展开。评测从预定义图谱模式(Schema)和少量的种子
    的头像 发表于 11-24 14:54 1094次阅读

    如何利用模型构建知识图谱?如何利用模型操作结构化数据?

    上图是之前,我基于大语言模型构建知识图谱的成品图,主要是将金融相关的股票、人物、涨跌幅之类的基金信息抽取出来。
    的头像 发表于 08-24 16:56 1.5w次阅读
    如何<b class='flag-5'>利用</b>大<b class='flag-5'>模型</b><b class='flag-5'>构建</b><b class='flag-5'>知识图谱</b>?如何<b class='flag-5'>利用</b>大<b class='flag-5'>模型</b>操作结构化数据?

    知识图谱与大模型结合方法概述

    本文作者 |  黄巍 《Unifying Large Language Models and Knowledge Graphs: A Roadmap》总结了大语言模型知识图谱融合的三种路线:1
    的头像 发表于 10-29 15:50 924次阅读
    <b class='flag-5'>知识图谱</b>与大<b class='flag-5'>模型</b>结合方法概述

    利用知识图谱Llama-Index技术构建模型驱动RAG系统(下)

    对于语言模型(LLM)幻觉,知识图谱被证明优于向量数据库。知识图谱提供更准确、多样化、有趣、逻辑和一致的信息,减少了LLM中出现幻觉的可能性。
    的头像 发表于 02-22 14:13 1104次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>知识图谱</b>与<b class='flag-5'>Llama-Index</b><b class='flag-5'>技术</b><b class='flag-5'>构建</b>大<b class='flag-5'>模型</b><b class='flag-5'>驱动</b>的<b class='flag-5'>RAG</b><b class='flag-5'>系统</b>(下)

    知识图谱与大模型之间的关系

    在人工智能的广阔领域中,知识图谱与大模型是两个至关重要的概念,它们各自拥有独特的优势和应用场景,同时又相互补充,共同推动着人工智能技术的发展。本文将从定义、特点、应用及相互关系等方面深入探讨
    的头像 发表于 07-10 11:39 880次阅读