¿Qué es OpenViking?

Ashley Innocent

Ashley Innocent

19 March 2026

¿Qué es OpenViking?

En resumen

OpenViking es una base de datos de contexto de código abierto para agentes de IA que reemplaza el almacenamiento de vectores planos con un paradigma de sistema de archivos. Organiza el contexto (memorias, recursos, habilidades) bajo URIs viking:// con tres capas: L0 (~100 tokens), L1 (~2k tokens), L2 (contenido completo). Los puntos de referencia muestran una reducción del 91% en el costo de los tokens y una mejora del 43% en la finalización de tareas frente al RAG tradicional.

Introducción

Tu agente de IA sigue olvidando cosas. Pidió el mismo endpoint de API dos veces. Ignoró tu preferencia de entorno de staging. Perdió el rastro de qué pruebas pasaron ayer.

Esta es la realidad de construir agentes hoy. La mayoría de los equipos ensamblan pipelines de RAG, bases de datos vectoriales y sistemas de memoria personalizados. El resultado: contexto fragmentado, costos de tokens disparados y recuperación que falla silenciosamente.

Los datos lo confirman. En pruebas de referencia utilizando el conjunto de datos LoCoMo10, los sistemas RAG tradicionales lograron solo tasas de finalización de tareas del 35-44% mientras quemaban entre 24 y 51 millones de tokens de entrada.

OpenViking adopta un enfoque diferente. Creado por el equipo OpenViking de ByteDance, reemplaza el almacenamiento de vectores planos con un paradigma de sistema de archivos. Todo el contexto reside bajo URIs viking:// con carga jerárquica L0/L1/L2. El resultado: 52% de finalización de tareas con un 91% menos de tokens.

💡
Los usuarios de Apidog que construyen agentes de prueba de API pueden integrar OpenViking para mantener el contexto de la conversación entre ejecuciones de prueba, recordar las preferencias del entorno del usuario y almacenar la documentación de la API para una recuperación semántica.
button

En esta guía, aprenderás cómo OpenViking resuelve la fragmentación del contexto, verás el modelo L0/L1/L2 en acción y desplegarás tu primer servidor en 15 minutos.

El Problema del Contexto del Agente

Los agentes de IA se enfrentan a desafíos de contexto que las aplicaciones tradicionales nunca tuvieron.

Considera un agente que ayuda a los desarrolladores a probar APIs. Durante una semana, necesita rastrear:

El RAG tradicional almacena esto como fragmentos planos en una base de datos vectorial. Si lo consultas, obtienes los K fragmentos más similares sin estructura, sin jerarquía y sin visibilidad de lo que se perdió.

Cinco Desafíos Principales

OpenViking identifica cinco problemas principales en la gestión del contexto de los agentes:

Desafío RAG Tradicional Solución OpenViking
Contexto Fragmentado Memorias, recursos, habilidades almacenados por separado Paradigma unificado de sistema de archivos bajo viking://
Demanda Creciente Las tareas largas generan contexto masivo La carga jerárquica L0/L1/L2 reduce los tokens un 91%
Recuperación Deficiente La búsqueda vectorial plana carece de una vista global Recuperación recursiva de directorios con análisis de intenciones
Inobservable Cadenas de recuperación de caja negra Trayectorias de búsqueda visualizadas para depuración
Iteración Limitada Solo historial de interacción del usuario Gestión automática de sesiones con 6 categorías de memoria

Esto representa un cambio de “almacenar todo, recuperar vagamente” a “estructurar todo, recuperar con precisión”.

¿Qué es OpenViking?

OpenViking es una base de datos de contexto de código abierto para agentes de IA, creada por el equipo OpenViking de ByteDance bajo la licencia Apache 2.0.

Arquitectura de OpenViking mostrando los componentes de agentes de IA, SDK, API HTTP y almacenamiento AGFS

Unifica todo el contexto en un sistema de archivos virtual. Las memorias, recursos y habilidades se mapean a directorios bajo viking://, cada uno con un URI único.

