graphrag-ts v0.1.8 공개, 증분 빌드와 LangChain 모델 어댑터 추가

V2EX18일 전조회 10

TypeScript와 Bun으로 작성된 오픈소스 GraphRAG 엔진 graphrag-ts가 v0.1.8을 공개했다. Markdown 문서 묶음을 입력으로 받아 지식 그래프를 구성하고, 벡터 검색과 키워드 검색, 그래프 관계를 함께 활용하는 하이브리드 검색을 거쳐 근거를 함께 제시하는 답변을 만들어내는 구조다. 프로젝트 저장소는 GitHub의 sadofriod/graphrag-ts에 있다.

이번 버전에서 가장 눈에 띄는 변화는 증분 빌드다. 문서 일부만 수정되거나 새 문서가 추가됐을 때 그래프 전체를 처음부터 다시 만들지 않고, 바뀌지 않은 커뮤니티는 기존 요약과 임베딩을 그대로 재사용한다. 커뮤니티 지문을 계산하는 computeCommunityFingerprint와 빌드를 시작하는 startIncrementalBuild가 이 흐름의 중심에 있으며, 목적은 재구축 과정에서 발생하는 중복 LLM 호출을 줄이는 것이다.

모델 연결 방식도 달라졌다. 이전에는 OpenAI 호환 인터페이스에 주로 의존했지만, 이제 어댑터를 등록해 LangChain 호환 모델을 붙일 수 있다. registerChatAdapter와 registerEmbeddingAdapter로 채팅 모델과 임베딩 모델을 각각 등록하며, Anthropic, Ollama, Google GenAI 같은 LangChain provider가 예시로 제시됐다. RAG_SLICE_PROVIDER, RAG_JUDGE_PROVIDER, RAG_EMBED_PROVIDER 환경 변수를 통해 역할별로 다른 모델을 지정할 수 있다. 저장 계층은 PostgreSQL과 Prisma, pgvector 조합을 그대로 유지한다. 패키지는 pnpm add @ashes_born/graph-rag-ts로 설치한다.

GraphRAG는 문서를 커뮤니티 단위로 묶어 요약하는 과정 자체가 LLM 호출을 많이 요구한다. 문서가 조금 바뀔 때마다 그래프를 전부 다시 만드는 비용 부담이 크고, 이런 구현이 대개 Python 생태계에 몰려 있다는 점이 TypeScript/Bun 진영에서는 아쉬움으로 남아 있었다. graphrag-ts는 이 두 지점을 겨냥한다.

실무에서는 Node.js나 Bun 기반 백엔드 서비스 안에서 별도 Python 파이프라인 없이 GraphRAG를 구성할 수 있게 된다는 뜻이 있다. 모델 선택의 폭도 넓어져, 로컬 Ollama로 비용을 통제하거나 Anthropic 같은 외부 모델을 섞어 쓰는 구성이 가능해졌다. 증분 빌드는 문서가 자주 갱신되는 사내 위키나 기술 문서 저장소처럼 반복 재구축이 잦은 환경에서 호출 비용과 처리 시간을 줄이는 데 직접적으로 연결된다.

다만 원문은 검색 품질이나 증분 빌드의 정확도에 대한 벤치마크 수치를 제시하지 않았고, 증분 빌드와 모델 어댑터, 검색 효과에 대한 제안과 이슈를 받는다는 입장만 밝히고 있다. 실제 도입 전에는 자신의 코퍼스로 검색 품질을 확인하는 편이 안전하다.

관련 글