O que é OpenViking? Guia Completo e Detalhes

Ashley Innocent

Ashley Innocent

19 março 2026

O que é OpenViking? Guia Completo e Detalhes

TL;DR

OpenViking é um banco de dados de contexto de código aberto para agentes de IA que substitui o armazenamento vetorial plano por um paradigma de sistema de arquivos. Ele organiza o contexto (memórias, recursos, habilidades) sob URIs viking:// com três camadas: L0 (~100 tokens), L1 (~2k tokens), L2 (conteúdo completo). Benchmarks mostram uma redução de 91% no custo de tokens e 43% de melhoria na conclusão de tarefas em comparação com o RAG tradicional.

Introdução

Seu agente de IA continua esquecendo as coisas. Ele pediu o mesmo endpoint de API duas vezes. Ele ignorou sua preferência de ambiente de testes. Ele perdeu o controle de quais testes foram aprovados ontem.

Esta é a realidade da construção de agentes hoje. A maioria das equipes remenda pipelines RAG, bancos de dados vetoriais e sistemas de memória personalizados. O resultado: contexto fragmentado, custos de tokens exorbitantes e recuperação que falha silenciosamente.

Os dados comprovam isso. Em testes de benchmark usando o conjunto de dados LoCoMo10, sistemas RAG tradicionais atingiram apenas 35-44% de taxas de conclusão de tarefas enquanto consumiam 24-51 milhões de tokens de entrada.

OpenViking adota uma abordagem diferente. Criado pela equipe OpenViking da ByteDance, ele substitui o armazenamento vetorial plano por um paradigma de sistema de arquivos. Todo o contexto reside sob URIs viking:// com carregamento hierárquico L0/L1/L2. O resultado: 52% de conclusão de tarefas com 91% menos tokens.

💡
Usuários Apidog que constroem agentes de teste de API podem integrar o OpenViking para manter o contexto da conversa entre as execuções de teste, lembrar as preferências de ambiente do usuário e armazenar a documentação da API para recuperação semântica.
button

Neste guia, você aprenderá como o OpenViking resolve a fragmentação de contexto, verá o modelo L0/L1/L2 em ação e implantará seu primeiro servidor em 15 minutos.

O Problema de Contexto do Agente

Agentes de IA enfrentam desafios de contexto que aplicações tradicionais nunca lidaram.

Considere um agente ajudando desenvolvedores a testar APIs. Ao longo de uma semana, ele precisa acompanhar:

O RAG tradicional armazena isso como blocos planos em um banco de dados vetorial. Ao consultá-lo, você obtém os fragmentos top-K mais semelhantes, sem estrutura, sem hierarquia e sem visibilidade do que foi perdido.

Cinco Desafios Principais

OpenViking identifica cinco problemas centrais no gerenciamento de contexto do agente:

Desafio RAG Tradicional Solução OpenViking
Contexto Fragmentado Memórias, recursos, habilidades armazenados separadamente Paradigma de sistema de arquivos unificado sob viking://
Demanda Crescente Tarefas longas geram contexto massivo Carregamento hierárquico L0/L1/L2 reduz tokens em 91%
Recuperação Ruim A busca vetorial plana carece de uma visão global Recuperação recursiva de diretório com análise de intenção
Não Observável Cadeias de recuperação de caixa preta Trajetórias de busca visualizadas para depuração
Iteração Limitada Apenas histórico de interação do usuário Gerenciamento automático de sessão com 6 categorias de memória

Isso representa uma mudança de “armazenar tudo, recuperar vagamente” para “estruturar tudo, recuperar com precisão”.

O Que é OpenViking?

OpenViking é um banco de dados de contexto de código aberto para agentes de IA, criado pela equipe OpenViking da ByteDance sob a licença Apache 2.0.

Ele unifica todo o contexto em um sistema de arquivos virtual. Memórias, recursos e habilidades mapeiam para diretórios sob viking://, cada um com uma URI única.

viking://
├── resources/              # Conhecimento externo: docs, código, páginas web
│   ├── my_project/
│   │   ├── docs/
│   │   │   ├── api/
│   │   │   └── tutorials/
│   │   └── src/
│   └── ...
├── user/                   # Específico do usuário: preferências, hábitos
│   └── memories/
│       ├── preferences/
│       │   ├── writing_style
│       │   └── coding_habits
│       └── ...
└── agent/                  # Capacidades do agente: habilidades, memórias de tarefas
    ├── skills/
    │   ├── search_code
    │   ├── analyze_data
    │   └── ...
    ├── memories/
    └── instructions/