viking://
├── resources/              # Conocimiento externo: documentos, código, páginas web
│   ├── my_project/
│   │   ├── docs/
│   │   │   ├── api/
│   │   │   └── tutorials/
│   │   └── src/
│   └── ...
├── user/                   # Específico del usuario: preferencias, hábitos
│   └── memories/
│       ├── preferences/
│       │   ├── writing_style
│       │   └── coding_habits
│       └── ...
└── agent/                  # Capacidades del agente: habilidades, memorias de tareas
    ├── skills/
    │   ├── search_code
    │   ├── analyze_data
    │   └── ...
    ├── memories/
    └── instructions/

Los agentes obtienen capacidades directas de manipulación de contexto:

Piensa en ello como la diferencia entre buscar en todo tu disco duro y saber exactamente qué directorio contiene el archivo.

Característica Clave 1: Paradigma de Gestión del Sistema de Archivos

El paradigma del sistema de archivos resuelve la fragmentación del contexto al unificar todos los tipos de contexto bajo un único modelo.

Tres Tipos de Contexto

Tipo Propósito Ciclo de Vida Iniciativa
Recurso Conocimiento externo (docs, código, FAQs) Largo plazo, estático El usuario añade
Memoria Cognición del agente (preferencias, experiencias) Largo plazo, dinámico El agente extrae
Habilidad Capacidades invocables (herramientas, MCP) Largo plazo, estático El agente invoca

Cada tipo vive en su propio directorio:

API tipo Unix

OpenViking proporciona operaciones de línea de comandos familiares:

from openviking import OpenViking

client = OpenViking(path="./data")

# Búsqueda semántica en todos los tipos de contexto
results = client.find("autenticación de usuario")

# Listar contenidos de directorio
contents = client.ls("viking://resources/")

# Leer contenido completo
doc = client.read("viking://resources/docs/auth.md")

# Obtener resumen rápido (capa L0)
abstract = client.abstract("viking://resources/docs/")

# Obtener vista general detallada (capa L1)
overview = client.overview("viking://resources/docs/")

La API funciona a través del SDK de Python o del servidor HTTP, compatible con cualquier framework de agente.

Característica Clave 2: Carga Jerárquica de Contexto L0/L1/L2

Introducir un contexto masivo en las indicaciones es costoso y propenso a errores. OpenViking procesa automáticamente todo el contexto en tres capas jerárquicas:

Capa Nombre Archivo Límite de Tokens Propósito
L0 Resumen .abstract.md ~100 tokens Búsqueda vectorial, filtrado rápido
L1 Vista General .overview.md ~2k tokens Reclasificación, navegación de contenido
L2 Detalle Archivos originales Ilimitado Contenido completo, carga bajo demanda

Cómo Funciona

Cuando añades un recurso (como un archivo de documentación PDF), OpenViking:

  1. Analiza el documento en texto (aún sin llamadas a LLM)
  2. Construye una estructura de árbol de directorios en el almacenamiento AGFS
  3. Encola el procesamiento semántico de forma asíncrona
  4. Genera resúmenes L0 y vistas generales L1 de abajo hacia arriba

El resultado es una estructura jerárquica:

viking://resources/my_project/
├── .abstract.md               # L0: "Documentación de API que cubre autenticación, endpoints, límites de tasa"
├── .overview.md               # L1: Resumen detallado con navegación por secciones
├── docs/
│   ├── .abstract.md          # Cada directorio tiene L0/L1
│   ├── .overview.md
│   ├── auth.md               # L2: Contenido completo
│   ├── endpoints.md
│   └── rate-limits.md
└── src/
    └── ...

Impacto en el Presupuesto de Tokens

Esta jerarquía permite un ahorro significativo de costos:

# RAG tradicional: Cargar todo el contenido
full_docs = retrieve_all("autenticación")  # 50k tokens

# OpenViking: Comenzar con L1, cargar L2 solo si es necesario
overview = client.overview("viking://resources/docs/auth/")  # 2k tokens

if needs_more_detail(overview):
    content = client.read("viking://resources/docs/auth/oauth.md")  # Cargar L2 específico

