|
检索增强生成(Retrieval-Augmented Generation, RAG)是一种结合检索与生成的技术范式,能够通过检索相关信息来丰富生成任务的上下文,从而实现更加高效、可解释和可控的知识问答与内容生成。目前,向量数据库在 RAG 系统中广泛应用,用于存储和检索知识的语义嵌入。图数据库却尚未得到充分的重视,尽管 GraphRAG 等方法强调了图的价值,并在多跳推理和复杂关联场景中获得了关注,但许多实现并未将其与持久化的图数据库结合。这种缺失导致了图技术的潜力未被完全释放。持久化图数据库的引入,不仅可以提升知识检索的效率,还能自然表征实体之间的关联关系,尤其在多跳查询、复杂推理和大规模知识管理中具有不可替代的优势。本文将从以下几个方面探讨如何结合图数据库与向量数据库,构建高效的 RAG 系统:3. 面临的关键挑战(如节约 token 和消歧)及应对策略。 ▌一、ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: var(--articleFontsize);letter-spacing: 0.034em;">图数据库在 RAG 系统中的价值 图数据库(如 Neo4j、NebulaGraph、TigerGraph)擅长以节点和边的形式存储数据。- 节点:表示实体,比如“人物”、“地点”、“组织”等。
- 边:表示实体之间的关系,比如“隶属于”、“位于”、“导致”等。
- 清晰的关系表达:实体之间的关联可以显式表示并查询。例如,“Alice 是数据科学家,她曾在 Google 工作”,可以建模为:
[Alice]-[职业]->[数据科学家][Alice]-[曾工作于]->[Google] ▌二、ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;">从知识的自然关联到图表示数据来源:从结构化数据(如数据库表格)和非结构化数据(如文档、网页)中提取实体和关系。 知识抽取:利用 NLP 工具、规则或者大语言模型进行实体识别(NER)和关系抽取。 存储到图数据库:将提取的实体和关系根据图数据库的存储模型转写对应的查询语句存储为节点和边。
在这个过程中,原始数据、知识片段和实体关系三者的关联同样需要持久化到图数据库中,以支持后续的查询和推理。 上面提到的是一般的构建过程,在一些简单的场景,比如文章、书籍内部的知识关联,可以天然利用目录信息、文件层次结构等构建简单的图谱。 动态拓展图谱: - 随着新知识的获取,可以动态更新图谱,特别地,领域专家应该参与到图谱的构建和校准过程中,以确保图谱的准确性和实用性,在整个 RAG 生命周期里,这是最适合发挥 Human In The Loop 理念的环节。
尽管图数据库在关联关系推理方面表现出色,但它对非结构化数据(如长篇文档、模糊问题)显得力不从心。向量数据库通过语义嵌入技术为模糊检索提供支持,可以弥补图数据库的不足:语义检索:无需精确匹配关键词,可以通过语义相似性找到相关内容。例如,用户问题“讲述 Alice 的职业经历”,向量数据库能检索到文档片段:“Alice 曾担任 Google 的数据科学家”。非结构化数据处理:图数据库通常不适用于直接存储大段非结构化文本,向量数据库可以通过将文本转化为向量嵌入来存储它们的语义信息。 NebulaGraph 5.x 版支持原生的向量存储和检索能力,并且提供 GenAI Ready 的 SDK 从而可以消除整合不同技术栈的挑战。 通过关联图数据库和向量数据库,可以有效结合知识的关联关系和语义信息,从而实现更加高效的知识检索和推理。 识别用户问题指向性 用户提出问题后,首先可以利用 nlp 技术或者大模型进行意图识别,以确定用户问题的指向性。 如果指向明确,可以有效提取对应的实体,并利用图数据库进行查询。 如果指向不明确,可以利用向量数据库进行语义检索,以获取相关内容。
在图数据库中查询关联 将提取出的实体作为输入,在图数据库中查询它们之间的关系,或验证某些假设性关系是否存在。 将对应的实体和关系网络、语义信息整合,形成一个完整的上下文。
整合结果 在前面的部分,我们主要解决了将图数据库与 RAG 系统结合的问题。接下来,我们将探讨在构建此类 RAG 系统时面临的一些重要挑战。如何节约 token 由于知识之间联系的复杂性,检索结果中包含大量不相关的实体和关系,导致上下文长度增加,从而需要对检索结果进行优化,以节约 token。1. 图谱裁剪: 2. 摘要生成: - 对图数据库返回的结果进行摘要,使用规则或模型生成精炼的知识表示,进一步地,这些结果同样可以进一步持久化,以供后续使用。
3. 层次化问答: - 优先检索高层次的概念或关系,若需要更具体的细节,再进行二次检索。
如何消歧 知识图谱和语义检索经常会遇到歧义问题,例如同名实体(“Apple”是公司还是水果?)或多义词(“bank”是银行还是河岸?)。1. 上下文消歧: - 在向量数据库检索时,利用用户问题的上下文信息,增强歧义词的语义表示。例如,问题“Apple 的市值是多少?”可以通过语义分析明确指代公司,而非水果。
2. 实体类型约束: - 在图数据库中,对实体设置类型和属性约束。例如,“Apple”作为公司时,必须有属性“行业=科技”。
3. 反馈机制: - 在用户交互中,允许用户指定某个实体的含义。例如,用户可以选择“Apple 是公司”或“Apple 是水果”。
4. 联合检索: - 通过向量数据库和图数据库的联合检索,利用两种方式相互验证实体的含义。例如,通过图谱确认“Apple”是否与“科技公司”相关。
图数据库擅长描绘知识的结构,而向量数据库补充了语义的细节。在 RAG 系统中,它们各司其职,共同实现了高效、可解释的知识生成,从而可以应对更复杂场景和专业领域下的挑战。 |