Agentes adquirem capacidades diretas de manipulação de contexto:

Pense nisso como a diferença entre pesquisar todo o seu disco rígido e saber exatamente qual diretório contém o arquivo.

Recurso Principal 1: Paradigma de Gerenciamento de Sistema de Arquivos

O paradigma de sistema de arquivos resolve a fragmentação de contexto unificando todos os tipos de contexto sob um único modelo.

Três Tipos de Contexto

Tipo Propósito Ciclo de Vida Iniciativa
Recurso Conhecimento externo (documentos, código, FAQs) Longo prazo, estático Usuário adiciona
Memória Cognição do agente (preferências, experiências) Longo prazo, dinâmico Agente extrai
Habilidade Capacidades invocáveis (ferramentas, MCP) Longo prazo, estático Agente invoca

Cada tipo reside em seu próprio diretório:

API tipo Unix

OpenViking oferece operações de linha de comando familiares:

from openviking import OpenViking

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

# Busca semântica em todos os tipos de contexto
results = client.find("autenticação de usuário")

# Listar conteúdo do diretório
contents = client.ls("viking://resources/")

# Ler conteúdo completo
doc = client.read("viking://resources/docs/auth.md")

# Obter resumo rápido (camada L0)
abstract = client.abstract("viking://resources/docs/")

# Obter visão geral detalhada (camada L1)
overview = client.overview("viking://resources/docs/")

A API funciona através do SDK Python ou servidor HTTP, compatível com qualquer framework de agente.

Recurso Principal 2: Carregamento Hierárquico de Contexto L0/L1/L2

Encher prompts com contexto massivo é caro e propenso a erros. OpenViking processa automaticamente todo o contexto em três camadas hierárquicas:

Camada Nome Arquivo Limite de Token Propósito
L0 Resumo .abstract.md ~100 tokens Busca vetorial, filtragem rápida
L1 Visão Geral .overview.md ~2k tokens Rerank, navegação de conteúdo
L2 Detalhe Arquivos originais Ilimitado Conteúdo completo, carregamento sob demanda

Como Funciona

Quando você adiciona um recurso (como um arquivo de documentação PDF), OpenViking:

  1. Analisa o documento em texto (nenhuma chamada LLM ainda)
  2. Constrói uma estrutura de árvore de diretórios no armazenamento AGFS
  3. Enfileira o processamento semântico assincronamente
  4. Gera resumos L0 e visões gerais L1 de baixo para cima

O resultado é uma estrutura hierárquica:

viking://resources/my_project/
├── .abstract.md               # L0: "Documentação de API cobrindo autenticação, endpoints, limites de taxa"
├── .overview.md               # L1: Resumo detalhado com navegação por seção
├── docs/
│   ├── .abstract.md          # Cada diretório tem L0/L1
│   ├── .overview.md
│   ├── auth.md               # L2: Conteúdo completo
│   ├── endpoints.md
│   └── rate-limits.md
└── src/
    └── ...

Impacto no Orçamento de Tokens

Esta hierarquia permite economias significativas de custo:

# RAG Tradicional: Carrega todo o conteúdo
full_docs = retrieve_all("autenticação")  # 50k tokens

# OpenViking: Começa com L1, carrega L2 apenas se necessário
overview = client.overview("viking://resources/docs/auth/")  # 2k tokens

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

Em testes de benchmark, esta abordagem reduziu os custos de tokens de entrada em 91% em comparação com o RAG tradicional, enquanto melhorava as taxas de conclusão de tarefas em 43%.

Recurso Principal 3: Recuperação Recursiva de Diretório

A busca vetorial única tem dificuldades com consultas complexas. OpenViking implementa uma estratégia de recuperação recursiva de diretório:

O Processo de Cinco Etapas

1. Análise de Intenção
   ↓
2. Posicionamento Inicial (encontrar diretórios com alta pontuação)
   ↓
3. Exploração Refinada (buscar dentro de diretórios)
   ↓
4. Descida Recursiva (detalhar subdiretórios)
   ↓
5. Agregação de Resultados (retornar contextos classificados)

Passo 1: Análise de Intenção

A consulta “como autentico usuários?” é analisada para identificar:

Passo 2: Posicionamento Inicial

A busca vetorial localiza rapidamente diretórios com alta pontuação:

Passo 3: Exploração Refinada