En las pruebas de referencia, este enfoque redujo los costos de tokens de entrada en un 91% en comparación con el RAG tradicional, al tiempo que mejoró las tasas de finalización de tareas en un 43%.

Característica Clave 3: Recuperación Recursiva de Directorios

La búsqueda vectorial simple tiene dificultades con consultas complejas. OpenViking implementa una estrategia de recuperación recursiva de directorios:

El Proceso de Cinco Pasos

1. Análisis de Intención
   ↓
2. Posicionamiento Inicial (encontrar directorios de alta puntuación)
   ↓
3. Exploración Refinada (buscar dentro de directorios)
   ↓
4. Descenso Recursivo (profundizar en subdirectorios)
   ↓
5. Agregación de Resultados (devolver contextos clasificados)

Paso 1: Análisis de Intención

La consulta “¿cómo autentico usuarios?” se analiza para identificar:

Paso 2: Posicionamiento Inicial

La búsqueda vectorial localiza rápidamente directorios de alta puntuación:

Paso 3: Exploración Refinada

Dentro del directorio principal, una búsqueda secundaria encuentra archivos específicos:

Paso 4: Descenso Recursivo

Si existen subdirectorios (como auth/providers/), el proceso se repite recursivamente.

Paso 5: Agregación de Resultados

Los resultados finales se agregan y clasifican por relevancia, conservando las trazas de recuperación.

Esta estrategia de “bloquear el directorio primero, luego explorar el contenido” mejora la precisión de la recuperación al comprender el contexto completo de la información, no solo fragmentos aislados.

Característica Clave 4: Trazas de Recuperación Visualizadas

El RAG tradicional es una caja negra. Cuando la recuperación falla, no puedes saber si es un problema de similitud vectorial, un problema de segmentación o datos faltantes.

La estructura de sistema de archivos de OpenViking hace que la recuperación sea observable:

Traza de Recuperación para la consulta: "actualización de token OAuth"

├── viking://resources/docs/
│   ├── [PUNTUACIÓN: 0.45] .abstract.md: omitido (baja relevancia)
│   └── [PUNTUACIÓN: 0.89] auth/: seleccionado (alta relevancia)
│       ├── [PUNTUACIÓN: 0.92] oauth.md: DEVUELTO
│       ├── [PUNTUACIÓN: 0.34] jwt.md: omitido
│       └── [PUNTUACIÓN: 0.78] providers/
│           └── [PUNTUACIÓN: 0.85] google.md: DEVUELTO

Esta traza muestra:

Para la depuración, esto es invaluable. Puedes ver si el agente perdió contexto porque estaba en el directorio equivocado, tenía un resumen L0 deficiente o cayó por debajo del umbral de puntuación.

Característica Clave 5: Gestión Automática de Sesiones

OpenViking tiene un bucle de auto-iteración de memoria incorporado. Al final de cada sesión, el sistema puede extraer memorias y actualizar el conocimiento del agente automáticamente.

Seis Categorías de Memoria

Categoría Propietario Ubicación Descripción Estrategia de Actualización
perfil usuario user/memories/.overview.md Información básica del usuario Añadible
preferencias usuario user/memories/preferences/ Preferencias por tema Añadible
entidades usuario user/memories/entities/ Personas, proyectos, organizaciones Añadible
eventos usuario user/memories/events/ Decisiones, hitos No se actualiza
casos agente agent/memories/cases/ Casos aprendidos No se actualiza
patrones agente agent/memories/patterns/ Patrones aprendidos No se actualiza

Cómo Funciona la Extracción de Memoria

# Iniciar una sesión
session = client.session()

# Añadir mensajes (turnos de conversación)
await session.add_message("usuario", [{"type": "text", "text": "Prefiero el modo oscuro en la interfaz de usuario"}])
await session.add_message("asistente", [{"type": "text", "text": "Entendido. Usaré el modo oscuro para todas las capturas de pantalla futuras."}])

