TL;DR
OpenViking adalah basis data konteks sumber terbuka untuk agen AI yang menggantikan penyimpanan vektor datar dengan paradigma sistem file. Ia mengatur konteks (memori, sumber daya, keterampilan) di bawah URI viking:// dengan tiga lapisan: L0 (~100 token), L1 (~2k token), L2 (konten penuh). Tolok ukur menunjukkan pengurangan biaya token sebesar 91% dan penyelesaian tugas 43% lebih baik dibandingkan RAG tradisional.
Pendahuluan
Agen AI Anda sering melupakan sesuatu: menanyakan endpoint API yang sama dua kali, mengabaikan preferensi lingkungan staging, atau lupa tes mana yang lolos kemarin. Ini adalah masalah utama dalam pengembangan agen saat ini karena fragmentasi konteks, membengkaknya biaya token, dan pengambilan yang gagal.
Data LoCoMo10 membuktikan bahwa RAG tradisional hanya mencapai tingkat penyelesaian tugas 35-44% sambil menggunakan 24-51 juta token input. OpenViking menggantikan penyimpanan vektor datar dengan sistem file hierarkis di bawah viking:// dan pemuatan L0/L1/L2, menghasilkan 52% penyelesaian tugas dengan konsumsi token 91% lebih rendah.
💡 Tips: Pengguna Apidog yang membangun agen pengujian API dapat mengintegrasikan OpenViking untuk menjaga konteks antar eksekusi tes, mengingat preferensi lingkungan, dan menyimpan dokumentasi API untuk pengambilan semantik.
Panduan ini membahas cara OpenViking mengatasi fragmentasi konteks, demonstrasi model L0/L1/L2, dan cara menerapkan server dalam waktu singkat.
Masalah Konteks Agen
Agen AI menghadapi tantangan konteks unik yang tidak dialami aplikasi tradisional. Contoh: agen penguji API perlu melacak preferensi pengguna, konteks proyek, pola alat, dan riwayat tugas selama berhari-hari.
RAG tradisional menyimpan semua ini dalam basis data vektor datar, menghasilkan fragmentasi, tanpa struktur, dan tidak ada visibilitas apa yang terlewat.
Lima Tantangan Utama
OpenViking mengidentifikasi masalah inti berikut:
| Tantangan | RAG Tradisional | Solusi OpenViking |
|---|---|---|
| Konteks Terfragmentasi | Memori, sumber daya, keterampilan disimpan terpisah | Sistem file terpadu di bawah viking://
|
| Permintaan Meningkat | Tugas panjang → konteks masif | Pemuatan hierarkis L0/L1/L2, token -91% |
| Pengambilan Buruk | Pencarian vektor tanpa tampilan global | Pengambilan rekursif direktori + analisis intensi |
| Tidak Dapat Diamati | Rantai pengambilan kotak hitam | Jejak pencarian divisualisasikan untuk debugging |
| Iterasi Terbatas | Hanya riwayat percakapan pengguna | Manajemen sesi otomatis dengan 6 kategori memori |
Pendekatan: dari "simpan semua, ambil samar" menjadi "strukturkan dan ambil tepat".
Apa Itu OpenViking?
OpenViking adalah basis data konteks open source untuk agen AI (lisensi Apache 2.0).
Semua konteks diatur dalam sistem file virtual di bawah URI viking://:
viking://
├── resources/ # Pengetahuan eksternal: dokumen, kode, web
├── user/ # Preferensi pengguna, memori
└── agent/ # Keterampilan, memori tugas, instruksi
Agen dapat:
- Navigasi:
ls viking://resources/my_project/docs/ - Pencarian semantik:
find "metode otentikasi" - Membaca konten:
read viking://resources/docs/auth.md - Ringkasan cepat:
abstract viking://resources/docs/
Fitur Utama 1: Paradigma Sistem File
Tiga Jenis Konteks
| Tipe | Tujuan | Siklus Hidup | Inisiatif |
|---|---|---|---|
| Sumber Daya | Pengetahuan eksternal (dokumen, dll) | Jangka panjang | Pengguna |
| Memori | Preferensi, pengalaman | Jangka panjang | Agen |
| Keterampilan | Alat yang dapat dipanggil | Jangka panjang | Agen |
Contoh struktur direktori:
-
viking://resources/: Dokumen, repositori kode -
viking://user/memories/: Preferensi pengguna, peristiwa -
viking://agent/skills/: Definisi alat, MCP
API Mirip Unix
from openviking import OpenViking
client = OpenViking(path="./data")
results = client.find("otentikasi pengguna")
contents = client.ls("viking://resources/")
doc = client.read("viking://resources/docs/auth.md")
abstract = client.abstract("viking://resources/docs/")
overview = client.overview("viking://resources/docs/")
API tersedia via SDK Python atau HTTP server, integrasi mudah ke agent framework apa pun.
Fitur Utama 2: Pemuatan Konteks Hierarkis L0/L1/L2
OpenViking otomatis membagi konteks menjadi 3 lapisan:
| Lapisan | Nama | File | Batas Token | Tujuan |
|---|---|---|---|---|
| L0 | Abstrak | .abstract.md | ~100 | Pencarian vektor, filter |
| L1 | Ikhtisar | .overview.md | ~2k | Navigasi, peringkat ulang |
| L2 | Detail | File asli | Tak terbatas | Konten penuh, on-demand |
Cara Kerja
- Menguraikan dokumen → teks
- Membangun struktur direktori AGFS
- Mengantrekan proses semantik async
- Menghasilkan L0/L1 secara bottom-up
Contoh struktur:
viking://resources/my_project/
├── .abstract.md # L0
├── .overview.md # L1
├── docs/
│ ├── auth.md # L2
Dampak Anggaran Token
# Tradisional: muat semua (50k token)
full_docs = retrieve_all("otentikasi")
# OpenViking: mulai dari L1, lanjut ke L2 bila perlu
overview = client.overview("viking://resources/docs/auth/")
if needs_more_detail(overview):
content = client.read("viking://resources/docs/auth/oauth.md")
Terbukti menghemat 91% token input, tingkat penyelesaian tugas +43%.
Fitur Utama 3: Pengambilan Rekursif Direktori
OpenViking menggunakan strategi pengambilan rekursif direktori lima langkah:
1. Analisis Intensi
2. Penempatan Awal (direktori skor tinggi)
3. Eksplorasi dalam direktori
4. Penelusuran rekursif subdirektori
5. Agregasi & peringkat hasil
Contoh proses pengambilan:
- Analisis kueri "bagaimana cara mengautentikasi pengguna?"
- Temukan direktori skor tinggi:
viking://resources/docs/auth/ - Eksplorasi file:
oauth.md,jwt.md - Rekursif ke subdirektori jika ada
- Agregasi hasil dengan jejak pengambilan
Fitur Utama 4: Jejak Pengambilan Visual
Pengambilan OpenViking dapat diamati secara penuh, memudahkan debugging:
Jejak Pengambilan untuk: "penyegaran token OAuth"
├── viking://resources/docs/
│ ├── [SKOR: 0.45] .abstract.md: dilewati
│ └── [SKOR: 0.89] auth/: terpilih
│ ├── [SKOR: 0.92] oauth.md: DIKEMBALIKAN
│ └── [SKOR: 0.85] providers/google.md: DIKEMBALIKAN
Jejak ini memperlihatkan jalur pencarian dan alasan file terpilih/dilewati.
Fitur Utama 5: Manajemen Sesi Otomatis
OpenViking memiliki loop iterasi memori otomatis. Setiap sesi percakapan dapat diekstrak menjadi memori, memperkaya pengetahuan agen.
Enam Kategori Memori
| Kategori | Pemilik | Lokasi | Deskripsi | Update |
|---|---|---|---|---|
| profil | pengguna | user/memories/.overview.md | Info dasar | Bisa |
| preferensi | pengguna | user/memories/preferences/ | Preferensi topik | Bisa |
| entitas | pengguna | user/memories/entities/ | Orang/proyek/org | Bisa |
| peristiwa | pengguna | user/memories/events/ | Keputusan/pencapaian | Tidak |
| kasus | agen | agent/memories/cases/ | Kasus dipelajari | Tidak |
| pola | agen | agent/memories/patterns/ | Pola dipelajari | Tidak |
Contoh Penggunaan
session = client.session()
await session.add_message("user", [{"type": "text", "text": "Saya lebih suka mode gelap di UI"}])
await session.add_message("assistant", [{"type": "text", "text": "Baik, akan saya gunakan mode gelap."}])
await session.add_usage({"tool": "screenshot", "parameters": {"theme": "dark"}, "result": "success"})
await session.commit() # Memicu ekstraksi memori
Gambaran Umum Arsitektur
Penyimpanan Dua Lapisan
| Lapisan | Teknologi | Penyimpanan |
|---|---|---|
| AGFS | File system custom | Konten L0/L1/L2, multimedia, relasi |
| Indeks Vektor | DB Vektor | URI, embedding, metadata (tanpa file) |
Semua pembacaan konten dilakukan via AGFS, indeks vektor hanya untuk referensi ringan.
Mulai Cepat: Deploy Server OpenViking
Prasyarat
- Python 3.10+
- Go 1.22+ (AGFS)
- C++ Compiler (GCC 9+ / Clang 11+)
- OS: Linux/macOS/Windows
Langkah 1: Instal OpenViking
pip install openviking --upgrade --force-reinstall
Opsional: CLI Rust
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash
Langkah 2: Konfigurasi Model
Buat file ~/.openviking/ov.conf:
{
"storage": {
"workspace": "/home/nama-anda/openviking_workspace"
},
"embedding": {
"dense": {
"api_base": "https://api.openai.com/v1",
"api_key": "kunci-api-openai-anda",
"provider": "openai",
"dimension": 3072,
"model": "text-embedding-3-large"
}
},
"vlm": {
"api_base": "https://api.openai.com/v1",
"api_key": "kunci-api-openai-anda",
"provider": "openai",
"model": "gpt-4o"
}
}
| Penyedia | Model Embedding | Model 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, dll. |
Langkah 3: Jalankan Server
openviking-server
Atau background:
nohup openviking-server > /data/log/openviking.log 2>&1 &
Langkah 4: Tambahkan Sumber Daya
# CLI Rust
ov add-resource https://docs.example.com/api-guide.pdf
# SDK Python
from openviking import OpenViking
client = OpenViking(path="./data")
client.add_resource("https://docs.example.com/api-guide.pdf")
Langkah 5: Pencarian & Pengambilan
ov find "metode otentikasi"
ov ls viking://resources/
ov tree viking://resources/docs -L 2
ov grep "OAuth" --uri viking://resources/docs/
Langkah 6: Aktifkan VikingBot (Opsional)
pip install "openviking[bot]"
openviking-server --with-bot
ov chat
Tolok Ukur Kinerja
| Sistem | Penyelesaian | Token Masukan |
|---|---|---|
| OpenClaw (memori asli) | 35.65% | 24.6M |
| OpenClaw + LanceDB | 44.55% | 51.6M |
| OpenClaw + OpenViking | 52.08% | 4.3M |
- Peningkatan 43% dari memori asli, token -91%
- Peningkatan 17% dari LanceDB, token -92%
- Pengambilan hierarkis menemukan konteks lebih relevan, token lebih hemat
Integrasi OpenViking dengan Apidog
Pengguna Apidog dapat memanfaatkan OpenViking untuk menjaga konteks percakapan, mengimpor dokumentasi API, dan menyimpan preferensi pengguna.
Langkah 1: Deploy Server OpenViking
Ikuti langkah mulai cepat di atas.
Langkah 2: Impor Dokumentasi API Apidog
ov add-resource https://docs.apidog.com/overview?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation
ov add-resource https://docs.apidog.com/api-testing?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation
Langkah 3: Simpan Preferensi Pengguna
from openviking import OpenViking
client = OpenViking(path="./apidog-agent-data")
session = client.session()
await session.add_message("user", [{
"type": "text",
"text": "Selalu gunakan lingkungan staging untuk tes API"
}])
await session.commit()
Langkah 4: Kueri Konteks Selama Pengujian
results = client.find("endpoint otentikasi")
for ctx in results.resources:
print(f"Ditemukan: {ctx.uri}")
prefs = client.find("preferensi lingkungan staging", target_uri="viking://user/memories/")
Langkah 5: Integrasi ke Kerangka Agent
# SDK Python
from openviking import OpenViking
client = OpenViking(path="./data")
# API HTTP
import httpx
response = httpx.post(
"http://localhost:1933/api/v1/search/find",
json={"query": "endpoint otentikasi"},
headers={"X-API-Key": "kunci-api-anda"}
)
Teknik Lanjutan & Praktik Terbaik
Tips Pro
-
Hangatkan Konteks: Muat L0/L1 saat non-peak untuk mengurangi latensi.
ov add-resource https://docs.example.com --wait -
Kedaluwarsa Otomatis: Arsipkan sesi lama.
await session.archive(max_age_days=7) -
Pantau Kesehatan Indeks:
ov debug stats
Kesalahan yang Harus Dihindari
- Memuat L2 terlalu dini
- Tidak melakukan commit sesi (ekstraksi memori gagal)
- Meletakkan semua sumber daya dalam satu direktori besar
- Mengabaikan jejak pengambilan untuk debugging
Optimasi Kinerja
| Skenario | Rekomendasi |
|---|---|
| Kueri tinggi | Jalankan sebagai HTTP server + connection pooling |
| Dokumen besar | Bagi berdasarkan topik sebelum import |
| Latensi rendah | Pra-generasi L0/L1 |
| Multi-tenant | Workspace terpisah per penyewa |
Praktik Terbaik Keamanan
- Simpan API key di env/secret manager, bukan file config
- Aktifkan HTTPS untuk HTTP server
- Batasi rate pada endpoint publik
- Gunakan API key berbeda untuk dev dan prod
Kasus Penggunaan Dunia Nyata
1. Asisten Pengkodean AI
- Agen menavigasi
viking://resources/my_project/src/ - Mengingat preferensi pengkodean pengguna
- Mengambil dokumentasi relevan saat coding
- Hasil: Pengurangan 67% perilaku lupa, biaya token -43%
2. Agen Dukungan Pelanggan
- Dokumentasi produk di
viking://resources/product/ - Riwayat pelanggan di
viking://user/memories/past_issues/ - Buku pedoman dukungan di
viking://agent/skills/ - Hasil: First contact resolution naik dari 52% → 71%
3. Asisten Penelitian
- Makalah dikategorikan di
viking://resources/papers/nlp/ - Metodologi penelitian sebagai keterampilan
- Ekstraksi temuan otomatis ke memori
- Hasil: Peneliti menemukan makalah 3x lebih cepat
Alternatif & Perbandingan
OpenViking vs Basis Data Vektor Tradisional
| Aspek | RAG Tradisional | OpenViking |
|---|---|---|
| Model Penyimpanan | Potongan vektor datar | Sistem file hierarkis |
| Pengambilan | Kesamaan Top-K | Rekursif + Analisis Intensi |
| Dapat Diamati | Kotak Hitam | Jejak pencarian visual |
| Efisiensi Token | Muat semua/potong | L0/L1/L2 progresif |
| Iterasi Memori | Manual/tidak ada | Sesi otomatis |
| Jenis Konteks | Hanya dokumen | Sumber daya, memori, keterampilan |
| Debugging | Tebak-tebakan | Log penelusuran direktori |
OpenViking vs Memori LangChain
| Aspek | Memori LangChain | OpenViking |
|---|---|---|
| Persistensi | Buffer percakapan | Sistem file L0/L1/L2 |
| Skalabilitas | Dibatasi window | Hierarkis, tanpa batas |
| Pengambilan | Linier | Rekursif + Semantik |
| Jenis Memori | Buffer tunggal | 6 kategori memori |
Kapan Memilih Alternatif
- Vektor tradisional: Latensi <100ms, pencarian sederhana, pipeline RAG sudah stabil
- OpenViking: Agen percakapan panjang, konteks multi-jenis, penghematan token penting, debugging pengambilan
Perbandingan dengan RAG Tradisional
| Aspek | RAG Tradisional | OpenViking |
|---|---|---|
| Model Penyimpanan | Potongan vektor datar | Sistem file hierarkis |
| Pengambilan | Kesamaan Top-K | Rekursif + Analisis Intensi |
| Dapat Diamati | Kotak Hitam | Jejak pencarian visual |
| Efisiensi Token | Muat semua/potong | L0/L1/L2 progresif |
| Iterasi Memori | Manual/tidak ada | Sesi otomatis |
| Jenis Konteks | Hanya dokumen | Multi-jenis |
| Debugging | Tebak-tebakan | Log penelusuran direktori |
Penerapan Produksi
Jalankan OpenViking sebagai HTTP service mandiri.
Infrastruktur Direkomendasikan
- Cloud: Volcengine ECS / setara
- OS: veLinux/Ubuntu 22.04+
- Penyimpanan: SSD untuk AGFS
- Jaringan: Latensi rendah ke API model
Keamanan
- Simpan API key di env/secret manager
- Aktifkan otentikasi & HTTPS pada endpoint
- Batasi rate untuk publik
Pemantauan
{
"log": {
"level": "INFO",
"output": "file",
"path": "/var/log/openviking/server.log"
}
}
Pantau: antrean pemrosesan semantik, latensi pencarian, operasi AGFS, ekstraksi memori.
Keterbatasan & Pertimbangan
Keterbatasan Saat Ini
- SDK utama Python, bahasa lain via HTTP
- Butuh model VLM & embedding eksternal
- Paradigma sistem file baru, perlu adaptasi
- Masih tahap awal, API bisa berubah
Kapan Menggunakan OpenViking
Cocok:
- Agen percakapan panjang, butuh memori
- Konteks multi-jenis (dokumen, preferensi, alat)
- Butuh observabilitas & debugging
- Optimasi token penting
Pertimbangkan alternatif jika:
- QA satu kali/sederhana
- Pipeline RAG sudah stabil
- Latensi di bawah 100ms sangat penting
Jalan ke Depan
OpenViking masih tahap awal (v0.1.x, awal 2025). Roadmap:
- Multi-tenant: workspace terisolasi
- Analitik lanjutan: metrik pengambilan, dashboard memori
- Ekosistem plugin: integrasi agent framework
- Edge deployment: mode lightweight
- Dukungan MCP native
Proyek open source, kontribusi komunitas terbuka. Lihat dokumentasi resmi.
Kesimpulan
OpenViking mengubah paradigma manajemen konteks agen AI: dari potongan datar ke sistem file hierarkis, fragmentasi hilang, efisiensi token meningkat, dan debugging pengambilan menjadi mudah.
Poin Penting
-
Sistem file menyatukan konteks: Semua di bawah URI
viking:// - Pemuatan L0/L1/L2 hemat token: -91% token, progresif
- Pengambilan rekursif akurat: Kunci direktori dulu, eksplorasi konten belakangan
- Jejak visual: Mudah debugging
- Manajemen sesi otomatis: Agen belajar dari setiap percakapan



Top comments (0)