
Cognee 완전 가이드: 비정형 데이터를 자동으로 지식 그래프로 — AI에게 '기억'을 주는 법
이력서 5장을 AI에게 던지면 핵심 인재를 찾을 수 있을까? Cognee는 비정형 텍스트를 자동으로 지식 그래프로 변환하고, LLM이 구조화된 지식 위에서 추론할 수 있게 한다. 문서 → 그래프 → 검색의 전자동 파이프라인을 역사적 맥락부터 실전 구현, 2026년 AI 메모리 생태계까지 종합 특집으로 풀어본다.

이력서 5장을 AI에게 던지면 핵심 인재를 찾을 수 있을까? Cognee는 비정형 텍스트를 자동으로 지식 그래프로 변환하고, LLM이 구조화된 지식 위에서 추론할 수 있게 한다. 문서 → 그래프 → 검색의 전자동 파이프라인을 역사적 맥락부터 실전 구현, 2026년 AI 메모리 생태계까지 종합 특집으로 풀어본다.
당신은 채용 담당자다. 시니어 데이터 사이언티스트 포지션에 이력서 5장이 들어왔다. AI에게 이렇게 요청한다:
"이 이력서들 중에서 머신러닝 경험이 풍부하고, 대규모 데이터셋을 다뤄본 사람을 찾아줘."
가장 단순한 방법? 5장의 이력서를 통째로 LLM의 프롬프트에 넣는 것이다.
RAG(Retrieval-Augmented Generation)를 쓰면? 이력서를 벡터화하고 관련 청크를 검색할 수 있다. 하지만 "Emily Carter는 Stanford에서 박사를 했고, TensorFlow와 PyTorch에 능숙하며, 머신러닝 모델을 프로덕션에 배포한 경험이 있다"는 정보가 하나의 청크에 모두 담겨 있지 않다면? 벡터 검색은 흩어진 정보를 연결하지 못한다.
여기서 근본적인 질문이 나온다:
"비정형 텍스트를 LLM이 이해할 수 있는 구조화된 지식으로 자동 변환할 수는 없을까?"
Cognee는 바로 이 질문에 답하는 오픈소스 프레임워크다.

이 글에서는 Cognee의 공식 데모 노트북을 기반으로, 비정형 데이터를 지식 그래프로 자동 변환하는 기술의 역사적 맥락, 핵심 아이디어, 실전 구현, 그리고 2026년 AI 메모리 생태계에서의 위치를 종합적으로 다룬다.
📎 이 글은 Cognee 공식 리포지토리의 cognee_demo.ipynb를 기반으로 작성되었다.