# Registrar el uso de la herramienta
await session.add_usage({
    "tool": "captura_de_pantalla",
    "parameters": {"theme": "oscuro"},
    "result": "éxito"
})

# Confirmar la sesión: activa la extracción de memoria
await session.commit()

Cuando se confirma, OpenViking:

  1. Comprime la sesión (mantiene los N turnos recientes, archiva los más antiguos)
  2. Extrae memorias usando análisis de LLM
  3. Actualiza los directorios de memoria apropiados
  4. Genera L0/L1 para el nuevo contenido de memoria

Esto hace que los agentes sean más inteligentes con el uso: aprenden las preferencias del usuario, acumulan experiencia en tareas y mejoran la toma de decisiones con el tiempo.

Visión General de la Arquitectura

La arquitectura del sistema de OpenViking separa las preocupaciones en múltiples capas:

Diagrama de arquitectura de OpenViking

Almacenamiento de Doble Capa

OpenViking separa el contenido del índice:

Capa Tecnología Almacena
AGFS Sistema de archivos personalizado Contenido L0/L1/L2, archivos multimedia, relaciones
Índice Vectorial Base de datos vectorial URIs, embeddings, metadatos (sin contenido de archivo)

Esta separación asegura:

Inicio Rápido: Despliega Tu Primer Servidor OpenViking

Requisitos Previos

Paso 1: Instala OpenViking

pip install openviking --upgrade --force-reinstall

Opcionalmente, instala la CLI de Rust para acceso a la terminal:

curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash

Paso 2: Configura Modelos

OpenViking requiere dos capacidades de modelo:

Crea ~/.openviking/ov.conf:

{
  "storage": {
    "workspace": "/home/tu-nombre/espacio_de_trabajo_openviking"
  },
  "log": {
    "level": "INFO",
    "output": "stdout"
  },
  "embedding": {
    "dense": {
      "api_base": "https://api.openai.com/v1",
      "api_key": "tu-clave-api-openai",
      "provider": "openai",
      "dimension": 3072,
      "model": "text-embedding-3-large"
    },
    "max_concurrent": 10
  },
  "vlm": {
    "api_base": "https://api.openai.com/v1",
    "api_key": "tu-clave-api-openai",
    "provider": "openai",
    "model": "gpt-4o",
    "max_concurrent": 100
  }
}

Proveedores Compatibles:

Proveedor Modelos de Embedding Modelos VLM
volcengine doubao-embedding-vision doubao-seed-2.0-pro
openai text-embedding-3-large gpt-4o, gpt-4-vision
litellm A través de proxy LiteLLM Claude, Gemini, DeepSeek, Qwen, Ollama, vLLM

El soporte de LiteLLM significa que puedes usar modelos de Anthropic, Google, Ollama locales o cualquier endpoint compatible con OpenAI.

Paso 3: Inicia el Servidor

openviking-server

O ejecuta en segundo plano:

nohup openviking-server > /data/log/openviking.log 2>&1 &

Paso 4: Añade Tu Primer Recurso

# Usando la CLI de Rust
ov add-resource https://docs.example.com/api-guide.pdf

# O usando el SDK de Python
from openviking import OpenViking

client = OpenViking(path="./data")
client.add_resource("https://docs.example.com/api-guide.pdf")

Paso 5: Buscar y Recuperar

# Espera el procesamiento semántico, luego busca
ov find "métodos de autenticación"

# Listar contenidos de directorio
ov ls viking://resources/

# Ver árbol de directorios
ov tree viking://resources/docs -L 2

# Buscar contenido específico
ov grep "OAuth" --uri viking://resources/docs/

Paso 6: Habilitar VikingBot (Opcional)

VikingBot es un framework de agente de IA construido sobre OpenViking:

pip install "openviking[bot]"

# Iniciar servidor con el bot habilitado
openviking-server --with-bot

# En otra terminal, iniciar chat interactivo
ov chat

Puntos de Referencia de Rendimiento

OpenViking fue comparado con RAG tradicional (LanceDB) y sistemas de memoria nativos usando el conjunto de datos LoCoMo10 (1.540 casos de diálogo de largo alcance).

