OpenViking: AI Agent를 위한 오픈소스 컨텍스트 데이터베이스 (Context Database)
요약
OpenViking은 AI 에이전트의 파편화된 컨텍스트 문제를 해결하기 위해 설계된 오픈소스 컨텍스트 데이터베이스입니다. 기존 RAG의 한계를 극복하기 위해 파일 시스템 패러다임을 채택하여 메모리, 리소스, 기술을 구조적으로 통합 관리합니다.
핵심 포인트
- 파일 시스템 패러다임을 통한 메모리, 리소스, 기술의 통합 관리 및 파편화 해결
- L0/L1/L2 3계층 구조의 계층형 컨텍스트 로딩으로 토큰 소비 비용 절감
- 디렉토리 재귀적 검색과 시맨틱 검색을 결합하여 정밀한 컨텍스트 획득 지원
- 검색 경로 시각화를 통해 컨텍스트 검색 과정을 관찰하고 디버깅 가능
- 자동 세션 관리를 통해 장기 메모리를 추출하고 에이전트의 성능을 지속적으로 개선
AI 시대에는 데이터가 풍부하지만, 고품질의 컨텍스트 (Context)를 확보하기는 어렵습니다. AI 에이전트 (AI Agents)를 구축할 때 개발자들은 종종 다음과 같은 문제에 직면합니다:
파편화된 컨텍스트 (Fragmented Context): 메모리는 코드에 있고, 리소스는 벡터 데이터베이스 (Vector Databases)에 있으며, 기술은 여기저기 흩어져 있어 이를 일관되게 관리하기 어렵습니다.
급증하는 컨텍스트 수요 (Surging Context Demand): 에이전트의 장기 실행 작업은 매 실행마다 컨텍스트를 생성합니다. 단순한 절단 (Truncation) 또는 압축 (Compression)은 정보 손실로 이어집니다.
낮은 검색 효율성 (Poor Retrieval Effectiveness): 전통적인 RAG (Retrieval-Augmented Generation)는 평면적인 저장 방식을 사용하여 전역적인 관점이 부족하며, 정보의 전체 컨텍스트를 이해하기 어렵게 만듭니다.
관찰 불가능한 컨텍스트 (Unobservable Context): 전통적인 RAG의 암시적 검색 체인은 블랙박스와 같아서, 오류가 발생했을 때 디버깅하기가 어렵습니다.
제한된 메모리 반복 (Limited Memory Iteration): 현재의 메모리는 단순히 사용자 상호작용의 기록일 뿐이며, 에이전트 관련 작업 메모리 (Task Memory)가 부족합니다.
OpenViking은 AI 에이전트 (AI Agents)를 위해 특별히 설계된 오픈소스 **컨텍스트 데이터베이스 (Context Database)**입니다.
우리는 에이전트를 위한 미니멀리즘 컨텍스트 상호작용 패러다임을 정의하여, 개발자들이 컨텍스트 관리의 번거로움에서 완전히 벗어날 수 있도록 하는 것을 목표로 합니다. OpenViking은 전통적인 RAG의 파편화된 벡터 저장 모델을 버리고, 에이전트에게 필요한 메모리, 리소스, 기술의 구조적 조직화를 통합하기 위해 혁신적으로 **"파일 시스템 패러다임 (file system paradigm)"**을 채택했습니다.
OpenViking을 사용하면 개발자는 마치 로컬 파일을 관리하듯이 에이전트의 두뇌를 구축할 수 있습니다:
파일 시스템 관리 패러다임 (Filesystem Management Paradigm)
→ 파편화 문제 해결 (Solves Fragmentation): 파일 시스템 패러다임을 기반으로 메모리, 리소스, 기술을 통합적으로 관리하는 컨텍스트 관리 체계를 제공합니다.
계층형 컨텍스트 로딩 (Tiered Context Loading)
→ 토큰 소비 감소 (Reduces Token Consumption): L0/L1/L2의 3계층 구조를 통해 필요할 때만 로드함으로써 비용을 크게 절감합니다.
디렉토리 재귀적 검색 (Directory Recursive Retrieval)
→ 검색 효과 개선 (Improves Retrieval Effect): 네이티브 파일 시스템 검색 방식을 지원하며, 디렉토리 위치 지정과 시맨틱 검색 (Semantic Search)을 결합하여 재귀적이고 정밀한 컨텍스트 획득을 실현합니다.
시각화된 검색 경로 (Visualized Retrieval Trajectory)
→ 관측 가능한 컨텍스트 (Observable Context): 디렉토리 검색 경로의 시각화를 지원하여, 사용자가 문제의 근본 원인을 명확히 관찰하고 검색 로직 최적화를 유도할 수 있습니다.
자동 세션 관리 (Automatic Session Management)
→ 컨텍스트 자기 반복 (Context Self-Iteration): 대화 중 콘텐츠, 리소스 참조, 도구 호출 (Tool Calls) 등을 자동으로 압축하고 장기 메모리 (Long-term Memory)를 추출하여, 사용할수록 에이전트 (Agent)가 더 똑똑해지도록 만듭니다.
OpenViking을 시작하기 전에, 환경이 다음 요구 사항을 충족하는지 확인하십시오:
Python 버전: 3.10 이상
Rust 툴체인 (Rust Toolchain): Cargo (RAGFS 및 CLI 구성 요소를 소스에서 빌드하는 데 필요)
C++ 컴파일러: GCC 9+ 또는 Clang 11+ (핵심 확장 기능을 빌드하는 데 필요)
운영 체제 (Operating System): Linux, macOS, Windows
네트워크 연결: 안정적인 네트워크 연결 필요 (종속성 다운로드 및 모델 서비스 접속용)
pip install openviking --upgrade --force-reinstall
npm i -g @openviking/cli
또는 소스에서 빌드:
cargo install --git https://github.com/volcengine/OpenViking ov_cli
OpenViking은 다음과 같은 모델 역량을 필요로 합니다:
VLM 모델: 이미지 및 콘텐츠 이해용
임베딩 모델 (Embedding Model): 벡터화 및 시맨틱 검색 (Semantic Retrieval)용
OpenViking은 여러 VLM 제공업체를 지원합니다:
| 제공업체 (Provider) | 설명 | 설정 (Setup) |
|---|---|---|
volcengine | Volcengine Doubao 모델 | Volcengine Console |
openai | OpenAI 공식 API | OpenAI Platform |
openai-codex | Codex VLM | openviking-server init 사용 |
kimi | Kimi Code 멤버십 | openviking-server init 사용 |
glm | GLM 코딩 플랜 (Coding Plan) | openviking-server init 사용 |
Volcengine (Doubao)
Volcengine은 모델 이름과 엔드포인트 ID (Endpoint ID)를 모두 지원합니다. 단순함을 위해 모델 이름을 사용하는 것을 권장합니다:
{
"vlm": {
"provider": "volcengine",
...
또한 엔드포인트 ID (Volcengine ARK Console에서 확인 가능)를 사용할 수도 있습니다:
{
"vlm": {
"provider": "volcengine",
...
OpenAI
OpenAI의 공식 API를 사용하세요:
{
"vlm": {
"provider": "openai",
...
또한 OpenAI와 호환되는 커스텀 엔드포인트 (Custom OpenAI-compatible endpoint)를 사용할 수도 있습니다:
{
"vlm": {
"provider": "openai",
...
OpenAI Codex (OAuth)
표준 OpenAI API 키 대신, 사용자의 ChatGPT/Codex OAuth 세션을 통해 OpenViking이 Codex VLM을 호출하도록 하려면 이 제공업체를 사용하세요:
openviking-server init
# 프롬프트가 나타나면 OpenAI Codex를 선택하세요
openviking-server doctor
{
"vlm": {
"provider": "openai-codex",
...
💡
팁:
Codex OAuth를 사용할 수 있는 경우, openai-codex는 vlm.api_key를 요구하지 않습니다. OpenViking은 자체적인 Codex 인증 상태를 ~/.openviking/codex_auth.json에 저장합니다.
openviking-server doctor는 현재 Codex 인증을 사용할 수 있는지 검증합니다.
Kimi Coding (구독)
OpenViking이 전용 Kimi Coding 구독 엔드포인트를 직접 호출하도록 하려면 이 제공업체를 사용하세요:
openviking-server init
# 프롬프트가 나타나면 Kimi Coding을 선택하세요
openviking-server doctor
{
"vlm": {
"provider": "kimi",
...
💡
팁:
kimi는 기본 Kimi Coding 사용자 에이전트 (User Agent)인 kimi-code를 포함하여 권장되는 Kimi Coding 기본 설정을 자동으로 적용합니다.
kimi-coding은 제공업체 이름으로 허용되는 별칭 (Alias)입니다.
kimi-code는 Kimi의 업스트림 코딩 모델 (Upstream coding model)로 자동 정규화됩니다.
GLM Coding Plan (구독)
OpenViking이 Z.AI의 OpenAI 호환 Coding Plan 엔드포인트 (Endpoint)를 직접 호출하도록 설정하려면 이 프로바이더 (Provider)를 사용하세요:
openviking-server init
# 프롬프트가 나타나면 GLM Coding Plan을 선택하세요
openviking-server doctor
{
"vlm": {
"provider": "glm",
...
💡
팁:
glm,zhipu,zai,z-ai, 그리고z.ai는 모두 동일한 퍼스트 클래스 (First-class) GLM 프로바이더로 해석됩니다.- 기본 엔드포인트는 일반 Z.AI 엔드포인트가 아닌 Coding Plan 엔드포인트입니다.
- 멀티모달 파싱 (Multimodal parsing)을 위해
glm-4.6v또는glm-5v-turbo와 같은 비전 기능이 있는 모델 (Vision-capable model)을 사용하세요.
Ollama를 통해 로컬 모델 (Local models)로 OpenViking을 실행하려면, 대화형 설정 마법사 (Interactive setup wizard)가 모든 과정을 자동으로 처리합니다:
openviking-server init
마법사는 다음 작업을 수행합니다:
- 필요한 경우 Ollama를 감지하고 설치합니다.
- 사용자의 하드웨어에 적합한 임베딩 (Embedding) 및 VLM 모델을 추천하고 다운로드(Pull)합니다.
- 즉시 사용 가능한
ov.conf설정 파일을 생성합니다.
언제든지 설정을 검증하려면 다음을 실행하세요:
openviking-server doctor
doctor 명령어는 서버를 실행할 필요 없이 로컬 필수 요구 사항 (설정 파일, Python 버전, 임베딩/VLM 프로바이더 연결성, 디스크 공간)을 확인합니다.
클라우드 API 프로바이더 (Volcengine, OpenAI, Gemini 등)의 경우, 아래의 수동 설정을 진행하세요.
권장되는 최초 실행 흐름은 다음과 같습니다:
openviking-server init
openviking-server doctor
openviking-server init 과정에서 OpenAI Codex를 선택하면, 마법사가 기존 Codex 인증을 가져오거나 Codex 로그인 흐름을 시작할 수 있습니다.
수동 설정을 선호하는 경우, ~/.openviking/ov.conf 파일을 생성하고 복사하기 전에 주석을 제거하세요:
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
...
참고: 임베딩 모델 (Embedding models)의 경우, 지원되는 프로바이더는 volcengine (Doubao), openai, azure, jina, ollama, voyage, dashscope, minimax, cohere, vikingdb, gemini (pip install "google-genai>=1.0.0" 필요), litellm, 그리고 local입니다. VLM 모델의 경우, 일반적인 프로바이더로는 volcengine, openai, openai-codex, kimi, 그리고 glm이 있습니다.
👇 모델 서비스에 대한 설정 예시를 보려면 확장하세요:
예시 1: Volcengine (Doubao Models) 사용 시
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
...
예시 2: OpenAI Models 사용 시
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
...
예시 3: Google Gemini Embedding 사용 시
먼저 필요한 패키지를 설치하세요:
pip install "google-genai>=1.0.0"
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
...
Google API 키는 https://aistudio.google.com/apikey 에서 발급받을 수 있습니다.
예시 4: Volcengine Embedding + Codex VLM 사용 시
openviking-server init을 실행하고
OpenAI Codex를 선택한 다음,
openviking-server doctor를 실행하세요.
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
...
설정 파일을 생성한 후, 해당 파일을 가리키도록 환경 변수 (Environment Variable)를 설정하세요 (Linux/macOS):
export OPENVIKING_CONFIG_FILE=~/.openviking/ov.conf # 기본값
Windows에서는 다음 중 하나를 사용하세요:
PowerShell:
$env:OPENVIKING_CONFIG_FILE = "$HOME/.openviking/ov.conf"
명령 프롬프트 (cmd.exe):
set "OPENVIKING_CONFIG_FILE=%USERPROFILE%\/.openviking\/ov.conf"
💡
팁: 설정 파일을 다른 위치에 둘 수도 있으며, 환경 변수에 올바른 경로만 지정하면 됩니다.
ov config setup-cli 명령어를 통해 CLI/클라이언트 설정을 대화형으로 초기화할 수 있습니다. 여러 개의 OpenViking 서버를 운영하는 경우, ov config switch 명령어를 사용하여 다른 설정으로 전환할 수 있습니다.
👇 CLI/클라이언트에 대한 설정 예시를 보려면 확장하세요:
예시: localhost 서버 접속을 위한 ovcli.conf
{
"url": "http://localhost:1933",
"timeout": 60.0
...
설정 파일을 생성한 후, 해당 파일을 가리키도록 환경 변수를 설정하세요 (Linux/macOS):
export OPENVIKING_CLI_CONFIG_FILE=~/.openviking/ovcli.conf # 기본값
Windows에서는 다음 중 하나를 사용하세요:
PowerShell:
$env:OPENVIKING_CLI_CONFIG_FILE = "$HOME/.openviking/ovcli.conf"
명령 프롬프트 (cmd.exe):
set "OPENVIKING_CLI_CONFIG_FILE=%USERPROFILE%\.openviking\ovcli.conf"
📝
전제 조건: 이전 단계에서 설정(ov.conf 및 ovcli.conf)을 완료했는지 확인하세요.
이제 OpenViking의 핵심 기능을 경험할 수 있는 전체 예제를 실행해 보겠습니다.
openviking-server doctor
openviking-server
만약 provider=openai-codex를 설정했다면, openviking-server doctor가 이미 Codex 인증을 검증합니다.
또는 백그라운드에서 실행할 수 있습니다:
nohup openviking-server > /data/log/openviking.log 2>&1 &
ov status
ov add-resource https://github.com/volcengine/OpenViking # --wait
ov ls viking://resources/
...
축하합니다! OpenViking을 성공적으로 실행했습니다 🎉
VikingBot은 OpenViking을 기반으로 구축된 AI 에이전트 (AI agent) 프레임워크입니다. 시작 방법은 다음과 같습니다:
# 옵션 1: PyPI에서 VikingBot 설치 (대부분의 사용자에게 권장)
pip install "openviking[bot]"
# 옵션 2: 소스에서 VikingBot 설치 (개발용)
...
공식 Docker 이미지를 사용하는 경우, vikingbot은 이미 이미지에 포함되어 있으며 OpenViking 서버 및 콘솔 UI와 함께 기본적으로 시작됩니다. 런타임(runtime) 시 --without-bot 또는 -e OPENVIKING_WITH_BOT=0을 사용하여 비활성화할 수 있습니다.
프로덕션 (production) 환경의 경우, AI 에이전트 (AI Agents)에 지속적이고 고성능인 컨텍스트 (context) 지원을 제공하기 위해 OpenViking을 독립적인 HTTP 서비스로 실행하는 것을 권장합니다.
🚀 클라우드에 OpenViking 배포하기:
최적의 스토리지 성능과 데이터 보안을 보장하기 위해, veLinux 운영체제를 사용하는 **Volcengine Elastic Compute Service (ECS)**에 배포하는 것을 권장합니다. 빠르게 시작할 수 있도록 상세한 단계별 가이드를 준비했습니다.
- 테스트 데이터셋 (Test Dataset): LoCoMo10 (https://github.com/snap-research/locomo) 장기 대화(long-range dialogues)를 기반으로 한 효과 테스트 (정답(ground truth)이 없는 category5를 제외한 총 1,540개 사례)
- 실험군 (Experimental Groups): 사용자가 OpenViking을 사용할 때 OpenClaw의 기본 메모리(native memory)를 비활성화하지 않을 수 있으므로, 기본 메모리를 활성화하거나 비활성화한 실험군을 추가했습니다.
- OpenViking 버전: 0.1.18
- 모델 (Model): seed-2.0-code
- 평가 스크립트 (Evaluation Script): https://github.com/ZaynJarvis/openclaw-eval/tree/main
| 실험군 (Experimental Group) | 작업 완료율 (Task Completion Rate) | 비용: 입력 토큰 (총합) (Cost: Input Tokens (Total)) |
|---|---|---|
| OpenClaw(memory-core) | 35.65% | 24,611,530 |
| ... |
-
실험 결론 (Experimental Conclusions): OpenViking 통합 후:
-
기본 메모리 활성화 시 (With native memory enabled): 기존 OpenClaw 대비 43% 성능 향상 및 입력 토큰 비용 91% 절감; LanceDB 대비 15% 성능 향상 및 입력 토큰 비용 96% 절감.
-
기본 메모리 비활성화 시 (With native memory disabled): 기존 OpenClaw 대비 49% 성능 향상 및 입력 토큰 비용 83% 절감; LanceDB 대비 17% 성능 향상 및 입력 토큰 비용 92% 절감.
--
첫 번째 예시를 실행한 후, 이제 OpenViking의 설계 철학(design philosophy)을 자세히 살펴보겠습니다. 이 다섯 가지 핵심 개념은 앞서 언급된 솔루션들과 일대일로 대응하며, 함께 완전한 컨텍스트 관리 시스템(context management system)을 구축합니다:
우리는 더 이상 컨텍스트를 평면적인 텍스트 조각(flat text slices)으로 보지 않고, 이를 추상적인 가상 파일 시스템(virtual filesystem)으로 통합합니다. 메모리, 리소스, 또는 기능(capabilities)이 무엇이든 간에, 이들은 viking:// 프로토콜 하의 가상 디렉터리에 매핑되며, 각각 고유한 URI를 가집니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기