릴리스 노트 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_dmlGUC가 추가되었습니다. 그래프 저장소에 원시 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 릴리스에 맞춰 업데이트되었습니다.