Tasas de Finalización de Tareas

Sistema Tasa de Finalización Tokens de Entrada
OpenClaw (memoria nativa) 35.65% 24.6M
OpenClaw + LanceDB 44.55% 51.6M
OpenClaw + OpenViking 52.08% 4.3M

Hallazgos Clave

Estos resultados provienen de la integración de OpenViking como un plugin con OpenClaw, un asistente de codificación de IA de código abierto. El conjunto de datos de prueba se basó en diálogos de largo alcance donde la retención de memoria es crítica.

Integrando OpenViking con Apidog

Los usuarios de Apidog que construyen agentes de IA para pruebas de API pueden aprovechar OpenViking para mantener el contexto de la conversación, almacenar documentación de API y recordar las preferencias del usuario entre sesiones.

Diagrama de integración de Apidog con OpenViking

Paso 1: Configurar el Servidor OpenViking

Sigue el inicio rápido anterior para desplegar OpenViking con tus modelos VLM y de embedding preferidos.

Paso 2: Importar la Documentación de la API de Apidog

# Añade la documentación de tu proyecto Apidog como un recurso
ov add-resource https://docs.apidog.com/overview
ov add-resource https://docs.apidog.com/api-testing

Esto importa la documentación de Apidog a viking://resources/ con procesamiento automático L0/L1/L2.

Paso 3: Almacenar Preferencias del Usuario

from openviking import OpenViking

client = OpenViking(path="./datos-agente-apidog")
session = client.session()

# Registrar la preferencia de entorno predeterminada del usuario
await session.add_message("usuario", [{
    "type": "text",
    "text": "Siempre usa el entorno de staging para las pruebas de API"
}])
await session.commit()  # Extrae la memoria de preferencias automáticamente

Paso 4: Consultar el Contexto Durante las Pruebas

# Encontrar endpoints de API relevantes antes de ejecutar las pruebas
results = client.find("endpoints de autenticación")
for ctx in results.resources:
    print(f"Encontrado: {ctx.uri}")

# Recuperar la preferencia de entorno del usuario
prefs = client.find("preferencia de entorno de staging", target_uri="viking://user/memories/")

Paso 5: Conectar a Tu Framework de Agente

OpenViking expone tanto el SDK de Python como la API HTTP:

# SDK de Python
from openviking import OpenViking
client = OpenViking(path="./data")

# O API HTTP
import httpx
response = httpx.post(
    "http://localhost:1933/api/v1/search/find",
    json={"query": "endpoints de autenticación"},
    headers={"X-API-Key": "tu-clave-api"}
)

Técnicas Avanzadas y Mejores Prácticas

Consejos Profesionales para Despliegues en Producción

1. Precalentar Contexto Accedido Frecuentemente

Carga la documentación crítica en L0/L1 durante las horas de menor actividad para reducir la latencia durante las operaciones del agente.

# Activa el procesamiento semántico inmediatamente
ov add-resource https://docs.example.com --wait

2. Implementar Expiración de Contexto

Configura la limpieza automática de datos de sesión obsoletos:

# Archivar sesiones con más de 7 días
await session.archive(max_age_days=7)

3. Monitorizar la Salud del Índice Vectorial

Rastrea el tamaño del índice y la latencia de las consultas:

ov debug stats

Errores Comunes a Evitar

  1. Cargar contenido L2 prematuramente: Siempre comienza con L0/L1 para ahorrar tokens
  2. Omitir confirmaciones de sesión: La extracción de memoria solo ocurre al confirmar
  3. Sobrecargar directorios individuales: Divide los recursos grandes en subdirectorios basados en temas
  4. Ignorar las trazas de recuperación: Utiliza las trazas visualizadas para depurar resultados deficientes

Optimización del Rendimiento

Escenario Recomendación
Gran volumen de consultas Ejecutar OpenViking como servidor HTTP con agrupación de conexiones
Documentos grandes Dividirlos en fragmentos basados en temas antes de importar
Necesidades de baja latencia Pre-generar L0/L1 para contenido accedido frecuentemente
Configuración multi-inquilino Usar espacios de trabajo separados por inquilino