기업 데이터의 약 80%는 비정형(Unstructured)이다. 이력서, 회의록, 이메일, 계약서, 고객 리뷰, 기술 문서 — 모두 자연어 텍스트로 되어 있고, 데이터베이스의 행과 열로 깔끔하게 정리되어 있지 않다.
이 비정형 데이터를 AI가 활용하려면 크게 세 가지 접근법이 있다:
| 접근법 | 방식 | 장점 | 한계 |
|---|---|---|---|
| 통째로 프롬프트에 넣기 | 문서 전문을 LLM에 전달 | 간단함 | 토큰 제한, 비용, 정보 손실 |
| 벡터 검색 (Naive RAG) | 청크로 쪼개고 유사도 검색 | 확장 가능 | 관계 추적 불가, 멀티홉 실패 |
| 지식 그래프 변환 | 엔티티/관계를 추출하여 구조화 | 관계 추론, 전체 조망 | 구축이 어려움 |
세 번째 접근법이 가장 강력하지만, 지금까지 가장 큰 장벽이 있었다: 지식 그래프를 만드는 것 자체가 너무 어렵다.
전통적인 지식 그래프 구축은 전문가의 수작업에 의존했다. 온톨로지를 정의하고, 엔티티를 식별하고, 관계를 라벨링하는 작업 — 이 모든 것을 도메인 전문가가 일일이 해야 했다.
이전 글에서 살펴본 Milvus Graph RAG도 트리플렛을 사전 정의해야 했다. 4개의 문서에서 22개의 트리플렛을 수동으로 작성하는 것은 데모에서는 괜찮지만, 수천 개의 문서에 적용하기에는 비현실적이다.
Cognee의 핵심 가치: 지식 그래프 구축의 진입 장벽을 없앤다.
지식의 구조화는 AI의 가장 오래된 꿈 중 하나다.
| 시대 | 접근법 | 대표 기술 |
|---|---|---|
| 1970~80년대 | 전문가 시스템 | MYCIN, Cyc — 수동 규칙 입력 |
| 1990~2000년대 | 통계적 정보 추출 | 조건부 랜덤 필드(CRF), 패턴 매칭 |
| 2012~2018 | 딥러닝 NER/RE | BiLSTM-CRF, BERT 기반 관계 추출 |
| 2020~2023 | LLM 기반 추출 | GPT-3/4로 엔티티와 관계를 프롬프트로 추출 |
| 2024~현재 | 자동화 프레임워크 | Cognee, Microsoft GraphRAG, LightRAG 등 |
핵심적인 변화는 2020년대에 일어났다. 2021년 EMNLP에서 발표된 REBEL(Huguet Cabot & Navigli)은 시퀀스-투-시퀀스 모델로 200가지 이상의 관계 유형을 추출하며, 관계 추출의 자동화 가능성을 보여주었다. 그리고 GPT-4급 LLM이 등장하면서, 프롬프트 하나로 비정형 텍스트에서 엔티티와 관계를 사람 수준으로 추출할 수 있게 되었다. 수작업으로 수일이 걸리던 일이 API 호출 몇 번으로 끝나게 된 것이다.
하지만 LLM으로 트리플렛을 추출하는 것은 파이프라인의 한 단계에 불과하다. 추출된 트리플렛을 정규화하고, 중복을 제거하고, 그래프 DB에 저장하고, 벡터 인덱스를 만들고, 검색 인터페이스를 구축하는 — 이 모든 과정을 엔드투엔드로 자동화하는 것이 진짜 도전이었다.
2023년 이후, AI 에이전트에게 영속적인 기억(Persistent Memory)을 주려는 움직임이 폭발적으로 성장했다:
이 프레임워크들의 공통 목표: LLM에게 "맥락(context)"이 아니라 "지식(knowledge)"을 줄 것.
Cognee는 비정형 데이터를 자동으로 지식 그래프로 변환하고, LLM이 이 그래프 위에서 자연어로 검색·추론할 수 있게 하는 오픈소스 프레임워크다. Vasilije Markovic이 이끄는 Topoteretes 팀이 개발하며, 2023년 말 GitHub에 공개된 이후 2024년 AI 엔지니어링 커뮤니티에서 빠르게 주목받았다. Apache 2.0 라이선스로 공개되어 있으며, GitHub 스타 10,000개 이상을 달성했다.
이름의 유래는 Cognition(인지)에서 왔다. 데이터를 단순히 저장하는 것이 아니라, 인지적으로 이해하여 구조화한다는 철학이 담겨 있다.
Cognee의 아키텍처는 세 가지 핵심 레이어로 구성된다:
Cognee의 큰 강점 중 하나는 백엔드를 자유롭게 교체할 수 있다는 것이다:
| 컴포넌트 | 지원 옵션 | 기본값 |
|---|---|---|
| 그래프 DB | Kuzu, Neo4j, NetworkX | Kuzu |
| 벡터 DB | LanceDB, pgvector, Qdrant, Weaviate | LanceDB |
| LLM 프로바이더 | OpenAI, Anthropic, Ollama 등 | OpenAI |
Kuzu와 LanceDB가 기본값인 이유는 둘 다 임베디드 DB이기 때문이다. 별도의 서버 설치 없이 파이썬 패키지만으로 바로 실행할 수 있어, 프로토타이핑에 최적이다. 프로덕션에서는 Neo4j + Qdrant 조합으로 전환하면 된다.
Cognee의 사용 경험은 놀랍도록 단순하다. 세 개의 함수 호출만으로 비정형 데이터를 지식 그래프로 변환하고 검색할 수 있다.

