探索 ArangoDB 和 LangChain 如何通过自然语言驱动图数据库查询
引言
在当代数据驱动的世界中,图数据库以其处理复杂连接数据的能力而异军突起。ArangoDB 是一款优秀的图数据库,它不仅支持原生图形数据,还集成了搜索引擎和 JSON 支持,允许通过单一查询语言进行访问。本文将向您展示如何利用大语言模型(LLMs)和 LangChain,为 ArangoDB 数据库提供自然语言接口。
主要内容
安装和设置
我们首先需要运行一个本地的 ArangoDB 实例,或者通过 ArangoDB 云连接器获取临时云实例。可以通过以下命令来运行 Docker 镜像:
docker run -p 8529:8529 -e ARANGO_ROOT_PASSWORD= arangodb/arangodb
或者,安装相关的 Python 包以连接到 ArangoDB 云实例:
%%capture
%pip install --upgrade --quiet python-arango # ArangoDB 的 Python 驱动
%pip install --upgrade --quiet adb-cloud-connector # ArangoDB 云实例配置器
%pip install --upgrade --quiet langchain-openai
%pip install --upgrade --quiet langchain
from adb_cloud_connector import get_temp_credentials
from arango import ArangoClient
con = get_temp_credentials()
# 使用 API 代理服务提高访问稳定性
db = ArangoClient(hosts=con["url"]).db(
con["dbName"], con["username"], con["password"], verify=True
)
数据库填充
接下来,我们将使用 Python 驱动将《权力的游戏》数据导入数据库。首先,我们创建一个图并定义节点和边。
if db.has_graph("GameOfThrones"):
db.delete_graph("GameOfThrones", drop_collections=True)
db.create_graph(
"GameOfThrones",
edge_definitions=[
{
"edge_collection": "ChildOf",
"from_vertex_collections": ["Characters"],
"to_vertex_collections": ["Characters"],
},
],
)
documents = [
{"_key": "NedStark", "name": "Ned", "surname": "Stark", "alive": True, "age": 41, "gender": "male"},
{"_key": "CatelynStark", "name": "Catelyn", "surname": "Stark", "alive": False, "age": 40, "gender": "female"},
# 省略其他人物数据
]
edges = [
{"_to": "Characters/NedStark", "_from": "Characters/AryaStark"},
# 省略其他关系数据
]
db.collection("Characters").import_bulk(documents)
db.collection("ChildOf").import_bulk(edges)
查询 ArangoDB 数据库
使用 ArangoGraphQAChain,您可以自然语言询问数据。以下是如何使用链来查询:
from langchain.chains import ArangoGraphQAChain
from langchain_openai import ChatOpenAI
chain = ArangoGraphQAChain.from_llm(ChatOpenAI(temperature=0), graph=graph, verbose=True)
print(chain.run("Is Ned Stark alive?"))
常见问题和解决方案
- 连接失败:确保 Docker 容器正常运行,或者确认云实例凭证正确。
- 数据查询错误:检查图定义和数据是否正确导入。
总结和进一步学习资源
本文展示了如何结合 ArangoDB 和 LangChain,通过自然语义实现对图数据库的访问。这为处理复杂数据提供了强大的工具。您可以进一步了解 LangChain 和 ArangoDB 的文档以深入掌握其功能。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—
675

被折叠的 条评论
为什么被折叠?



