{#217-agensgraph-2170} # AgensGraph 2.17.0 이 AgensGraph 릴리스는 PostgreSQL 17.10과의 상류 호환, Cypher 쿼리 지원 개선, 빌드 인프라 갱신을 비롯한 상당한 개선과 버그 수정을 담고 있습니다. {#217-upstream-changes} ## 상류 변경 * **상류 머지:** AgensGraph가 이제 17.10 릴리스까지의 [PostgreSQL 17](https://www.postgresql.org/docs/release/17.0/)과 호환되며, 최신 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를 비롯해 플래너와 실행기의 개선이 많습니다. {#217-enhancements} ## 개선 * **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 안에서의 벡터·전문·하이브리드 검색의 토대입니다(새로 생긴 벡터 / 전문 / 하이브리드 검색 가이드를 참고하십시오). **AI 라이브러리:** 이 제품들은 [AI 저장소](https://github.com/skaiworldwide-oss/agensgraph-ai)에서 볼 수 있습니다 * **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) 서버 구현입니다. {#217-bug-fixes} ## 버그 수정 * **리스트 컴프리헨션에서 그래프 개체를 쓸 수 없던 문제 (#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)** * 투영에 없는 컬럼으로 `ORDER BY` 하는 Cypher `RETURN` — 예를 들어 `MATCH (p:person) RETURN p.name ORDER BY p.age` — 이 실패하는 대신 이제 동작합니다. **문서:** * **벡터·전문·하이브리드 검색 가이드:** * 그래프 속성에 대한 의미(pgvector)·전문·하이브리드 검색을 다루는 개발자 매뉴얼 페이지가 새로 생겼으며, 인덱싱과 GraphRAG 방식도 담았습니다. * **문서 포털:** * [문서 포털](https://tech.skaiworldwide.com/docs)이 AgensGraph 2.17 릴리스에 맞춰 갱신됐습니다.