import cognee
# 텍스트, 파일, URL 등 무엇이든 던지면 된다
await cognee.add([cv_1, cv_2, cv_3, cv_4, cv_5, job_description], "example")
cognee.add()는 데이터를 Cognee 시스템에 등록한다. 텍스트 문자열, 파일 경로, URL 등 다양한 형태를 받을 수 있다. 두 번째 인자 "example"은 데이터셋 이름이다.
이 단계에서는 아직 아무 처리도 일어나지 않는다. 단순히 데이터를 등록만 하는 것이다.
여기가 마법이 일어나는 곳이다. Cognee의 데모 노트북에서는 파이프라인을 직접 구성하는 방식을 보여준다:
from cognee.tasks.documents import classify_documents, extract_chunks_from_documents
from cognee.tasks.graph import extract_graph_from_data
from cognee.tasks.storage import add_data_points
from cognee.tasks.summarization import summarize_text
async def run_cognify_pipeline(dataset, user):
# 1. 데이터셋에서 문서 목록 가져오기
data_documents = await get_dataset_data(dataset)
# 2. 파이프라인 태스크 정의
tasks = [
Task(classify_documents), # 문서 분류
Task(extract_chunks_from_documents), # 청크 추출
Task(extract_graph_from_data, # 지식 그래프 추출 ⭐
graph_model=KnowledgeGraph),
Task(add_data_points), # 벡터/그래프 DB에 저장
Task(summarize_text), # 요약 생성
]
# 3. 파이프라인 실행
pipeline = run_tasks(tasks, data_documents, user)
async for result in pipeline:
print(result) # 진행 상황 출력
핵심은 extract_graph_from_data 태스크다. 이 함수가 LLM을 호출하여 텍스트에서 엔티티(Entity)와 관계(Relationship)를 자동으로 추출하고, KnowledgeGraph 모델에 따라 구조화한다.
데이터가 "cognify"되면, 세 가지 방식으로 검색할 수 있다.

from cognee.api.v1.search import SearchType
results = await cognee.search(
query_type=SearchType.SUMMARIES,
query_text="Sarah Nguyen"
)
엔티티와 관련된 요약 정보를 반환한다. "Sarah Nguyen은 머신러닝 전문 데이터 사이언티스트로, 6년 경력이며, QuantumTech에서 근무하며 랜덤 포레스트 모델로 비용을 15% 절감했다" — 이런 식의 종합적인 요약이다.
results = await cognee.search(
query_type=SearchType.CHUNKS,
query_text="Sarah Nguyen"
)
해당 엔티티가 등장하는 원본 텍스트 청크를 반환한다. 원문을 확인하고 싶을 때 유용하다.
results = await cognee.search(
query_type=SearchType.GRAPH_COMPLETION,
query_text="Sarah Nguyen"
)
지식 그래프의 관계를 따라 추론된 문장을 반환한다. "Sarah Nguyen은 Python에 능숙하다", "Sarah Nguyen은 University of Washington에서 통계학 석사를 취득했다" — 그래프의 엣지를 자연어로 풀어주는 것이다.
| 검색 모드 | 반환 내용 | 최적 사용 시나리오 |
|---|---|---|
| SUMMARIES | 엔티티 종합 요약 | "이 사람에 대해 전체적으로 알려줘" |
| CHUNKS | 원본 텍스트 조각 | "출처를 확인하고 싶어", "원문이 필요해" |
| GRAPH_COMPLETION | 그래프 기반 추론 문장 | "이 사람과 연결된 정보를 찾아줘" |