Dentro do diretório principal, uma busca secundária encontra arquivos específicos:

Passo 4: Descida Recursiva

Se existirem subdiretórios (como auth/providers/), o processo se repete recursivamente.

Passo 5: Agregação de Resultados

Os resultados finais são agregados e classificados por relevância, com rastros de recuperação preservados.

Esta estratégia de “bloquear o diretório primeiro, depois explorar o conteúdo” melhora a precisão da recuperação ao compreender o contexto completo da informação, não apenas pedaços isolados.

Recurso Principal 4: Rastros de Recuperação Visualizados

O RAG tradicional é uma caixa preta. Quando a recuperação falha, você não consegue dizer se é um problema de similaridade vetorial, um problema de chunking ou dados ausentes.

A estrutura do sistema de arquivos do OpenViking torna a recuperação observável:

Rastro de Recuperação para consulta: "refresh de token OAuth"

├── viking://resources/docs/
│   ├── [PONTUAÇÃO: 0.45] .abstract.md: ignorado (baixa relevância)
│   └── [PONTUAÇÃO: 0.89] auth/: selecionado (alta relevância)
│       ├── [PONTUAÇÃO: 0.92] oauth.md: RETORNADO
│       ├── [PONTUAÇÃO: 0.34] jwt.md: ignorado
│       └── [PONTUAÇÃO: 0.78] providers/
│           └── [PONTUAÇÃO: 0.85] google.md: RETORNADO

Este rastro mostra:

Para depuração, isso é inestimável. Você pode ver se o agente perdeu o contexto porque estava no diretório errado, tinha um resumo L0 ruim ou ficou abaixo do limiar de pontuação.

Recurso Principal 5: Gerenciamento Automático de Sessão

OpenViking possui um loop de autoiteração de memória integrado. Ao final de cada sessão, o sistema pode extrair memórias e atualizar o conhecimento do agente automaticamente.

Seis Categorias de Memória

Categoria Proprietário Localização Descrição Estratégia de Atualização
perfil usuário user/memories/.overview.md Informações básicas do usuário Adicionável
preferências usuário user/memories/preferences/ Preferências por tópico Adicionável
entidades usuário user/memories/entities/ Pessoas, projetos, organizações Adicionável
eventos usuário user/memories/events/ Decisões, marcos Sem atualização
casos agente agent/memories/cases/ Casos aprendidos Sem atualização
padrões agente agent/memories/patterns/ Padrões aprendidos Sem atualização

Como a Extração de Memória Funciona

# Iniciar uma sessão
session = client.session()

# Adicionar mensagens (turnos de conversa)
await session.add_message("user", [{"type": "text", "text": "Prefiro o modo escuro na interface do usuário"}])
await session.add_message("assistant", [{"type": "text", "text": "Entendi. Usarei o modo escuro para todas as capturas de tela futuras."}])

# Registrar uso de ferramenta
await session.add_usage({
    "tool": "screenshot",
    "parameters": {"theme": "dark"},
    "result": "success"
})

# Confirmar a sessão: aciona a extração de memória
await session.commit()

Quando confirmada, o OpenViking:

  1. Compacta a sessão (mantém os N turnos recentes, arquiva os mais antigos)
  2. Extrai memórias usando análise LLM
  3. Atualiza os diretórios de memória apropriados
  4. Gera L0/L1 para novo conteúdo de memória

Isso torna os agentes mais inteligentes com o uso: eles aprendem as preferências do usuário, acumulam experiência em tarefas e melhoram a tomada de decisões ao longo do tempo.

Visão Geral da Arquitetura

A arquitetura do sistema OpenViking separa as preocupações em várias camadas:

Armazenamento de Dupla Camada

OpenViking separa conteúdo de índice:

Camada Tecnologia Armazena
AGFS Sistema de arquivos customizado Conteúdo L0/L1/L2, arquivos multimídia, relações
Índice Vetorial DB Vetorial URIs, embeddings, metadados (sem conteúdo de arquivo)

Esta separação garante:

Início Rápido: Implante Seu Primeiro Servidor OpenViking

Pré-requisitos

Passo 1: Instalar OpenViking

pip install openviking --upgrade --force-reinstall

Opcionalmente, instale o CLI Rust para acesso via terminal:

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

Passo 2: Configurar Modelos

OpenViking requer duas capacidades de modelo:

Crie ~/.openviking/ov.conf:

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

Provedores Suportados:

Provedor 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 Via proxy LiteLLM Claude, Gemini, DeepSeek, Qwen, Ollama, vLLM

O suporte LiteLLM significa que você pode usar modelos Anthropic, Google, Ollama local ou qualquer endpoint compatível com OpenAI.

Passo 3: Iniciar o Servidor

openviking-server

Ou rodar em segundo plano:

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

Passo 4: Adicionar Seu Primeiro Recurso

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

# Ou usando o SDK Python
from openviking import OpenViking

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

Passo 5: Buscar e Recuperar

# Espere pelo processamento semântico, depois busque
ov find "métodos de autenticação"

# Listar conteúdo do diretório
ov ls viking://resources/

# Visualizar árvore de diretórios
ov tree viking://resources/docs -L 2

# Pesquisar por conteúdo específico
ov grep "OAuth" --uri viking://resources/docs/

Passo 6: Habilitar VikingBot (Opcional)

VikingBot é um framework de agente de IA construído sobre OpenViking:

pip install "openviking[bot]"

# Iniciar servidor com bot habilitado
openviking-server --with-bot

# Em outro terminal, iniciar chat interativo
ov chat

Benchmarks de Desempenho

OpenViking foi comparado com RAG tradicional (LanceDB) e sistemas de memória nativa usando o conjunto de dados LoCoMo10 (1.540 casos de diálogo de longo alcance).

Taxas de Conclusão de Tarefas

Sistema Taxa de Conclusão Tokens de Entrada
OpenClaw (memória nativa) 35.65% 24.6M
OpenClaw + LanceDB 44.55% 51.6M
OpenClaw + OpenViking 52.08% 4.3M

Principais Descobertas

Esses resultados vêm da integração do OpenViking como um plugin com o OpenClaw, um assistente de codificação de IA de código aberto. O conjunto de dados de teste foi baseado em diálogos de longo alcance onde a retenção de memória é crítica.

Integrando OpenViking com Apidog

Usuários Apidog que constroem agentes de IA para testes de API podem aproveitar o OpenViking para manter o contexto da conversa, armazenar a documentação da API e lembrar as preferências do usuário entre as sessões.

Passo 1: Configurar Servidor OpenViking

Siga o início rápido acima para implantar o OpenViking com seus modelos VLM e de embedding preferidos.

Passo 2: Importar Documentação da API Apidog

# Adicione a documentação do seu projeto Apidog como um recurso
ov add-resource https://docs.apidog.com/overview
ov add-resource https://docs.apidog.com/api-testing

Isso importa a documentação Apidog para viking://resources/ com processamento automático L0/L1/L2.

Passo 3: Armazenar Preferências do Usuário

from openviking import OpenViking

client = OpenViking(path="./apidog-agent-data")
session = client.session()

# Registrar a preferência de ambiente padrão do usuário
await session.add_message("user", [{
    "type": "text",
    "text": "Sempre use o ambiente de testes para testes de API"
}])
await session.commit()  # Extrai memória de preferência automaticamente

Passo 4: Consultar Contexto Durante os Testes

# Encontre endpoints de API relevantes antes de executar os testes
results = client.find("endpoints de autenticação")
for ctx in results.resources:
    print(f"Encontrado: {ctx.uri}")

# Recuperar a preferência de ambiente do usuário
prefs = client.find("preferência de ambiente de testes", target_uri="viking://user/memories/")

Passo 5: Conectar ao Seu Framework de Agente

OpenViking expõe tanto o SDK Python quanto a API HTTP:

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

# Ou API HTTP
import httpx
response = httpx.post(
    "http://localhost:1933/api/v1/search/find",
    json={"query": "endpoints de autenticação"},
    headers={"X-API-Key": "sua-chave-api"}
)

Técnicas Avançadas e Melhores Práticas

Dicas Pro para Implantações em Produção

1. Pré-aquecer Contexto Acessado Frequentemente

Carregue a documentação crítica em L0/L1 durante horários de pico para reduzir a latência durante as operações do agente.

# Acionar processamento semântico imediatamente
ov add-resource https://docs.example.com --wait

2. Implementar Expiração de Contexto

Configure a limpeza automática para dados de sessão obsoletos:

# Arquivar sessões com mais de 7 dias
await session.archive(max_age_days=7)

3. Monitorar a Saúde do Índice Vetorial

Acompanhar o tamanho do índice e a latência da consulta:

ov debug stats

