虽然向量 (vector)搜索擅长捕获语义相似性,但它在运行时通常不明确知道数据点之间的关系或特定知识体系的潜在结构。纯粹的语义匹配可能会遗漏重要关联,或未能有效使用数据中固有的结构化信息或其上下文 (context)信息。图结构在此处提供了一种有力的补充方法。通过将实体及其关系表示为节点和边,图提供了一个框架,可以将结构信息、关系上下文和领域知识融入搜索过程。
运用显式关系与知识图谱
知识图谱(KG)是可用于增强向量 (vector)搜索的结构化信息的一个主要例子。知识图谱将实体(例如人物、产品、理念)表示为节点,将关系(例如“由…创作”、“是…的一部分”、“与…相关”)表示为有类型的边。
考虑一个用于科学文献的检索增强生成(RAG)系统。向量搜索可能会找到与关于“神经网络 (neural network)剪枝技术”的查询语义相似的论文。然而,一个包含引文信息、作者合作和研究主题的知识图谱可以显著提升相关性:
- 消歧: 如果查询含糊不清,知识图谱中的关系可以帮助明确意图。搜索“Transformer”可能会检索到关于电力变压器 (Transformer)和自然语言处理(NLP)架构的论文。知识图谱可以根据与“NLP”、“注意力机制 (attention mechanism)”或“电网”、“电压”等节点的连接进行区分。
- 上下文 (context)过滤/提升: 向量搜索结果可以根据图属性进行过滤或重新排序。例如,被影响力大的作者(在合作图中具有高中心性)引用的论文,或直接引用查询中隐含提及的某个基础工作的论文,都可以得到提升。
- 基于关系的数据扩展: 除了找到语义相似的论文,我们还可以从初始向量搜索结果出发,遍历图来寻找相关工作,例如引用了初始结果的论文,或相同作者关于相关主题的论文。
集成知识图谱通常涉及根据初始向量搜索候选查询图数据库,或在初始向量检索后的重新排序阶段使用图属性。
捕获隐式结构与图嵌入 (embedding)
在显式知识图谱之外,数据集固有的结构通常可以建模为图。用户-项目交互、文档引用网络,甚至超链接结构都形成了以节点表示项目,边表示关系或交互的图。图嵌入技术旨在学习节点(有时也包括边)的向量 (vector)表示,以捕获这种图拓扑。像Node2Vec、DeepWalk或图神经网络 (neural network)(GNN)如GraphSAGE等算法生成的嵌入中,图结构中接近的节点在嵌入空间中也接近。这些图嵌入捕获的是结构相似性,这可能与文本或图像嵌入捕获的语义相似性有显著差异。
例如,两篇研究论文可能根据其摘要(不同子领域)在语义上相距较远,但在引用图谱中结构上接近(一篇频繁引用另一篇,或它们有许多共同引用)。推荐系统可能会根据描述发现两种产品在语义上不相似,但根据共同购买模式(用户交互图)在结构上相似。
图增强的集成策略
结合语义向量 (vector)搜索和基于图的信息的优势需要特定的集成策略:
-
基于图的重新排序: 这通常是最直接的方法。
- 执行初始向量搜索以检索前k个语义候选。
- 对于每个候选,查询图(例如,知识图谱或交互图)以提取相关属性(节点中心性、关系类型、与查询相关实体的接近程度)。
- 使用原始向量相似性得分和图派生信号计算组合得分。此处可以使用加权求和或学习排序模型等技术。
-
使用图邻居的查询扩展:
- 识别图中与用户查询相关的种子实体。
- 遍历图以找到相关实体(邻居、通过特定路径连接的节点)。
- 基于这些相关图实体,增强原始查询向量或生成额外的查询向量,以拓宽语义搜索范围。这有助于找到与原始查询在语义上略有距离的相关项目。
-
语义嵌入 (embedding)和图嵌入的融合:
- 为每个项目生成语义嵌入(例如,使用BERT或Sentence-BERT从文本生成)和图嵌入(例如,使用Node2Vec从引用网络生成)。
- 将这些嵌入结合成单一表示。常见的融合方法包括:
- 拼接: 简单地将图嵌入附加到语义嵌入之后: v融合=[v语义;v图]
- 加权平均: 使用学习或固定的权重 (weight)将它们结合: v融合=αv语义+(1−α)v图
- 投影: 使用神经网络 (neural network)层从两个输入嵌入中学习最佳融合表示。
- 使用这些融合的嵌入构建向量搜索索引。这使得近似最近邻(ANN)搜索能够同时考虑语义和结构相似性。
-
搜索中的图遍历: 更高级的技术涉及将图遍历直接集成到近似最近邻(ANN)搜索过程中。例如,在基于图的ANN算法(如HNSW)中,搜索过程中的邻域搜索可能会根据外部图中的关系而产生偏向或受限,尽管这会大幅增加实现难度。
流程:图重新排序
以下是典型的基于图的重新排序流程的可视化:
该流程将向量 (vector)搜索结果与图派生特征结合进行重新排序。
实际考量
集成图结构引入了额外的复杂性:
- 数据建模: 定义图模式(节点、边、属性)非常重要。
- 基础设施: 需要与向量 (vector)数据库一起管理图数据库(如Neo4j、Neptune)或图处理库。
- 嵌入 (embedding)生成: 如果使用图嵌入,需要管理这些模型的训练和更新流程。
- 性能: 图查询或遍历会增加搜索流程的延迟。融合嵌入会增加维度,可能影响近似最近邻(ANN)性能。需要仔细优化,并权衡相关性提升与性能成本。
- 同步: 保持图数据与向量索引数据的一致性(特别是当项目被添加或删除时)需要仔细处理。
尽管存在复杂性,但使用图信息增强向量搜索提供了一种精巧的方法来融入关系上下文 (context)和结构化知识,这通常能为复杂应用带来搜索相关性的显著改进,特别是那些得益于理解数据中关系、层次结构或交互模式的应用。