虽然大多数人关注的是检索增强生成 (RAG) 对非结构化文本(例如公司文档或文件)的检索,但我对检索系统对结构化信息(尤其是知识图谱)的检索非常看好。GraphRAG 引起了很多关注,尤其是微软的实现。然而,在他们的实现中,输入数据是文档形式的非结构化文本,使用大型语言模型 (LLM) 将其转换为知识图谱。 在这篇博文中,我们将展示如何在包含来自 FDA 不良事件报告系统 (FAERS) 的结构化信息的知识图谱上实现检索器,该系统提供有关药物不良事件的信息。如果你曾经摆弄过知识图谱和检索,你的第一个想法可能是使用 LLM 生成数据库查询,以从知识图谱中检索相关信息来回答给定的问题。然而,使用 LLM 生成数据库查询仍在发展中,可能还不能提供最一致或最强大的解决方案。那么,目前有哪些可行的替代方案呢? 我认为,目前最好的解决方案是动态查询生成。这种方法不是完全依赖 LLM 来生成完整的查询,而是采用逻辑层,从预定义的输入参数确定性地生成数据库查询。可以使用具有函数调用支持的 LLM 来实现此解决方案。使用函数调用功能的优势在于能够向 LLM 定义它应该如何准备函数的结构化输入。这种方法确保查询生成过程是可控且一致的,