Apache AGE는 graph database 기능을 제공하는 PostgreSQL extension입니다. AGE는 A Graph Extension의 약자이며, Bitnine의 PostgreSQL 10 fork인 AgensGraph에서 영감을 받았습니다. AgensGraph는 multi-model database입니다. 이 프로젝트의 목표는 relational 및 graph model 데이터를 모두 처리할 수 있는 단일 storage를 만들어 사용자가 표준 ANSI SQL과 함께 Graph query language인 openCypher를 사용할 수 있도록 하는 것입니다. Apache AGE가 저장하는 데이터 요소는 node, 이들을 연결하는 edge, 그리고 node와 edge의 attribute입니다.
이 notebook은 LLM을 사용하여 Cypher query language로 쿼리할 수 있는 graph database에 자연어 interface를 제공하는 방법을 보여줍니다.
Cypher는 property graph에서 표현력 있고 효율적인 데이터 쿼리를 가능하게 하는 선언적 graph query language입니다.
설정하기
AGE extension이 설치된Postgre instance가 실행 중이어야 합니다. 테스트를 위한 한 가지 옵션은 공식 AGE docker image를 사용하여 docker container를 실행하는 것입니다.
다음 스크립트를 실행하여 로컬 docker container를 실행할 수 있습니다:
데이터베이스 시드하기
데이터베이스가 비어 있다고 가정하면 Cypher query language를 사용하여 데이터를 채울 수 있습니다. 다음 Cypher statement는 멱등성(idempotent)을 가지므로, 한 번 또는 여러 번 실행하더라도 데이터베이스 정보는 동일합니다.Graph schema 정보 새로고침
데이터베이스의 schema가 변경되면 Cypher statement를 생성하는 데 필요한 schema 정보를 새로고침할 수 있습니다.Graph 쿼리하기
이제 graph cypher QA chain을 사용하여 graph에 질문할 수 있습니다결과 수 제한하기
top_k parameter를 사용하여 Cypher QA Chain의 결과 수를 제한할 수 있습니다.
기본값은 10입니다.
중간 결과 반환하기
return_intermediate_steps parameter를 사용하여 Cypher QA Chain의 중간 단계를 반환할 수 있습니다
직접 결과 반환하기
return_direct parameter를 사용하여 Cypher QA Chain의 직접 결과를 반환할 수 있습니다
Cypher 생성 prompt에 예제 추가하기
특정 질문에 대해 LLM이 생성하기를 원하는 Cypher statement를 정의할 수 있습니다Cypher 및 답변 생성에 별도의 LLM 사용하기
cypher_llm 및 qa_llm parameter를 사용하여 서로 다른 llm을 정의할 수 있습니다
특정 node 및 relationship type 무시하기
include_types 또는 exclude_types를 사용하여 Cypher statement를 생성할 때 graph schema의 일부를 무시할 수 있습니다.
생성된 Cypher statement 검증하기
validate_cypher parameter를 사용하여 생성된 Cypher statement의 relationship 방향을 검증하고 수정할 수 있습니다
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.