Erros Comuns a Evitar

  1. Carregar conteúdo L2 prematuramente: Sempre comece com L0/L1 para economizar tokens
  2. Pular confirmações de sessão: A extração de memória só ocorre na confirmação
  3. Sobrecarga de diretórios únicos: Divida grandes recursos em subdiretórios baseados em tópicos
  4. Ignorar rastros de recuperação: Use rastros visualizados para depurar resultados ruins

Otimização de Desempenho

Cenário Recomendação
Alto volume de consultas Execute o OpenViking como servidor HTTP com pool de conexões
Documentos grandes Divida em blocos baseados em tópicos antes de importar
Necessidades de baixa latência Pré-gerar L0/L1 para conteúdo frequentemente acessado
Configuração multi-tenant Use workspaces separados por tenant

Melhores Práticas de Segurança

Casos de Uso no Mundo Real

1. Assistentes de Codificação de IA

Uma equipe de desenvolvimento integrou o OpenViking com seu assistente de codificação interno. O agente agora:

Resultado: Redução de 67% em comportamentos de agente “esquecidos”, 43% de economia de custo de tokens.

2. Agentes de Suporte ao Cliente

Uma empresa SaaS implantou o OpenViking para seu chatbot de suporte:

Resultado: A resolução no primeiro contato melhorou de 52% para 71%.

3. Assistentes de Pesquisa

Um laboratório de pesquisa usa o OpenViking para organizar artigos e notas:

Resultado: Pesquisadores encontram artigos relevantes 3x mais rápido com busca semântica.

Alternativas e Comparações

OpenViking não é a única solução de gerenciamento de contexto. Veja como ele se compara às alternativas:

OpenViking vs. Bancos de Dados Vetoriais Tradicionais

Aspecto RAG Tradicional (Pinecone, LanceDB) OpenViking
Modelo de Armazenamento Blocos vetoriais planos Sistema de arquivos hierárquico
Recuperação Similaridade Top-K Recursivo de diretório + análise de intenção
Observabilidade Caixa preta Rastros de busca visualizados
Eficiência de Tokens Carregar tudo ou truncar Carregamento progressivo L0/L1/L2
Iteração de Memória Manual ou nenhuma Gerenciamento automático de sessão
Tipos de Contexto Apenas documentos Recursos, memórias, habilidades unificadas
Depuração Adivinhação Logs de travessia de diretório

OpenViking vs. Memória LangChain

Aspecto Memória LangChain OpenViking
Persistência Apenas buffer de conversa Sistema de arquivos completo com L0/L1/L2
Escalabilidade Limitado pela janela de contexto Carregamento hierárquico, sem limite rígido
Recuperação Busca linear Recursivo de diretório + semântico
Tipos de Memória Buffer único 6 categorias (perfil, preferências, eventos, etc.)

Quando Considerar Alternativas

Use bancos de dados vetoriais tradicionais se:

Use OpenViking se:

Comparação com RAG Tradicional

Aspecto RAG Tradicional OpenViking
Modelo de Armazenamento Blocos vetoriais planos Sistema de arquivos hierárquico
Recuperação Similaridade Top-K Recursivo de diretório + análise de intenção
Observabilidade Caixa preta Rastros de busca visualizados
Eficiência de Tokens Carregar tudo ou truncar Carregamento progressivo L0/L1/L2
Iteração de Memória Manual ou nenhuma Gerenciamento automático de sessão
Tipos de Contexto Apenas documentos Recursos, memórias, habilidades unificadas
Depuração Adivinhação Logs de travessia de diretório

Implantação em Produção

Para ambientes de produção, execute o OpenViking como um serviço HTTP autônomo:

Infraestrutura Recomendada

Considerações de Segurança

Monitoramento

OpenViking suporta registro de logs e métricas:

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

Monitorar:

Limitações e Considerações

Limitações Atuais

Quando Usar OpenViking

Boa opção:

Considere alternativas:

O Caminho a Seguir

OpenViking está em desenvolvimento inicial (versão 0.1.x a partir do início de 2025). O roteiro inclui:

A equipe por trás do OpenViking está buscando ativamente contribuidores da comunidade. O projeto é de código aberto sob a licença Apache 2.0, com documentação disponível.

Conclusão

OpenViking representa uma mudança na forma como os agentes de IA gerenciam o contexto. Ao organizar informações como um sistema de arquivos em vez de blocos planos, ele resolve a fragmentação, o desperdício de tokens e a recuperação de caixa preta que assolam os sistemas RAG tradicionais.

Principais Pontos

button

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs