릴리스 노트 2.17.0

이번 AgensGraph 릴리스는 PostgreSQL 17.10 릴리스까지의 업스트림 호환성, 향상된 Cypher 쿼리 지원, 빌드 인프라 업데이트를 포함하여 중요한 기능 개선과 버그 수정을 제공합니다.

업스트림 변경 사항:

  • 업스트림 병합: AgensGraph는 이제 17.10 릴리스까지의 PostgreSQL 17과 호환되며, 최신 PostgreSQL 개선 사항과 보안 패치를 반영합니다.

  • 증분 백업: pg_basebackup은 이제 증분 백업을 수행할 수 있으며, 이후 pg_combinebackup과 결합하여 일상적인 베이스 백업의 크기와 소요 시간을 줄여 줍니다.

  • MERGE 개선: MERGE는 이제 (merge_action() 함수를 사용하는) RETURNING 절과 WHEN NOT MATCHED BY SOURCE 동작을 지원합니다.

  • SQL/JSON JSON_TABLE: 표준을 준수하는 JSON 처리를 위해 JSON_TABLE()과 SQL/JSON 쿼리 함수인 JSON_EXISTS(), JSON_QUERY(), JSON_VALUE()가 추가되었습니다.

  • VACUUM 메모리 및 성능: 죽은 튜플 ID를 저장하기 위한 새로운 내부 데이터 구조가 VACUUM 메모리 사용량을 크게 줄이고 대용량 테이블에서의 성능을 향상시킵니다.

  • 쿼리 성능: IS [NOT] NULL의 향상된 처리와 순차 스캔을 위한 스트리밍 I/O를 비롯하여 플래너 및 실행기에 대한 다수의 개선이 이루어졌습니다.

기능 개선:

  • DELETE / DETACH DELETE 성능 최적화 — 최대 약 30배 향상 (#781):

    • 정점을 삭제할 때 더 이상 모든 간선 레이블을 순차적으로 스캔하지 않으므로, 내부 테스트에서 연결이 많은 정점의 삭제가 약 30배 더 빨라졌습니다.

  • 새로운 enable_graph_dml 설정 매개변수 (#786):

    • 그래프 객체(기반이 되는 정점 및 간선 테이블)에 대해 SQL DML 구문(INSERT / UPDATE / DELETE)을 직접 실행할 수 있도록 허용하는 enable_graph_dml GUC가 추가되었습니다. 그래프 저장소에 원시 SQL DML을 실행하면 그래프 데이터가 손상될 수 있으므로, 기본값은 off이며 슈퍼유저만 사용할 수 있습니다.

  • 그래프 속성에 대한 pgvector 및 표현식 속성 인덱스 (#804):

    • CREATE PROPERTY INDEX는 이제 그래프 속성에 대해 ::vector(n) 캐스팅을 사용하는 pgvector HNSW 인덱스와 to_tsvector(...)를 사용하는 GIN 인덱스를 생성하고 활용할 수 있습니다 — 이는 Cypher 내부에서의 벡터 검색, 전문 검색, 하이브리드 검색의 기반입니다 (새로운 Vector / Full Text / Hybrid Search 가이드 참고).

AI 라이브러리:

해당 제품들은 AI Repository에서 이용할 수 있습니다.

  • LangChain AgensGraph

    • langchain에서 GraphStore 및 VectorStore 통합을 지원하는 Python 플러그인입니다.

  • LlamaIndex AgensGraph

    • llamaindex에서 AgensGraphStore, PropertyGraphIndex, AgensgraphVectorStore 통합을 지원하는 Python 플러그인입니다.

  • AgensGraph LightRag

    • LightRAG로 AgensGraph에서 지식 그래프를 저장하고 쿼리하는 기능을 추가하는 Python 플러그인입니다.

  • Cognee Community Graph Adapter - AgensGraph

    • Cognee 프레임워크를 위한 AgensGraph 그래프 데이터베이스 어댑터를 제공하는 Python 플러그인입니다.

  • AgensGraph MCP Server

    • 데이터베이스 상호작용을 제공하고 AgensGraph를 통한 그래프 탐색 기능을 가능하게 하는 Model Context Protocol(MCP) 서버 구현입니다.

버그 수정:

  • 리스트 컴프리헨션에서 그래프 엔터티를 사용할 수 없던 문제 (#788)

    • 그래프 엔터티와 이를 다루는 함수들 — 예를 들어 nodes(), relationships(), startNode(), type(), label() — 을 이제 [n IN nodes(p) | n] 또는 [r IN relationships(p) WHERE type(r) = 'knows']와 같은 리스트 컴프리헨션 내부에서 사용할 수 있습니다. 이전에는 그래프 객체가 타입이 없는 JSONB 배열로 수집되어 잘못된 결과를 반환했으나, 이제는 적절하게 타입이 지정된 배열로 수집됩니다.

  • IN 연산자에서 발생하는 CypherList is expected 오류 (#789)

    • IN 연산자의 우변이 표현식으로 생성된 리스트인 경우, 예를 들어 x IN split(s, ',') 또는 x IN ['1', '2']와 같은 경우에 잘못 발생하던 CypherList is expected 오류를 수정했습니다.

  • SET += 연산자에서 NULL로 인한 어설션 실패 (#791)

    • SET +=(맵 병합) 연산자에 NULL을 사용해도 더 이상 어설션 실패가 발생하지 않습니다. NULL인 경우는 이제 COALESCE 폴백으로 안전하게 처리됩니다.

  • ORDER BY가 RETURN 외부의 변수를 참조할 수 없던 문제 (#805)

    • 프로젝션에 포함되지 않은 열에 대해 RETURN 다음에 ORDER BY를 사용하는 Cypher 쿼리 — 예: MATCH (p:person) RETURN p.name ORDER BY p.age — 가 이제 실패하지 않고 정상 동작합니다.

문서:

  • Vector, Full Text, Hybrid Search 가이드:

    • 인덱싱 및 GraphRAG 패턴을 포함하여, 그래프 속성에 대한 시맨틱(pgvector) 검색, 전문 검색, 하이브리드 검색을 다루는 새로운 개발자 매뉴얼 페이지입니다.

  • 문서 포털:

    • 문서 포털이 AgensGraph 2.17 릴리스에 맞춰 업데이트되었습니다.