Mejores Prácticas de Seguridad

Casos de Uso en el Mundo Real

1. Asistentes de Codificación de IA

Un equipo de desarrollo integró OpenViking con su asistente de codificación interno. Ahora el agente:

Resultado: Reducción del 67% en comportamientos de agente "olvidadizos", ahorro del 43% en el costo de los tokens.

2. Agentes de Soporte al Cliente

Una empresa SaaS desplegó OpenViking para su chatbot de soporte:

Resultado: La resolución en el primer contacto mejoró del 52% al 71%.

3. Asistentes de Investigación

Un laboratorio de investigación utiliza OpenViking para organizar artículos y notas:

Resultado: Los investigadores encuentran artículos relevantes 3 veces más rápido con la búsqueda semántica.

Alternativas y Comparaciones

OpenViking no es la única solución de gestión de contexto. Así es como se compara con las alternativas:

OpenViking vs. Bases de Datos Vectoriales Tradicionales

Aspecto RAG Tradicional (Pinecone, LanceDB) OpenViking
Modelo de Almacenamiento Fragmentos vectoriales planos Sistema de archivos jerárquico
Recuperación Similitud Top-K Recursivo de directorios + análisis de intención
Observabilidad Caja negra Trazas de búsqueda visualizadas
Eficiencia de Tokens Cargar todo o truncar Carga progresiva L0/L1/L2
Iteración de Memoria Manual o nula Gestión automática de sesiones
Tipos de Contexto Solo documentos Recursos, memorias, habilidades unificados
Depuración Adivinación Registros de recorrido de directorios

OpenViking vs. Memoria de LangChain

Aspecto Memoria de LangChain OpenViking
Persistencia Solo búfer de conversación Sistema de archivos completo con L0/L1/L2
Escalabilidad Limitado por la ventana de contexto Carga jerárquica, sin límite estricto
Recuperación Búsqueda lineal Recursivo de directorios + semántico
Tipos de Memoria Búfer único 6 categorías (perfil, preferencias, eventos, etc.)

Cuándo Considerar Alternativas

Usa bases de datos vectoriales tradicionales si:

Usa OpenViking si:

Comparación con RAG Tradicional

Aspecto RAG Tradicional OpenViking
Modelo de Almacenamiento Fragmentos vectoriales planos Sistema de archivos jerárquico
Recuperación Similitud Top-K Recursivo de directorios + análisis de intención
Observabilidad Caja negra Trazas de búsqueda visualizadas
Eficiencia de Tokens Cargar todo o truncar Carga progresiva L0/L1/L2
Iteración de Memoria Manual o nula Gestión automática de sesiones
Tipos de Contexto Solo documentos Recursos, memorias, habilidades unificados
Depuración Adivinación Registros de recorrido de directorios

Despliegue en Producción

Para entornos de producción, ejecuta OpenViking como un servicio HTTP independiente:

Infraestructura Recomendada

Consideraciones de Seguridad

Monitorización

OpenViking soporta logging y métricas:

{
  "log": {
    "level": "INFO",
    "output": "file",
    "path": "/var/log/openviking/server.log"
  }
}

Monitoriza:

Limitaciones y Consideraciones

Limitaciones Actuales

Cuándo Usar OpenViking

Buen ajuste:

Considera alternativas:

El Camino a Seguir

OpenViking se encuentra en una fase temprana de desarrollo (versión 0.1.x a principios de 2025). La hoja de ruta incluye:

El equipo detrás de OpenViking busca activamente colaboradores de la comunidad. El proyecto es de código abierto bajo Apache 2.0, con documentación disponible.

Conclusión

OpenViking representa un cambio en la forma en que los agentes de IA gestionan el contexto. Al organizar la información como un sistema de archivos en lugar de fragmentos planos, resuelve la fragmentación, el desperdicio de tokens y la recuperación de caja negra que plagan los sistemas RAG tradicionales.

Puntos Clave

button

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs