仅需一个插件让关系型数据库实现图数据存储与检索

简介

Apache AGE是一个PostgreSQL数据库的扩展插件,使得在关系型数据库中也可以使用openCypher查询语言进行图查询。有了该插件,可以在PostgreSQL数据库中同时实现关键字检索、向量检索、图检索,仅需一个数据库即可实现复杂RAG的各种存储和检索需求。

安装

Docker安装

  1. 获取镜像
docker pull apache/age
  1. 运行容器
docker run \
    --name age  \
    -p 5455:5432 \
    -e POSTGRES_USER=postgresUser \
    -e POSTGRES_PASSWORD=postgresPW \
    -e POSTGRES_DB=postgresDB \
    -d \
    apache/age
  1. 启动数据库
docker exec -it age psql -d postgresDB -U postgresUser

源码安装

Git Clone仓库或手动下载官方发布的版本。目前,仅支持 PostgreSQL 版本 11~16,若低于11则无法安装使用。

安装及初始化

  1. 安装扩展
CREATE EXTENSION age;
  1. 加载扩展
LOAD 'age';
  1. 设置搜索路径
SET search_path = ag_catalog, "$user", public;
  1. 创建图
SELECT create_graph('my_graph');

AGE这个插件与其他插件不同,安装后,还需要执行第二步加载插件和第三步设置搜索路径。设置搜索路径则是为了让数据库能够找到 AGE 的函数,如 create_graph(),否则执行相关函数都会出错

基本操作

基本创建操作

创建节点

  1. 创建单个节点
SELECT * FROM cypher('my_graph', $$
    CREATE (p:Person {name: '张三', age: 30})
    RETURN p
$$) as (v agtype);
  1. 同时创建多个节点
SELECT * FROM cypher('my_graph', $$
    CREATE (p1:Person {name: '李四', age: 25}),
           (p2:Person {name: '王五', age: 35})
    RETURN p1, p2
$$)