OpenViking: AI 에이전트의 '기억상실증'을 치료할 오픈소스 컨텍스트 데이터베이스 등장
OpenViking: AI 에이전트를 위한 ‘파일 시스템’ 혁명
오늘 소개할 프로젝트는 AI 에이전트 개발자라면 누구나 한 번쯤 겪었을 ‘기억 관리’의 고통을 끝내줄 구원투수입니다. 바로 OpenViking입니다.
ByteDance의 Volcengine Viking 팀이 2026년 1월 말 공개한 이 프로젝트는 단순한 벡터 데이터베이스(Vector DB)가 아닙니다. 그들은 이것을 “컨텍스트 데이터베이스(Context Database)”라고 정의합니다. 왜 이 새로운 개념이 필요한지, 그리고 OpenViking이 어떻게 에이전트의 뇌 구조를 바꾸려 하는지 상세히 뜯어보겠습니다.
1. 왜 OpenViking인가? (The “Why”)
기존의 RAG(검색 증강 생성) 시스템이나 에이전트 메모리는 대부분 ‘Flat(평면적)’했습니다. 모든 데이터를 쪼개서(Chunking) 벡터 DB에 넣고, 유사도 검색(Similarity Search)을 돌립니다. 하지만 이 방식은 치명적인 단점이 있습니다.
- 파편화(Fragmentation): 문맥이 잘린 파편만 검색되어 전체 맥락을 놓침.
- 비용(Cost): 불필요한 전체 텍스트를 로딩하여 토큰 비용 낭비.
- 블랙박스(Black Box): 왜 이 문서를 가져왔는지 디버깅하기 어려움.
OpenViking은 이 문제를 해결하기 위해 “파일 시스템 패러다임(Filesystem Paradigm)”을 도입했습니다. 우리가 컴퓨터에서 폴더를 정리하듯, AI의 기억(Memory), 도구(Skills), 자원(Resources)을 체계적으로 관리하자는 것입니다.
2. 핵심 기능 (Key Features)
README와 공식 문서를 분석한 결과, OpenViking의 핵심은 다음 4가지로 요약됩니다.
1) 파일 시스템 패러다임 (The Filesystem Paradigm)
모든 컨텍스트를 viking:// 프로토콜 기반의 경로로 관리합니다.
- Memory:
viking://user/memories/preferences(사용자 선호도) - Resources:
viking://resources/project_docs(PDF, 코드 등) - Skills:
viking://skills/image_gen(사용 가능한 도구)
이제 에이전트는 모호한 벡터 공간을 헤매는 게 아니라, 명확한 경로를 통해 정보에 접근합니다.
2) 계층적 컨텍스트 로딩 (Tiered Context Loading)
이 기능이 정말 강력합니다. OpenViking은 데이터를 세 가지 레벨로 나누어 로딩합니다.
- L0 (Abstract): 한 문장 요약. (탐색용)
- L1 (Overview): 핵심 개요. (판단용)
- L2 (Details): 전체 원문. (실제 답변 생성용)
에이전트는 처음부터 L2를 다 읽지 않습니다. L0를 훑어보고 필요할 때만 L1, L2로 깊이 들어갑니다. 이는 토큰 비용을 획기적으로 절감시킵니다.
3) 디렉터리 재귀 검색 (Directory Recursive Retrieval)
단순히 유사도가 높은 ‘문장’을 찾는 게 아닙니다. OpenViking은 먼저 “가장 관련성 높은 폴더(Directory)”를 찾습니다(Initial Positioning). 그 후, 그 폴더 안에서 재귀적으로 탐색(Refined Exploration)해 들어갑니다.
“도서관에서 책의 특정 문장을 찾기 전에, 먼저 올바른 서가(Section)를 찾는 것과 같습니다.”
4) 시각화된 검색 궤적 (Visualized Retrieval Trajectory)
에이전트가 어떤 경로로 생각을 전개했는지 cd -> ls -> cat과 같은 궤적(Trajectory)으로 보여줍니다. 이제 AI가 엉뚱한 답을 할 때 “왜?”를 명확히 추적할 수 있습니다.
3. 아키텍처 심층 분석 (Deep Dive)
OpenViking의 내부는 크게 네 가지 모듈로 구성됩니다.
- Parsing Module (파싱 모듈): 문서를 L0, L1, L2로 자동 분할하고 요약합니다. 이 과정에서 LLM을 사용하여 고품질의 메타데이터를 생성합니다.
- Storage Module (저장 모듈): 벡터 저장소와 키-값(KV) 저장소를 결합하여 파일 시스템 구조를 구현합니다.
- Retrieval Module (검색 모듈): ‘Zoom-out(전체 조망)’에서 ‘Zoom-in(세부 탐색)’으로 이어지는 검색 전략을 실행합니다.
- Session Module (세션 모듈): 대화가 끝나면 자동으로 중요한 정보를 추출하여 장기 기억(Memory) 폴더에 저장합니다(Self-Evolving).
4. 설치 및 설정 (Installation & Setup)
Python 3.9 이상 환경에서 바로 시작할 수 있습니다.
설치
1
pip install openviking
환경 설정
OpenAI 호환 모델이나 Volcengine 모델을 사용할 수 있습니다. .env 파일을 생성하여 키를 설정합니다.
# .env 예시
OPENAI_API_KEY=sk-...
# 또는
VOLC_ACCESSKEY=...
VOLC_SECRETKEY=...
5. 사용 가이드 (Usage Guide)
실제 코드에서 OpenViking이 어떻게 작동하는지 살펴보겠습니다. 코드가 매우 직관적이라는 점에 주목하세요.
1. 초기화 및 리소스 추가
1
2
3
4
5
6
7
8
9
10
11
from openviking import OpenViking
# 클라이언트 초기화
viking = OpenViking()
# 로컬 문서를 리소스(Resource) 폴더에 추가
# 자동으로 L0/L1/L2 파싱이 진행됩니다.
viking.add_resource(
path="./company_policy.pdf",
target_dir="viking://resources/hr_docs"
)
2. 검색 (Retrieval)
1
2
3
4
5
6
7
8
9
10
11
12
13
# 사용자의 질문에 대해 검색 수행
query = "재택근무 규정이 어떻게 되나요?"
# 디렉터리 기반 재귀 검색 실행
results = viking.search(
query=query,
root_dir="viking://resources",
strategy="recursive" # 핵심: 재귀적 탐색
)
for res in results:
print(f"[{res.level}] {res.content}")
# 결과: L1 레벨의 요약본이 먼저 보일 수 있음
3. 세션 관리 (Memory)
1
2
3
4
5
6
7
8
9
# 대화 세션 시작
session = viking.create_session(user_id="user_123")
# 대화 기록 및 자동 기억 추출
session.chat("나는 파이썬 코드를 좋아하고, 자바는 싫어해.")
# 나중에 확인해보면...
# viking://user/user_123/memories/preferences 파일에
# "User prefers Python over Java"가 저장되어 있음.
6. 활용 사례 (Use Cases)
- 개인화된 AI 비서: 사용자의 취향을
viking://user/memories에 파일처럼 저장해두고, 시간이 지나도 잊지 않고 활용할 수 있습니다. - 대규모 엔터프라이즈 RAG: 수만 장의 사내 문서를 부서별 폴더(
viking://sales,viking://tech)로 관리하여, 검색 정확도를 높이고 할루시네이션을 줄입니다. - 장기 실행 에이전트 (Long-running Agents): 며칠, 몇 달 동안 실행되는 에이전트가 스스로 경험을 축적하고 진화(Self-evolving)하는 백엔드로 적합합니다.
7. 비교: OpenViking vs 기존 Vector DB
| 특징 | 기존 Vector DB (Pinecone, Chroma 등) | OpenViking |
|---|---|---|
| 데이터 구조 | Flat (평면적 벡터 나열) | Hierarchical (계층적 파일 시스템) |
| 검색 방식 | 유사도 기반 Top-K | 디렉터리 포지셔닝 -> 재귀 탐색 |
| 토큰 효율 | 전체 청크 로딩 (비효율) | L0/L1/L2 단계별 로딩 (고효율) |
| 디버깅 | 블랙박스 (유사도 점수만 확인 가능) | 검색 경로 추적 가능 (투명함) |
8. 결론 (Verdict)
OpenViking은 AI 메모리 관리의 패러다임을 바꿀 잠재력이 충분합니다. 단순히 “검색을 잘한다”를 넘어, “정보를 어떻게 구조화할 것인가”에 대한 근본적인 해답을 제시하기 때문입니다.
특히 계층적 로딩(Tiered Loading)과 파일 시스템 경로(viking://) 접근 방식은 대규모 LLM 애플리케이션을 운영하는 팀에게 비용 절감과 유지보수성 측면에서 엄청난 이점을 줄 것입니다.
지금 바로 pip install openviking을 입력하고, 여러분의 에이전트에게 체계적인 ‘두뇌’를 선물해 보세요.
더 자세한 내용은 GitHub 저장소를 참고하시기 바랍니다.
References
- https://github.com/volcengine/OpenViking