노트북의 데모를 자세히 살펴보자. 시니어 데이터 사이언티스트 채용 시나리오다.
| 이름 | 전문 분야 | 최종 학력 | 적합도 |
|---|---|---|---|
| Dr. Emily Carter | ML, 예측 분석 8년 | Stanford 박사 | ✅ 적합 |
| Michael Rodriguez | ML, 통계 모델링 | Carnegie Mellon 석사 | ✅ 적합 |
| Sarah Nguyen | ML 6년, 데이터 기반 비즈니스 | Washington 석사 | ✅ 적합 |
| David Thompson | 그래픽 디자인 8년 | RISD 학사 | ❌ 부적합 |
| Jessica Miller | 영업 관리 | USC 학사 | ❌ 부적합 |
3명은 데이터 사이언스/ML 전문가이고, 2명은 완전히 다른 분야(그래픽 디자인, 영업)다.
Cognee의 cognify 파이프라인을 실행하면, 이 5개의 이력서에서 자동으로 지식 그래프가 구축된다. 예를 들어 Emily Carter의 이력서에서는 이런 트리플렛들이 추출된다:
반면 David Thompson(그래픽 디자이너)의 이력서에서는:
지식 그래프가 구축되면, "머신러닝 경험이 풍부한 사람"이라는 쿼리에 대해 그래프 탐색을 통해 TensorFlow, PyTorch, Scikit-learn과 연결된 엔티티(Emily, Michael, Sarah)를 정확히 찾아낼 수 있다. Adobe Creative Suite와 연결된 David나, Sales 기술을 가진 Jessica는 자연스럽게 제외된다.
이 시나리오에서 벡터 검색의 문제를 다시 확인할 수 있다:
extract_graph_from_data 태스크의 내부를 들여다보면, LLM에게 구조화된 프롬프트를 보내서 엔티티와 관계를 추출한다. Cognee는 이를 위해 KnowledgeGraph라는 Pydantic 모델을 정의한다:
from cognee.shared.data_models import KnowledgeGraph
# KnowledgeGraph 모델은 LLM에게 "이런 구조로 추출해라"고 지시하는 스키마
# - 엔티티: 이름, 유형, 설명
# - 관계: 소스 엔티티, 대상 엔티티, 관계 유형, 설명
LLM은 각 텍스트 청크를 읽고, 이 스키마에 맞춰 구조화된 JSON을 반환한다. 이것이 스키마 기반 추출(Schema-guided Extraction)의 핵심이다 — LLM에게 자유롭게 추출하라고 하면 일관성이 없지만, 스키마를 제공하면 일관된 구조로 추출한다.
Cognee는 추출된 지식 그래프를 시각화하는 기능도 내장하고 있다:
from cognee.api.v1.visualize import visualize_graph
graph_file_path = ".artifacts/graph_visualization.html"
await visualize_graph(graph_file_path)
이 코드는 인터랙티브한 HTML 파일을 생성하여, 노드와 엣지를 탐색할 수 있는 그래프 시각화를 제공한다. 실제 업무에서는 이 시각화를 통해 추출 품질을 검증하고, 누락된 관계를 확인할 수 있다.
Cognee는 지식 그래프를 구축하면서 동시에 벡터 인덱스도 생성한다. 이를 통해 벡터 유사도 검색과 그래프 탐색을 결합한 하이브리드 검색이 가능하다:
from cognee.infrastructure.databases.vector import get_vector_engine
vector_engine = get_vector_engine()
# 벡터 유사도로 관련 엔티티 검색
results = await search(
vector_engine,
collection_name="Entity_name", # 엔티티 이름 컬렉션
query_text="sarah.nguyen@example.com"
)
검색 결과는 거리(distance) 점수로 정렬된다. 점수가 낮을수록 유사도가 높다. 이 벡터 검색 결과를 시작점으로, 그래프를 따라 관련 정보를 확장하는 것이 Cognee의 검색 전략이다.

