自从企业开始采用检索增强生成(Retrieval Augmented Generation,RAG)以来,这项技术已经取得了显著进步。正如我们所见,各组织不断探索创新方法以挖掘更多价值。尽管检索过程和搜索算法变得更快、更高效,但在处理复杂任务(如多步逻辑推导)或回答需要将分散信息点连接起来的复杂问题时,它们仍然存在局限性。
让我们通过一个真实的例子来进一步探讨这个主题:“1492 年圣诞节沉没的哥伦布船叫什么名字?”
一个标准的 RAG 系统通常会遵循以下步骤:
识别事件 :查找有关哥伦布船只及其沉船的信息。
确认日期 :验证圣诞节当天发生事件的船只。
确定名称 :提取特定船只的名称。
然而,第一个步骤往往会成为挑战,因为基础 RAG 系统主要依赖语义相似性进行文本检索。它们擅长找到相似的内容,但在连接多个事实以回答复杂问题时表现不足。当关键信息分散在不同文档中时,这些系统难以将其拼凑起来。传统解决方案(如为常见问题手动创建问答对)不仅成本高昂,而且不切实际。
为了解决这些局限性,微软研究院提出了一种创新性解决方案——GraphRAG。这种方法通过将知识图谱融入检索和生成过程,将 RAG 提升到了一个全新的高度。知识图谱通过将实体和关系以节点和边的形式保留下来,为数据创建了更丰富的表示。这就像将一团混乱的信息网转化为一张整齐有序的地图。看看下面的知识图谱,您会立刻明白,通过简单的图谱遍历,回答复杂问题变得多么轻松。是不是很神奇?
-
• RAG 中的向量数据库与图数据库
-
• FalkorDB
-
• 前置条件
-
• 构建知识图谱
-
• 设置 FalkorDB
-
• 数据导入
-
• 查询知识图谱
-
• 自动化 Cypher 查询生成
-
• Cypher 查询输出分析
-
• 聊天机器人集成
-
• 总结
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]👈
在 RAG 系统中,选择向量数据库还是图数据库完全取决于您正在解决的问题、系统架构需求和性能目标。以下是一些帮助您决策的见解:
向量数据库:
-
• 擅长多维数据表示和相似性搜索。
-
• 适用于图像处理、推荐系统和实时 RAG。
-
• 随数据量水平扩展。
-
• 局限性:可能因近似最近邻(ANN)算法和维度问题而影响准确性。
图数据库:
-
• 专注于管理复杂关系和互联数据。
-
• 最适合社交网络分析、欺诈检测和知识表示。
-
• 在基于关系的查询和遍历方面表现出色。
-
• 局限性:在处理复杂结构时可能面临可扩展性挑战和延迟问题。
FalkorDB 是一款为 GraphRAG 应用高度优化的低延迟数据库解决方案。其基于 Redis 的架构提供了高性能的图数据库,利用内存处理技术和高效的内存使用,与基于磁盘存储的图数据库相比,显著加快了查询执行速度并降低了延迟。因此,它能够高效存储和查询数据点之间的复杂关系。此外,它支持各种 AI 框架(如 LangChain 和 LlamaIndex),增强了其在构建 AI 应用方面的功能。
在本文中,我将向您展示如何为 BFSI 行业定制 GraphRAG 驱动的聊天机器人。通过一个假设的银行作为例子,我将演示该技术如何高效管理复杂的金融数据并解决客户查询。
本教程已使用以下 Python 库进行了测试。请在操作时验证版本:
确保为您的 API 密钥设置环境变量:
设置 FalkorDB
您可以通过云端或本地 Docker 设置连接 FalkorDB。
若要在本地设置 FalkorDB,请确保系统已安装 Docker。运行以下命令启动 FalkorDB:
或者,您可以通过 Docker Desktop 控制台启动容器。
要连接到云端,请创建一个账户并登录 FalkorDB 控制台。在仪表盘中,您可以创建一个 AWS 或 Google Cloud 实例并获取凭据。
数据导入
一旦 FalkorDB 启动,请定义并连接图数据库客户端。
由于我们正在构建一个客户支持聊天机器人,我将使用一份银行手册,其中包含有关假设银行的全面信息。该数据集将演示聊天机器人如何处理有关银行产品和服务的复杂客户查询。当然,您也可以使用自己的数据集。
首先,从数据目录加载 PDF 文件。
本教程中,我将使用 OpenAI 的 LLM。以下是定义它的方法:
您可以手动创建知识图谱,也可以利用 LangChain 模块。
手动方法需要将文档拆分为块、识别节点和关系,并使用 Cypher 查询填充图谱。尽管有效,但它繁琐且耗时。以下是用于创建节点和关系的 Cypher 查询示例。
在微软的 GraphRAG 版本中,提供给 LLM 的图谱提取提示如下所示:
为了简化,您可以将所需的 LLM 提供给 LangChain,让它完成剩下的工作。LLM 图谱转换器模块将负责为您创建知识图谱。让我解释一下背后的工作原理。
LLM 图谱转换器使用两种不同的方法来创建图谱:
-
- 基于工具的模式:这是默认模式,适用于支持工具调用的任何 LLM。在此模式下,节点和关系被定义为类。
-
- 基于提示的模式:这是备用模式,用于当 LLM 不支持工具调用时。在这种模式下,模型使用少样本学习从文本中提取实体及其关系。然后将这些数据解析为 JSON 格式以创建图节点和连接。
您可以指定自定义节点类型以限制图谱结构。如果不指定,LLM 将根据内容自动确定适当的节点类型。例如:
创建图谱后,您可以检查其模式以验证结构。请注意,输出可能很长,因此不包括在此。
为了帮助您更好地理解我创建的知识图谱,以下是一个可视化表示:
尽管创建图数据库相对简单,但提取有意义的信息需要掌握像 Cypher 这样的查询语言。Cypher 是一种专为图数据库设计的声明式查询语言,使用模式匹配语法高效遍历节点和关系。FalkorDB 遵循 OpenCypher 格式。
以下是基于我们刚刚创建的知识图谱的 Cypher 查询示例:
查询返回银行提供的所有金融产品。
不同的图数据库以各种方式处理此类查询,可以通过直接实现或与 LangChain 等框架集成。例如,在 LangChain 中,可以通过以下方式执行查询:
为了让您更清楚地了解背后的工作原理,我将实现一个自定义查询来演示底层机制。这将帮助您更直观地理解这些系统的后端运行逻辑。
自动化 Cypher 查询生成
我们需要结合一些提示工程以生成高质量的 Cypher 查询。目前,我们的实现使用精心设计的提示,将数据库模式(包括节点和关系)与用户查询结合起来。然而,总有改进的空间。您可以通过将工具调用与 OpenAI 集成或利用微调的语言模型来进一步优化查询生成。
以下是定义一个函数以优化模式提示的方法:
格式化后的模式现在可以包含在提示模板中。
Cypher 查询输出分析
完成 Cypher 查询后,需要将结果传递给另一个 LLM。这种双 LLM 方法确保用户在聊天交互中收到清晰、上下文相关的信息,而不是原始数据库结果。
分析提示可以结构化如下:
现在,使用辅助函数并将其集成到主函数中。
看起来不错!让我们测试一下这个函数。
恭喜您完成了所有步骤!现在,让我们将所有内容整合到一个 Gradio 界面中。以下是您的 GraphRAG 驱动虚拟助手,随时为您服务。
–
在本文中,我们了解了 GraphRAG 如何为企业提供客户支持聊天机器人。我已涵盖以下关键组件:构建知识图谱、为 Cypher 查询生成构建 LLM 驱动的管道,以及利用 FalkorDB 的功能创建高效、低延迟的 GraphRAG 系统。此方法展示了现代图数据库如何有效支持智能客户服务解决方案。
我还比较了 RAG 系统中图数据库与向量数据库的优劣,并演示了如何根据业务需求选择更适合的解决方案。为了进一步探索,建议您尝试创建更详细的知识图谱,以表示复杂的数据关系。您还可以试用 FalkorDB 的 graph-sdk,它能让这个过程更加简单。
领取方式在文末
学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。
①AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
②AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
③AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
④AI+制造:智能制造和自动化工厂提高了生产效率和质量。通过AI技术,工厂可以实现设备预测性维护,减少停机时间。
…
这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。