在《大模型应用的10种架构模式》一文 中,知识图谱是RAG体系中的一种紧张的技术, 基于知识图谱的大模型应用也成为一个典型的架构模式。但是,在一样平常的RAG体系中, 都会用到向量数据库,那么,当知识图谱与向量数据库相遇后,会是怎样的场景呢?
1.关于知识图谱
知识图谱是一种结构化的信息体现形式,用于说明差异概念之间的关系。它充当一张地图,连接各种数据,并以易于理解的方式体现这些关系。知识图谱常常被用来存储复杂的信息,并通过链接相干概念来促进对大量数据集的理解。
1.1 知识图谱的主要特性
知识数据库一样平常通过图数据库承载,是集中式信息管理的关键,它提供了优化可访问性的结构化存储库。先进的搜刮功能提高了数据检索效率,确保快速和准确的信息发现。协作工具进一步促进实时贡献,促进共享知识和不绝改进的文化。
节点与边缘
知识图谱由节点(体现实体或想法)和边(体现这些实体之间的接洽)构成。例如,在以书籍为中心的知识图谱中,实体可以象征特定的书籍、作者和类别,而连接可以象征链接,如“属于什么类别”或“由谁所有”等。
语义关系
它们捕捉语义关系,这意味着它们理解数据的上下文和含义。这使得它们对于像推荐体系和搜刮引擎如许的应用步伐非常有效,由于在这些应用步伐中,理解数据背后的含义是至关紧张的。
灵活性
知识图谱具有高度的灵活性,可以或许以传统数据库难以处理的方式体现复杂的、相互连接的数据。
1.2 查询示例
以一个简单的图书知识图谱为例,在这里,我们希望搜刮由特定作者编著的所有书籍。
- # 使用SPARQL 来通过作者查找图书
- query = "
- SELECT ?bookTitle WHERE {
- ?book rdf:type :Book .
- ?book :writtenBy :AuthorName .
- ?book :title ?bookTitle .
- }
- “
复制代码 BookTitle 是一个变量,它将保存指定作者所写的书的标题。此查询在图中搜刮具有: writtenBy 关系的所有书籍。
2. 关于向量数据库
矢量数据库以矢量的形式存储数据。向量只是体现某些信息的数字序列。例如,在机器学习中,向量常常被用来体现数据点的特性。
2.1 矢量数据库的主要特性
矢量数据库在处理复杂和大型数据(如照片、文档和传感器信号)方面正变得越来越流行。它们是为快速有效地处理大型数据集而设计的。
数值表达
这里数据以数值向量的形式存储。这使得它适用于必要数学运算的应用步伐,例如相似性搜刮或机器学习。
高效率的征采
矢量数据库非常适合实行快速搜刮和比较。特殊是在处理大型数据集时。它们是图像或文本相似性搜刮等应用步伐的抱负选择,在这些应用步伐中,必要查找与给定查询最相似的项。
高维空间
向量可以有多个维度,允许复杂和详细的数据体现。例如,图像可以由一个高维向量来体现,该向量捕捉图像的像素信息、颜色和其他特性。
2.2 向量数据库查询示例
假设我们拥有一个矢量数据库,每个矢量代表一个图像。我们的目标是辨认雷同于指定查询图像的图像。
- import faiss
- import numpy as np
- # `image_vectors` 是一个图像向量;`query_vector` 是待查找的图像向量
- index = faiss.IndexFlatL2(image_vectors.shape[1])
- index.add(image_vectors)
- # 查找最相似的5个图像
- D, I = index.search(np.array([query_vector]), 5)
- print("Indices of similar images:", I)
复制代码 其中,IndexFlatL2被用来创建一个基于近来邻搜刮欧几里得度量的索引,搜刮以查询向量的方式提供了前5个最相似的图像。
3. 知识图谱与矢量数据库的比较
当对知识图谱与矢量数据库举行比较时,了解它们在体现和查找数据方面的差异非常紧张。知识图谱能很好地体现事物之间的接洽,非常适合根据意义来查找信息。与此同时,矢量数据库更善于处理复杂的数据,比如文本、图像和没有构造的数据,这使得它们成为必要处理这类数据的使命的关键。
知识图谱与矢量数据库在数据表达、性能和典型用例的比较如下:
对比项知识图谱向量知识库数据表达使用带有节点和边的图形结构来体现实体及其关系使用矢量(数字阵列)体现数据点,适用于数值和高维数据。用例对于理解实体之间的关系至关紧张的应用步伐非常抱负。它们通常用于语义搜刮、推荐体系和知识管理体系。最适合于必要相似性搜刮的应用步伐,如图像辨认、自然语言处理和机器学习。性能在体现复杂关系方面提供了很大的灵活性,但在处理大规模的数字数据时大概会碰到性能问题。为数值数据和相似性搜刮提供优秀的性能,但在体现复杂的、相互关联的数据时大概不那么灵活。 4. 知识图谱与向量数据库的结合
在某些情况下,同时使用知识图和矢量数据库大概非常强大。例如,在推荐体系中,可以使用知识图谱来理解目标和用户之间的关系,而向量数据库可以用来实行快速相似性搜刮以找到最相干的目标。
- kg_query = "'
- SELECT ?relatedItem WHERE {
- :UserID :likes ?item .
- ?item :relatedTo ?relatedItem .
- }
- "'
- # 从知识图谱中找到目标列表
- related_items = ["Item1", "Item2", "Item3"]
- # 使用向量数据库查找相似的目标
- similar_items = []
- for item in related_items:
- item_vector = get_vector(item)
- D, I = index.search(np.array([item_vector]), 5)
- similar_items.extend(I)
- # 得出推荐列表
- print("Recommended items:", similar_items)
复制代码 在这个例子中,使用知识图来查找与用户喜欢的对象相干目标,使用向量数据库来查找与这些相干对象相似的目标,从而形成一个相对全面的推荐体系。
5. 知识图谱的向量化
知识图谱的向量化一样平常表达为嵌入模型,这些模型旨在将实体和关系映射到度量空间中的低维向量体现(嵌入)。在关系型相干变换下,实体之间的接近度反映了知识图谱中存在相应的边的大概性。换句话说,如果两个实体通过知识图谱中的一个特定关系连接在一起,那么在应用相应的关系特定转换之后,它们的嵌入应该是紧密相干的。
5.1 嵌入模型
例如,两种知识图谱嵌入模型:TransE 和 PairRE。TransE 将每个实体和关系体现为嵌入空间中的一个向量。对于给定的三元组(头部、关系、尾部) ,TransE 的目标是使头部实体的嵌入和关系的嵌入之和近似便是尾部实体的嵌入。这种基于翻译的方法允许 TransE 有效地建模实体之间的简单关系。
另一方面,PairRE 将每个关系体现为一对向量(rH,rT) ,并将元素相乘(Hadamard 乘积)应用于实体嵌入。对于一个给定的三元组(头,关系,尾) ,PairRE 的目的是使 rh ∘ h (其中 rh 是头特定关系嵌入)的元素智能积近似便是 rt ∘ t (其中 rt 是尾特定关系嵌入)的元素的Hadamard乘积。这种方法允许 PairRE 建模实体之间更复杂的关系,同时思量到头部和尾部实体在关系中的特定脚色。
TransE 和 PairRE 都使用梯度下降法举行练习,以便在满足各自的约束时只管减少误差。然而,由于问题的规模,在大型知识图谱中练习这些模式大概是具有挑战性的。随着知识图谱中实体数量的增加,潜在三元组的数量以二次方式增加,这使得在练习期间思量所有大概的三元组在计算上是不可行的。为了办理这个问题,一样平常会使用负抽样来估计知识图谱中不存在的三元组的误差。这种技术通过粉碎正三元组(即 知识图谱中存在的三元组)来天生负三元组,方法是用一个随机实体更换头部或尾部的实体。然后,练习该模型,使其正三元组的得分高于负三元组。这种方法允许模型从现有的和不存在的关系中学习,同时保持可管理的计算复杂性。
5.2 链路推测和评估度量
知识图谱嵌入模型的主要使命之一是链接推测,它包括推断图中缺失的链接。链路推测有两个常见的应用: 二叉链路分类和潜在链路完成度排序。
- 二叉链路分类。给定一个三元组(头部,关系,尾部) ,推测三元组大概是真或假。这对于诸如事实检查或知识库补全等使命非常有效。
- 潜在链路补全的排序。给定一个部分三元组,例如,(头,关系,?),模型对缺失实体的潜在候选者举行排序。这对于诸如推荐体系或问题答复之类的使命非常有效。
为了评估 KG 嵌入模型在链路推测使命中的性能,使用了两个常用的指标:
- hit@N,权衡的是排在 N 个推测前列的正确实体的比例。例如,如果给定(头部,关系)对的正确尾部实体在100个潜在候选者中排名第3,那么 Hits@10得分将为1(由于正确的实体在前10名中) ,而 Hits@1得分将为0(由于正确的实体不是最高推测)。
- MRR,此度量计算正确实体的倒数排名的均匀值。倒数排名是第一个正确推测的排名的倒数。例如,如果正确的尾部实体排名第三,倒数排名将是1/3。
5.3 学习机制
当前,大抵有三种差异的学习机制,有助于提拔知识图谱嵌入模型的性能: 非结构化统计学习,网络学习和主题学习。这些机制为嵌入式模型如何捕捉和利用知识图谱中的信息提供了差异的视角。通过了解每个机制的作用,深入了解各种嵌入模型的长处和局限性,从而开发出更有效的知识图谱学习方法。
非结构化统计学习
非结构化统计学习是一种面向知识图谱的学习方法,其重点是利用潜在变量建模三元组(h,r,t)的概率分布。此方法没有明确思量图结构或关系之间的逻辑规则。相反,它依靠于实体的统计共同出现的频率和知识图谱内的关系作出推测。在非结构化统计学习中,每个头部实体、尾部实体和关系在嵌入空间中用一个差异的向量体现。模型根据这些嵌入在数据中共同出现的频率和模式来学习它们。三元组(h,r,t)的得分通常使用点积或嵌入的头部、关系和尾部之间的另一个相似性度量来计算。
这种方法不直接利用图的结构属性,而是关注实体和关系之间的统计关系。这使得非结构化统计学习在数据体现出强共现模式时特殊有效,这种模式不必要详细的图结构分析就可以捕捉。
网络学习
网络学习是一种不必要明确思量关系的语义就可以获取知识图谱的结构特性的机制。这种方法利用连通性模式和图的拓扑结构来学习反映实体的邻近性和相干性的嵌入。
像 TransE 如许的嵌入模型可以通过基于图谱中观察到的连通性调解实体和关系嵌入来学习潜在的网络模式。在练习过程中,该模型试图最小化由边直接连接的实体之间的嵌入距离,同时最大化不直接连接的实体之间的距离。这个优化过程允许模型学习反映图结构的嵌入,在图中更接近的实体具有更相似的嵌入。
通过学习这些结构模式,网络学习允许嵌入模型捕捉知识图谱的紧张拓扑特性,这对于像链接推测或实体聚类如许的使命大概是至关紧张的,尤其是在没有详细的关系信息的情况下。
主题学习
这是知识图嵌入过程中发现关系规则的一种机制。主题是知识图谱中可以体现逻辑规则或关系之间约束的小的、重复出现的子图。
知识图谱的嵌入模型,如 TransE,可以通过优化关系嵌入来学习这些模式,以满足模式所隐含的约束条件。主题学习可以捕捉图结构之外的各种规则,比如对称性(如果 A 与 B 相干,那么 B 与 A 相干),为知识图谱中的规则学习提供了一个准确的定义,它完全依靠于图的结构而不是外部信息或推理。这种方法有助于捕捉和利用知识图谱中固有的模式来提高嵌入质量和推测性能。
5.4 评价知识图谱的嵌入
在链接推测使命中增加负样本的数量和多样性,以提供更具挑战性和代表性的测试。重采样指标(R-MRR)和标准指标一起使用,可以以得到更准确的模型性能评估,特殊是对于大型知识图谱,统一的负样本大概会产生误导。
6. 小结
知识图谱和矢量数据库各有其独特的优势,适合差异类型的使命。知识图谱善于体现和查询实体之间的复杂关系,这使它们成为语义搜刮和推荐体系等应用步伐的抱负选择。矢量数据库为存储和搜刮大量数字数据而举行了优化,使它们非常适合举行图像和文本相似性搜刮等使命。在某些情况下,结合这两种技术可以提供一个强大的办理方案,利用各自的优势来得到更好的结果。其中,知识图谱的向量化提供了一种新的结合尝试。
PS,如果希望对向量数据库有进一步的了解以及在工程中更好的应用,可以参考图灵出版的《从零构建向量数据库》一书:
【参考资料与关联阅读】
- "
airRE: Knowledge Graph Embeddings via Paired Relation Vectors", arxiv.org/pdf/2011.03798v3
- 在大模型RAG体系中应用知识图谱
- 面向知识图谱的大模型应用
- 让知识图谱成为大模型的伴侣
- 知识图谱的5G追溯
- 从语义网到知识图谱
- 行业规模的知识图谱——经验和挑战
- 知新温故,从知识图谱到图数据库
- 解读向量数据库
- 解读:基于图的大模型提示技术
- 7B?13B?175B?解读大模型的参数
- 大模型应用的10种架构模式
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |