더 나은 RAG 애플리케이션을 위해 LlamaParse와 Neo4j의 강력한 기능을 결합해 봐요!
한 달 전에 LlamaIndex는 LlamaCloud를 발표했는데, 이건 LLM 및 RAG 애플리케이션을 위한 프로덕션 수준의 컨텍스트 확장을 향상시키는 것을 목표로 하는 관리형 구문 분석, 수집 및 검색 서비스예요.
LlamaCloud의 핵심 구성 요소 중 하나는 바로 LlamaParse인데요. LlamaIndex 수집 및 검색과 매끄럽게 통합되는 표나 그림 같은 객체가 포함된 복잡한 문서를 위한 전용 파싱 도구랍니다. 이 통합 덕분에 복잡한 반정형 문서에 대한 검색 시스템을 구축할 수 있어서, 이전에는 엄두도 못 냈던 복잡한 질문에 대한 답을 쉽게 얻을 수 있게 되었어요. 추가적으로, RAG 애플리케이션의 데이터 로드, 처리 및 저장을 간소화하기 위해 Managed Ingestion and Retrieval API가 도입되었답니다.
저는 문서 파싱 파이프라인을 사용해서 문서에서 풍부한 콘텐츠(텍스트 외의 것들!)를 추출하는 방법을 공유해 왔는데요. 이번 글에서는 LlamaParse를 Neo4j와 통합해서 더 정확하고 강력한 Knowledge Graph를 만드는 방법에 대한 단계를 설명할 거예요. 특히 GraphRAG 애플리케이션에 초점을 맞출 거예요.
- PDF 문서에서 Graph+LLM 기반 RAG 애플리케이션 구축
- unstructured.io를 Neo4j AuraDB와 통합하여 문서 Knowledge Graph 구축
- 개발자 가이드: Knowledge Graph 구축 방법
프로세스
LlamaParse와 Neo4j를 사용해서 문서 처리 파이프라인을 구축하는 과정은 다음과 같이 정의할 수 있어요.
1. 환경 설정: LlamaParse 및 Neo4j 데이터베이스 드라이버와 같은 필수 라이브러리 및 도구 설치를 포함해서 Python 환경을 설정하는 단계별 가이드가 제공될 거예요.
2. PDF 문서 처리: LlamaParse를 사용해서 PDF 문서를 읽고, 텍스트, 표, 이미지 같은 관련 정보를 추출하고, 이 정보를 데이터베이스에 넣기 적합한 구조화된 형식으로 변환하는 방법을 보여드릴게요.
3. 문서의 그래프 모델: PDF 문서에서 추출된 관계와 엔터티를 나타내는 효과적인 그래프 모델을 설계하는 방법에 대한 가이드예요. 쿼리 및 분석에 최적화된 구조를 만드는 방법을 알려드릴게요.
4. 추출된 데이터를 Neo4j에 저장: Python에서 Neo4j 데이터베이스에 연결하고, 추출된 데이터를 기반으로 Node와 Relationship을 생성하고, Cypher 쿼리를 실행해서 데이터베이스를 채우는 방법을 보여주는 자세한 코드 예제가 준비되어 있어요.
6. 데이터 쿼리 및 분석: 저장된 데이터를 검색 및 분석하고, Neo4j가 PDF 콘텐츠 내에 숨겨진 통찰력과 관계를 어떻게 찾아낼 수 있는지 보여주는 Cypher 쿼리 예제를 보여드릴게요.
전체 튜토리얼 노트북은 에서 확인할 수 있어요.
파싱된 문서의 그래프 모델
결과를 Neo4j에 Knowledge Graph로 저장하기 위해 어떤 PDF 파싱 도구를 사용하는지에 관계없이 그래프 스키마는 실제로 매우 간단하고 일관적이에요.
PDF 문서 파싱
PDF 파싱을 위해 새로운 LlamaParse PDF 리더를 사용하는 방법은 다음 두 가지 쉬운 단계로 구성되어 있어요.
- 원시 Markdown 텍스트를 Node로 사용해서 Index를 구축하고 결과를 생성하기 위한 간단한 쿼리 엔진을 적용해요.
- MarkdownElementNodeParser를 사용해서 LlamaParse 출력 마크다운 결과를 파싱하고 생성을 위한 재귀 검색어 쿼리 엔진을 구축해요. 추출된 콘텐츠를 Neo4j에 저장하는 거죠.
from llama_parse import LlamaParse
from llama_index.core.node_parser import MarkdownElementNodeParser
pdf_file_name = './insurance.pdf'
documents = LlamaParse(result_type="markdown").load_data(pdf_file_name)
# Parse the documents using MarkdownElementNodeParser
node_parser = MarkdownElementNodeParser(llm=llm, num_workers=8)
# Retrieve nodes (text) and objects (table)
nodes = node_parser.get_nodes_from_documents(documents)
base_nodes, objects = node_parser.get_nodes_and_objects(nodes)
문서 그래프 쿼리
문서가 Neo4j에 수집된 후의 모습은 다음과 같아요.
이제 다음을 사용하여 구축된 RAG 솔루션을 가리킬 수 있어요. GenAI 스택이 그래프로 이동하여 문서 Knowledge Graph에 대해 채팅을 시작해 보세요!
상단에 공유된 이전 블로그 게시물의 세부정보를 확인하세요. ^^.
알려진 제한사항 (2024년 4월 7일 기준):
a) `Node`를 포함하는 문서 (문제 #126 높은).
b) 각 `Node`의 속성으로 페이지 번호가 없어요 (기능 요청 #57).
결론
LlamaParse는 구조화된 데이터와 구조화되지 않은 데이터 모두의 복잡성을 놀라운 효율성으로 탐색하는 데 능숙하며 PDF 문서 구문 분석을 위한 뛰어난 기능을 갖춘 도구에요. 고급 알고리즘과 직관적인 API를 사용하면 PDF에서 텍스트, 표, 이미지, 메타데이터를 원활하게 추출하여 종종 어려운 작업을 간소화된 프로세스로 전환할 수 있죠.
추출된 데이터를 Neo4j에 그래프로 저장하면 이점이 더욱 증폭돼요. `Graph Database`에서 데이터 엔터티와 해당 관계를 표현함으로써 사용자는 기존 관계형 데이터베이스를 사용하여 감지하기 어렵거나 불가능했던 패턴과 연결을 발견할 수 있어요. Neo4j의 그래프 모델은 복잡한 관계를 시각화하는 자연스럽고 직관적인 방법을 제공하여 정교한 분석을 수행하고 실행 가능한 통찰력을 도출하는 능력을 향상시키죠.
일관된 문서 Knowledge Graph 스키마를 사용하면 다운스트림 작업(예: 다음을 사용하여 `Retrieval-Augmented Generation` 구축)을 위한 다른 도구와 훨씬 쉽게 통합할 수 있어요. GenAI 스택(LangChain 및 Streamlit).
LlamaParse의 추출 기능과 Neo4j의 그래프 기반 저장 및 분석의 결합은 데이터 중심 의사 결정을 위한 새로운 가능성을 열어줘요. 이를 통해 데이터 관계에 대한 보다 미묘한 이해, 효율적인 데이터 `쿼리`, 데이터세트의 증가하는 크기와 복잡성에 맞춰 확장할 수 있는 기능이 제공되죠. 이러한 시너지 효과는 추출 및 분석 프로세스를 가속화할 뿐만 아니라 데이터 관리에 대한 보다 정보에 입각한 전략적인 접근 방식에 기여해요.
전체 튜토리얼 노트북을 찾을 수 있습니다 .
초보자를 위한 GraphRAG
연결된 데이터를 기반으로 복잡한 질문에 답할 수 있는 GraphRAG 애플리케이션을 구축하세요. 세 가지 주요 검색 패턴을 알아보세요.
- LlamaIndex
- LlamaParse
- OpenAI
에이치시스템즈의 LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.
'Ontology & Knowledge Graph' 카테고리의 다른 글
| LLM 지식 그래프 빌더, 2025년 첫 번째 릴리스! (1) | 2026.07.18 |
|---|---|
| LLM Knowledge Graph Builder 백엔드 아키텍처 및 API 개요 (1) | 2026.07.17 |
| #GraphCast: 생명과학 분야 그래프 - 복잡한 데이터를 연결하는 치료제 (0) | 2026.07.17 |
| 지식 해방: Neo4j와 함께하는 Machine Learning 기법 (0) | 2026.07.16 |
| From Data to Intelligence: Why Every Enterprise Needs an AI Knowledge Layer (0) | 2026.07.16 |