2026년 현재, AI의 지식 관리를 위한 프레임워크는 크게 세 가지 레이어로 나뉜다:
| Cognee | MS GraphRAG | LangChain | LlamaIndex | |||||
|---|---|---|---|---|---|---|---|---|
| 핵심 목적 | 자동 KG 구축 + 검색 | 커뮤니티 기반 글로벌 검색 | RAG 파이프라인 오케스트레이션 | 데이터 인덱싱 + 쿼리 | ||||
| KG 자동 구축 | ✅ 내장 | ✅ 내장 | ❌ (별도 구현) | ⚠️ KnowledgeGraphIndex | ||||
| 그래프 DB 지원 | Kuzu, Neo4j, NetworkX | 자체 구현 | Neo4j 연동 | Neo4j 연동 | ||||
| 벡터 DB 지원 | LanceDB, pgvector, Qdrant, Weaviate | 자체 구현 | 30+ DB 지원 | 20+ DB 지원 | ||||
| 진입 장벽 | 낮음 (3줄 API) | 중간 | 중간 | 중간 | ||||
| 프로덕션 준비도 | 성장 중 | 성숙 | 성숙 | 성숙 | ||||
| 최적 사용처 | 비정형→KG 자동 변환 | 대규모 문서 글로벌 분석 | 복잡한 RAG 커스터마이징 | 다양한 데이터 소스 통합 |
Cognee가 다른 프레임워크와 구별되는 핵심 특징은 "Cognify"라는 개념 자체에 있다:
cognee.add() → cognee.cognify() → cognee.search() 세 줄이면 끝난다.Cognee가 지원하는 세 가지 그래프 DB는 각각 다른 특성을 가진다.
Kuzu는 워털루 대학교 Semih Salihoglu 교수 연구실에서 탄생한 C++로 작성된 임베디드 그래프 데이터베이스다. SQLite가 관계형 DB에서 하는 역할을 그래프 DB에서 한다 — 서버 없이 파일 하나로 작동한다. Apache 2.0 라이선스.
그래프 데이터베이스의 사실상 표준(de facto standard). 2007년부터 시작하여 프로퍼티 그래프 모델을 대중화했다.
파이썬의 인메모리 그래프 라이브러리. DB라기보다는 알고리즘 라이브러리에 가깝다.
노트북의 데모 시나리오를 확장해보자. 대기업이 매달 수천 개의 이력서를 받는다고 하자.
cognee.add()로 투입cognee.cognify()로 스킬, 경력, 학력, 프로젝트 경험을 자동 추출하여 인재 지식 그래프 구축회의록, 슬랙 메시지, 위키, 기술 문서 — 모든 비정형 데이터를 Cognee로 구조화하면:
계약서, 판례, 법률 조항 간의 관계를 자동으로 매핑:
학술 논문의 인용 관계를 넘어서, 개념 간 관계를 자동으로 구축:
Cognee를 시작하는 것은 간단하다:
pip install cognee
환경 변수 설정:
import os
# LLM API 키
os.environ["LLM_API_KEY"] = "your-openai-api-key"
# 그래프 DB (kuzu가 기본, 설치 불필요)
os.environ["GRAPH_DATABASE_PROVIDER"] = "kuzu"
# 벡터 DB (lancedb가 기본, 설치 불필요)
os.environ["VECTOR_DB_PROVIDER"] = "lancedb"
시스템 초기화와 실행:
import cognee
# 기존 데이터 초기화 (선택)
await cognee.prune.prune_data()
await cognee.prune.prune_system(metadata=True)
# 데이터 추가
await cognee.add(["문서 1 텍스트", "문서 2 텍스트"], "my_dataset")
# 지식 그래프 구축
await cognee.cognify()
# 검색
results = await cognee.search(
query_type=SearchType.GRAPH_COMPLETION,
query_text="내가 찾는 정보"
)
Kuzu + LanceDB 조합이면 외부 서비스 설치 없이 파이썬 환경에서 바로 실행된다. OpenAI API 키만 있으면 된다.
2026년 AI 생태계에서 가장 활발한 연구 주제 중 하나가 "AI의 기억"이다. 현재 LLM의 컨텍스트 윈도우는 기껏해야 수십만 토큰이다. 이것은 단기 기억(working memory)에 불과하다.
| 인간의 기억 | AI에서의 대응 | 현재 기술 |
|---|---|---|
| 감각 기억 | 입력 토큰 | 프롬프트 |
| 단기 기억 | 컨텍스트 윈도우 | 100K~1M 토큰 |
| 장기 기억 | ??? | Cognee, MemGPT, Mem0 |
| 절차적 기억 | 파인튜닝/LoRA | 모델 가중치 |
Cognee가 목표하는 것은 장기 기억의 구조화다. 단순히 과거 대화를 저장하는 것(Mem0)이 아니라, 과거의 모든 상호작용에서 지식을 추출하여 그래프로 구조화하고, 필요할 때 정확히 꺼내 쓸 수 있게 하는 것이다.
2026년은 AI 에이전트의 시대다. 에이전트가 자율적으로 작업을 수행하려면, 작업 맥락을 기억하고 과거 경험에서 학습해야 한다. Cognee 같은 지식 그래프 기반 메모리는 에이전트에게:
을 구조화된 형태로 제공할 수 있다.
더 나아가, 각 사용자의 개인 지식 그래프를 구축할 수도 있다. 읽은 글, 작성한 메모, 나눈 대화에서 지식을 추출하여 개인화된 그래프를 만들면 — AI 비서가 "당신"을 진정으로 이해하는 세계가 가능해진다.
비정형 데이터를 그대로 LLM에 던지는 시대는 지나가고 있다. 데이터를 "인지(Cognify)"하여 지식으로 변환하는 것 — 이것이 RAG의 다음 단계이고, AI가 진정으로 "이해"하는 시스템을 만드는 첫걸음이다.
"이력서 5장 중에서 핵심 인재를 찾아줘"라는 질문. 단순한 텍스트 매칭이 아니라, 스킬-경험-학력-프로젝트의 관계를 이해하고 추론하는 AI — Cognee는 그 가능성을 보여준다.