ÖNEMLİ KISIM (TL;DR)
OpenViking, yapay zeka aracıları için düz vektör depolamasını dosya sistemi paradigmasıyla değiştiren açık kaynaklı bir bağlam veritabanıdır. Bağlamı (anılar, kaynaklar, beceriler) `viking://` URI'ları altında üç katman halinde düzenler: L0 (~100 jeton), L1 (~2k jeton), L2 (tam içerik). Karşılaştırmalı testler, geleneksel RAG'a göre %91 jeton maliyet azaltımı ve %43 daha iyi görev tamamlama gösteriyor.
Giriş
Yapay zeka aracınız bir şeyleri sürekli unutuyor. Aynı API bitiş noktasını iki kez istedi. Hazırlık ortamı tercihinizi görmezden geldi. Dün hangi testlerin geçtiğini unuttu.
Günümüzde aracı geliştirmenin gerçekliği budur. Çoğu ekip RAG işlem hatlarını, vektör veritabanlarını ve özel bellek sistemlerini yamalıyor. Sonuç: parçalanmış bağlam, patlayan jeton maliyetleri ve sessizce başarısız olan alma işlemleri.
Veriler bunu destekliyor. LoCoMo10 veri kümesi kullanılarak yapılan karşılaştırmalı testlerde, geleneksel RAG sistemleri %35-44 görev tamamlama oranlarına ulaşırken 24-51 milyon girdi jetonu harcadı.
OpenViking farklı bir yaklaşım benimsiyor. ByteDance'in OpenViking ekibi tarafından oluşturulan bu sistem, düz vektör depolamasını bir dosya sistemi paradigmasıyla değiştiriyor. Tüm bağlam, hiyerarşik L0/L1/L2 yüklemesiyle `viking://` URI'ları altında yer alıyor. Sonuç: %52 görev tamamlama ve %91 daha az jeton.
Bu kılavuzda, OpenViking'in bağlam parçalanmasını nasıl çözdüğünü öğrenecek, L0/L1/L2 modelini uygulamalı olarak görecek ve ilk sunucunuzu 15 dakikada dağıtacaksınız.
Aracı Bağlamı Sorunu
Yapay zeka aracıları, geleneksel uygulamaların hiç karşılaşmadığı bağlam sorunlarıyla karşı karşıyadır.
Geliştiricilerin API'leri test etmesine yardımcı olan bir aracıyı düşünün. Bir hafta içinde şunları takip etmesi gerekir:
- Kullanıcı tercihleri ("hazırlık ortamı", "Python yerine curl")
- Proje bağlamı (bitiş noktaları, kimlik doğrulama yöntemleri, geçmiş test sonuçları)
- Araç kalıpları (hangi bitiş noktaları başarısız oluyor, yaygın şema hataları)
- Görev geçmişi (ne test edildi, hangi hatalar ortaya çıktı)
Geleneksel RAG bunu bir vektör veritabanında düz parçalar halinde depolar. Sorguladığınızda, yapı, hiyerarşi olmayan ve neyin kaçırıldığına dair görünürlük sağlamayan en benzer K parçasını alırsınız.
Beş Temel Zorluk
OpenViking, aracı bağlam yönetimindeki beş temel sorunu tanımlar:
| Zorluk | Geleneksel RAG | OpenViking Çözümü |
|---|---|---|
| Parçalanmış Bağlam | Anılar, kaynaklar, beceriler ayrı ayrı depolanır | viking:// altında birleşik dosya sistemi paradigması |
| Yükselen Talep | Uzun görevler büyük bağlam üretir | L0/L1/L2 hiyerarşik yükleme jetonları %91 azaltır |
| Kötü Alma | Düz vektör araması küresel görüşten yoksundur | Niyet analizi ile dizin özyinelemeli alma |
| Gözlemlenemez | Kara kutu alma zincirleri | Hata ayıklama için görselleştirilmiş arama yörüngeleri |
| Sınırlı Yineleme | Yalnızca kullanıcı etkileşim geçmişi | 6 bellek kategorisiyle otomatik oturum yönetimi |
Bu, "her şeyi depola, belirsizce al"dan "her şeyi yapılandır, hassas bir şekilde al"a doğru bir geçişi temsil eder.
OpenViking Nedir?
OpenViking, ByteDance'in OpenViking ekibi tarafından Apache 2.0 altında oluşturulan, yapay zeka aracıları için açık kaynaklı bir bağlam veritabanıdır.

Tüm bağlamı sanal bir dosya sisteminde birleştirir. Anılar, kaynaklar ve beceriler, her biri benzersiz bir URI'ye sahip `viking://` altındaki dizinlere eşlenir.
viking://
├── resources/ # Harici bilgi: belgeler, kod, web sayfaları
│ ├── my_project/
│ │ ├── docs/
│ │ │ ├── api/
│ │ │ └── tutorials/
│ │ └── src/
│ └── ...
├── user/ # Kullanıcıya özel: tercihler, alışkanlıklar
│ └── memories/
│ ├── preferences/
│ │ ├── writing_style
│ │ └── coding_habits
│ └── ...
└── agent/ # Aracı yetenekleri: beceriler, görev anıları
├── skills/
│ ├── search_code
│ ├── analyze_data
│ └── ...
├── memories/
└── instructions/
Aracılar doğrudan bağlam manipülasyonu yetenekleri kazanır:
- `ls viking://resources/my_project/docs/` ile dizinlerde gezinin
- `find "kimlik doğrulama yöntemleri"` ile anlamsal olarak arama yapın
- `read viking://resources/docs/auth.md` ile tam içeriği okuyun
- `abstract viking://resources/docs/` ile hızlı özetler alın
Bunu, tüm sabit diskinizi aramak ile dosyanın tam olarak hangi dizinde olduğunu bilmek arasındaki fark olarak düşünün.
Temel Özellik 1: Dosya Sistemi Yönetim Paradigması
Dosya sistemi paradigması, tüm bağlam türlerini tek bir model altında birleştirerek bağlam parçalanmasını çözer.
Üç Bağlam Türü
| Tür | Amaç | Yaşam Döngüsü | Girişim |
|---|---|---|---|
| Kaynak | Harici bilgi (belgeler, kod, SSS) | Uzun vadeli, statik | Kullanıcı ekler |
| Bellek | Aracının bilişimi (tercihler, deneyimler) | Uzun vadeli, dinamik | Aracı çıkarır |
| Beceri | Çağrılabilir yetenekler (araçlar, MCP) | Uzun vadeli, statik | Aracı çağırır |
Her tür kendi dizininde yaşar:
- `viking://resources/`: Ürün kılavuzları, kod depoları, belgeler
- `viking://user/memories/`: Kullanıcı tercihleri, varlık anıları, olaylar
- `viking://agent/skills/`: Araç tanımları, MCP yapılandırmaları
- `viking://agent/memories/`: Öğrenilmiş kalıplar, vaka çalışmaları
Unix Benzeri API
OpenViking tanıdık komut satırı işlemleri sağlar:
from openviking import OpenViking
client = OpenViking(path="./data")
# Tüm bağlam türlerinde anlamsal arama
results = client.find("kullanıcı kimlik doğrulaması")
# Dizin içeriğini listele
contents = client.ls("viking://resources/")
# Tam içeriği oku
doc = client.read("viking://resources/docs/auth.md")
# Hızlı özet al (L0 katmanı)
abstract = client.abstract("viking://resources/docs/")
# Detaylı genel bakış al (L1 katmanı)
overview = client.overview("viking://resources/docs/")
API, Python SDK veya HTTP sunucusu aracılığıyla çalışır ve herhangi bir aracı çerçevesiyle uyumludur.
Temel Özellik 2: L0/L1/L2 Hiyerarşik Bağlam Yükleme
Büyük bağlamı istemlere sıkıştırmak pahalı ve hataya açıktır. OpenViking tüm bağlamı otomatik olarak üç hiyerarşik katmana işler:
| Katman | Ad | Dosya | Jeton Sınırı | Amaç |
|---|---|---|---|---|
| L0 | Özet | .abstract.md |
~100 jeton | Vektör araması, hızlı filtreleme |
| L1 | Genel Bakış | .overview.md |
~2k jeton | Yeniden sıralama, içerik gezintisi |
| L2 | Detay | Orijinal dosyalar | Sınırsız | Tam içerik, isteğe bağlı yükleme |
Nasıl Çalışır
Bir kaynak (bir PDF belge dosyası gibi) eklediğinizde, OpenViking:
- Belgeyi metne ayrıştırır (henüz LLM çağrısı yok)
- AGFS depolamasında bir dizin ağacı yapısı oluşturur
- Anlamsal işlemeyi eşzamansız olarak sıraya alır
- L0 özetlerini ve L1 genel bakışlarını aşağıdan yukarıya oluşturur
Sonuç hiyerarşik bir yapıdır:
viking://resources/my_project/
├── .abstract.md # L0: "Kimlik doğrulama, bitiş noktaları, hız limitlerini kapsayan API belgeleri"
├── .overview.md # L1: Bölüm gezintisi içeren detaylı özet
├── docs/
│ ├── .abstract.md # Her dizinin L0/L1'i vardır
│ ├── .overview.md
│ ├── auth.md # L2: Tam içerik
│ ├── endpoints.md
│ └── rate-limits.md
└── src/
└── ...
Jeton Bütçesi Etkisi
Bu hiyerarşi önemli maliyet tasarrufu sağlar:
# Geleneksel RAG: Tüm içeriği yükle
full_docs = retrieve_all("kimlik doğrulama") # 50k jeton
# OpenViking: L1 ile başla, sadece gerektiğinde L2'yi yükle
overview = client.overview("viking://resources/docs/auth/") # 2k jeton
if needs_more_detail(overview):
content = client.read("viking://resources/docs/auth/oauth.md") # Belirli bir L2'yi yükle
Karşılaştırmalı testlerde, bu yaklaşım, geleneksel RAG'a kıyasla girdi jetonu maliyetlerini %91 oranında azaltırken görev tamamlama oranlarını %43 oranında artırdı.
Temel Özellik 3: Dizin Özyinelemeli Alma
Tekli vektör araması karmaşık sorgularla mücadele eder. OpenViking, dizin özyinelemeli bir alma stratejisi uygular:
Beş Adımlı Süreç
1. Niyet Analizi
↓
2. İlk Konumlandırma (yüksek puanlı dizinleri bul)
↓
3. Gelişmiş Keşif (dizinler içinde ara)
↓
4. Özyinelemeli İniş (alt dizinlere in)
↓
5. Sonuç Birleştirme (sıralanmış bağlamları döndür)
Adım 1: Niyet Analizi
“Kullanıcıların kimliğini nasıl doğrularım?” sorgusu şunları belirlemek için analiz edilir:
- Niyet türü: prosedürel nasıl yapılır sorusu
- Ana varlıklar: “kimlik doğrula”, “kullanıcılar”
- Beklenen içerik: kimlik doğrulama kılavuzları, OAuth akışları
Adım 2: İlk Konumlandırma
Vektör araması, yüksek puanlı dizinleri hızlıca bulur:
- `viking://resources/docs/auth/` (puan: 0.92)
- `viking://resources/docs/security/` (puan: 0.78)
Adım 3: Gelişmiş Keşif
En üst dizin içinde, ikincil bir arama belirli dosyaları bulur:
- `viking://resources/docs/auth/oauth.md` (puan: 0.95)
- `viking://resources/docs/auth/jwt.md` (puan: 0.88)
Adım 4: Özyinelemeli İniş
Alt dizinler (örneğin `auth/providers/`) varsa, süreç özyinelemeli olarak tekrarlanır.
Adım 5: Sonuç Birleştirme
Nihai sonuçlar, alma izleri korunarak, alaka düzeyine göre birleştirilir ve sıralanır.
Bu "önce dizini kilitle, sonra içeriği keşfet" stratejisi, yalnızca izole edilmiş parçaları değil, bilginin tam bağlamını anlayarak alma doğruluğunu artırır.
Temel Özellik 4: Görselleştirilmiş Alma İzleri
Geleneksel RAG bir kara kutudur. Alma başarısız olduğunda, bunun bir vektör benzerliği sorunu mu, parçalama sorunu mu yoksa eksik veri mi olduğunu anlayamazsınız.
OpenViking'in dosya sistemi yapısı almayı gözlemlenebilir kılar:
"OAuth jeton yenileme" sorgusu için alma izi:
├── viking://resources/docs/
│ ├── [PUAN: 0.45] .abstract.md: atlandı (düşük alaka düzeyi)
│ └── [PUAN: 0.89] auth/: seçildi (yüksek alaka düzeyi)
│ ├── [PUAN: 0.92] oauth.md: DÖNDÜRÜLDÜ
│ ├── [PUAN: 0.34] jwt.md: atlandı
│ └── [PUAN: 0.78] providers/
│ └── [PUAN: 0.85] google.md: DÖNDÜRÜLDÜ
Bu iz şunları gösterir:
- Hangi dizinlerin ziyaret edildiğini
- Neden belirli dosyaların seçildiğini veya atlandığını
- Alma işleminin tam olarak hangi yolu izlediğini
Hata ayıklama için bu çok değerlidir. Aracının bağlamı yanlış dizinde olduğu, kötü bir L0 özeti olduğu veya puan eşiğinin altına düştüğü için kaçırıp kaçırmadığını görebilirsiniz.
Temel Özellik 5: Otomatik Oturum Yönetimi
OpenViking, yerleşik bir bellek kendi kendine yineleme döngüsüne sahiptir. Her oturumun sonunda, sistem anıları çıkarabilir ve aracının bilgisini otomatik olarak güncelleyebilir.
Altı Bellek Kategorisi
| Kategori | Sahip | Konum | Açıklama | Güncelleme Stratejisi |
|---|---|---|---|---|
| profil | kullanıcı | user/memories/.overview.md |
Temel kullanıcı bilgileri | Eklenebilir |
| tercihler | kullanıcı | user/memories/preferences/ |
Konuya göre tercihler | Eklenebilir |
| varlıklar | kullanıcı | user/memories/entities/ |
Kişiler, projeler, kuruluşlar | Eklenebilir |
| olaylar | kullanıcı | user/memories/events/ |
Kararlar, dönüm noktaları | Güncelleme yok |
| vakalar | aracı | agent/memories/cases/ |
Öğrenilmiş vakalar | Güncelleme yok |
| kalıplar | aracı | agent/memories/patterns/ |
Öğrenilmiş kalıplar | Güncelleme yok |
Bellek Çıkarma Nasıl Çalışır
# Bir oturum başlat
session = client.session()
# Mesajlar ekle (konuşma dönüşleri)
await session.add_message("user", [{"type": "text", "text": "Kullanıcı arayüzünde karanlık modu tercih ederim"}])
await session.add_message("assistant", [{"type": "text", "text": "Anladım. Gelecekteki tüm ekran görüntüleri için karanlık modu kullanacağım."}])
# Araç kullanımını kaydet
await session.add_usage({
"tool": "screenshot",
"parameters": {"theme": "dark"},
"result": "success"
})
# Oturumu commit et: bellek çıkarmayı tetikler
await session.commit()
Commit edildiğinde, OpenViking:
- Oturumu sıkıştırır (son N dönüşü tutar, eskileri arşivler)
- LLM analizi kullanarak anıları çıkarır
- Uygun bellek dizinlerini günceller
- Yeni bellek içeriği için L0/L1 oluşturur
Bu, aracılar kullanıldıkça daha akıllı hale gelir: kullanıcı tercihlerini öğrenirler, görev deneyimi biriktirirler ve zamanla karar verme yeteneklerini geliştirirler.
Mimariye Genel Bakış
OpenViking'in sistem mimarisi, farklı katmanlar arasında sorumlulukları ayırır:

Çift Katmanlı Depolama
OpenViking, içeriği indeksten ayırır:
| Katman | Teknoloji | Depolar |
|---|---|---|
| AGFS | Özel dosya sistemi | L0/L1/L2 içerik, multimedya dosyaları, ilişkiler |
| Vektör İndeksi | Vektör DB | URI'ler, gömme'ler, meta veriler (dosya içeriği yok) |
Bu ayrım şunları sağlar:
- Tüm içerik okumaları tek bir kaynaktan (AGFS) gelir
- Vektör indeksi yalnızca hafif referansları depolar
- Büyük metin bloklarının vektör depolamasında tekrarlanması olmaz
Hızlı Başlangıç: İlk OpenViking Sunucunuzu Dağıtın
Önkoşullar
- Python: 3.10 veya üzeri
- Go: 1.22+ (AGFS bileşenleri için)
- C++ Derleyicisi: GCC 9+ veya Clang 11+
- İşletim Sistemi: Linux, macOS veya Windows
Adım 1: OpenViking'i Yükleyin
pip install openviking --upgrade --force-reinstall
Terminal erişimi için Rust CLI'yi isteğe bağlı olarak yükleyin:
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash
Adım 2: Modelleri Yapılandırın
OpenViking iki model yeteneği gerektirir:
- VLM Modeli: Görüntü ve içerik anlama için
- Gömme Modeli: Vektörleştirme ve anlamsal arama için
`~/.openviking/ov.conf` oluşturun:
{
"storage": {
"workspace": "/home/kullanıcı_adınız/openviking_çalışma_alanı"
},
"log": {
"level": "INFO",
"output": "stdout"
},
"embedding": {
"dense": {
"api_base": "https://api.openai.com/v1",
"api_key": "sizin-openai-api-anahtarınız",
"provider": "openai",
"dimension": 3072,
"model": "text-embedding-3-large"
},
"max_concurrent": 10
},
"vlm": {
"api_base": "https://api.openai.com/v1",
"api_key": "sizin-openai-api-anahtarınız",
"provider": "openai",
"model": "gpt-4o",
"max_concurrent": 100
}
}
Desteklenen Sağlayıcılar:
| Sağlayıcı | Gömme Modelleri | VLM Modelleri |
|---|---|---|
| volcengine | doubao-embedding-vision | doubao-seed-2.0-pro |
| openai | text-embedding-3-large | gpt-4o, gpt-4-vision |
| litellm | LiteLLM proxy aracılığıyla | Claude, Gemini, DeepSeek, Qwen, Ollama, vLLM |
LiteLLM desteği, Anthropic, Google, yerel Ollama modelleri veya herhangi bir OpenAI uyumlu uç noktayı kullanabileceğiniz anlamına gelir.
Adım 3: Sunucuyu Başlatın
openviking-server
Veya arka planda çalıştırın:
nohup openviking-server > /data/log/openviking.log 2>&1 &
Adım 4: İlk Kaynağınızı Ekleyin
# Rust CLI kullanarak
ov add-resource https://docs.example.com/api-guide.pdf
# Veya Python SDK kullanarak
from openviking import OpenViking
client = OpenViking(path="./data")
client.add_resource("https://docs.example.com/api-guide.pdf")
Adım 5: Ara ve Al
# Anlamsal işlemeyi bekle, sonra ara
ov find "kimlik doğrulama yöntemleri"
# Dizin içeriğini listele
ov ls viking://resources/
# Dizin ağacını görüntüle
ov tree viking://resources/docs -L 2
# Belirli içeriği grep ile ara
ov grep "OAuth" --uri viking://resources/docs/
Adım 6: VikingBot'u Etkinleştir (İsteğe Bağlı)
VikingBot, OpenViking üzerine kurulu bir yapay zeka aracı çerçevesidir:
pip install "openviking[bot]"
# Bot etkinleştirilmiş sunucuyu başlat
openviking-server --with-bot
# Başka bir terminalde, etkileşimli sohbeti başlat
ov chat
Performans Karşılaştırmaları
OpenViking, LoCoMo10 veri kümesi (1.540 uzun menzilli diyalog vakası) kullanılarak geleneksel RAG (LanceDB) ve yerel bellek sistemlerine karşı karşılaştırmalı olarak test edildi.
Görev Tamamlama Oranları
| Sistem | Tamamlama Oranı | Girdi Jetonları |
|---|---|---|
| OpenClaw (yerel bellek) | %35,65 | 24,6M |
| OpenClaw + LanceDB | %44,55 | 51,6M |
| OpenClaw + OpenViking | %52,08 | 4,3M |
Temel Bulgular
- Yerel belleğe göre %43 iyileşme ve %91 jeton azaltımı
- LanceDB'ye göre %17 iyileşme ve %92 jeton azaltımı
- OpenViking'in hiyerarşik alma, daha az jeton tüketirken daha ilgili bağlamı buldu
Bu sonuçlar, açık kaynaklı bir yapay zeka kodlama asistanı olan OpenClaw ile OpenViking'i bir eklenti olarak entegre etmekten elde edilmiştir. Test veri kümesi, bellek tutmanın kritik olduğu uzun menzilli diyaloglara dayanıyordu.
OpenViking'i Apidog ile Entegre Etme
API testi için yapay zeka ajanları geliştiren Apidog kullanıcıları, konuşma bağlamını sürdürmek, API belgelerini depolamak ve oturumlar arası kullanıcı tercihlerini hatırlamak için OpenViking'den yararlanabilirler.

Adım 1: OpenViking Sunucusunu Kurun
Tercih ettiğiniz VLM ve gömme modelleriyle OpenViking'i dağıtmak için yukarıdaki hızlı başlangıcı takip edin.
Adım 2: Apidog API Belgelerini İçe Aktarın
# Apidog proje belgelerinizi bir kaynak olarak ekleyin
ov add-resource https://docs.apidog.com/overview
ov add-resource https://docs.apidog.com/api-testing
Bu, Apidog belgelerini otomatik L0/L1/L2 işleme ile `viking://resources/` içine aktarır.
Adım 3: Kullanıcı Tercihlerini Depolayın
from openviking import OpenViking
client = OpenViking(path="./apidog-agent-data")
session = client.session()
# Kullanıcının varsayılan ortam tercihini kaydet
await session.add_message("user", [{
"type": "text",
"text": "API testleri için her zaman hazırlık ortamını kullan"
}])
await session.commit() # Tercih belleğini otomatik olarak çıkarır
Adım 4: Test Sırasında Bağlamı Sorgulayın
# Testleri çalıştırmadan önce ilgili API uç noktalarını bul
results = client.find("kimlik doğrulama uç noktaları")
for ctx in results.resources:
print(f"Bulunan: {ctx.uri}")
# Kullanıcının ortam tercihini al
prefs = client.find("hazırlık ortamı tercihi", target_uri="viking://user/memories/")
Adım 5: Aracı Çerçevenize Bağlanın
OpenViking hem Python SDK hem de HTTP API sunar:
# Python SDK
from openviking import OpenViking
client = OpenViking(path="./data")
# Veya HTTP API
import httpx
response = httpx.post(
"http://localhost:1933/api/v1/search/find",
json={"query": "kimlik doğrulama uç noktaları"},
headers={"X-API-Key": "sizin-api-anahtarınız"}
)
Gelişmiş Teknikler ve En İyi Uygulamalar
Üretim Dağıtımları İçin Profesyonel İpuçları
1. Sık Erişilen Bağlamı Önceden Hazırla
Aracı işlemleri sırasında gecikmeyi azaltmak için kritik belgeleri düşük yoğunluklu saatlerde L0/L1'e yükleyin.
# Anlamsal işlemeyi hemen tetikle
ov add-resource https://docs.example.com --wait
2. Bağlam Süresi Sonunu Uygulayın
Eski oturum verileri için otomatik temizleme ayarlayın:
# 7 günden eski oturumları arşivle
await session.archive(max_age_days=7)
3. Vektör İndeksi Sağlığını İzleyin
İndeks boyutunu ve sorgu gecikmesini takip edin:
ov debug stats
Kaçınılması Gereken Yaygın Hatalar
- L2 içeriğini erken yükleme: Jetonlardan tasarruf etmek için her zaman L0/L1 ile başlayın
- Oturum commit'lerini atlamak: Bellek çıkarma yalnızca commit edildiğinde gerçekleşir
- Tek dizinleri aşırı yüklemek: Büyük kaynakları konuya dayalı alt dizinlere ayırın
- Alma izlerini göz ardı etmek: Kötü sonuçları hata ayıklamak için görselleştirilmiş izleri kullanın
Performans Optimizasyonu
| Senaryo | Öneri |
|---|---|
| Yüksek sorgu hacmi | OpenViking'i bağlantı havuzuyla HTTP sunucusu olarak çalıştırın |
| Büyük belgeler | İçe aktarmadan önce konuya dayalı parçalara ayırın |
| Düşük gecikme ihtiyaçları | Sık erişilen içerik için L0/L1'i önceden oluşturun |
| Çok kullanıcılı kurulum | Her kullanıcı için ayrı çalışma alanları kullanın |
Güvenlik En İyi Uygulamaları
- API anahtarlarını ortam değişkenlerinde veya gizli yöneticilerde saklayın (asla yapılandırma dosyalarında değil)
- Tüm HTTP sunucu dağıtımları için HTTPS'yi etkinleştirin
- Herkese açık uç noktalarda hız sınırlaması uygulayın
- Geliştirme ve üretim için ayrı API anahtarları kullanın
Gerçek Dünya Kullanım Durumları
1. Yapay Zeka Kodlama Asistanları
Bir geliştirme ekibi, OpenViking'i dahili kodlama asistanlarıyla entegre etti. Aracı artık şunları yapabiliyor:
- `viking://resources/my_project/src/` aracılığıyla proje yapısında geziniyor
- Kullanıcı kodlama tercihlerini (adlandırma kuralları, test çerçeveleri) hatırlıyor
- Kod oluşturma sırasında ilgili API belgelerini alıyor
Sonuç: "Unutkan" aracı davranışlarında %67 azalma, %43 jeton maliyeti tasarrufu.
2. Müşteri Destek Temsilcileri
Bir SaaS şirketi, destek sohbet botları için OpenViking'i dağıttı:
- Ürün belgeleri `viking://resources/product/` içinde depolandı
- Müşteri konuşma geçmişi `viking://user/memories/past_issues/` içinde
- Destek kılavuzları `viking://agent/skills/` içinde beceri olarak
Sonuç: İlk temasta çözüm oranı %52'den %71'e yükseldi.
3. Araştırma Asistanları
Bir araştırma laboratuvarı, makaleleri ve notları düzenlemek için OpenViking'i kullanır:
- Makaleler konuya göre kategorize edildi (`viking://resources/papers/nlp/`)
- Araştırma metodolojileri beceri olarak depolandı
- Önemli bulguların belleğe otomatik olarak çıkarılması
Sonuç: Araştırmacılar, anlamsal arama ile ilgili makaleleri 3 kat daha hızlı buluyor.
Alternatifler ve Karşılaştırmalar
OpenViking, tek bağlam yönetimi çözümü değildir. Alternatiflerle nasıl karşılaştırıldığı aşağıda açıklanmıştır:
OpenViking ve Geleneksel Vektör Veritabanları
| Yön | Geleneksel RAG (Pinecone, LanceDB) | OpenViking |
|---|---|---|
| Depolama Modeli | Düz vektör parçaları | Hiyerarşik dosya sistemi |
| Alma | En iyi-K benzerliği | Dizin özyinelemeli + niyet analizi |
| Gözlemlenebilirlik | Kara kutu | Görselleştirilmiş arama izleri |
| Jeton Verimliliği | Tümünü yükle veya kırp | L0/L1/L2 aşamalı yükleme |
| Bellek Yinelemesi | Manuel veya yok | Otomatik oturum yönetimi |
| Bağlam Türleri | Yalnızca belgeler | Kaynaklar, anılar, beceriler birleşik |
| Hata Ayıklama | Tahmin | Dizin geçiş günlükleri |
OpenViking ve LangChain Belleği
| Yön | LangChain Belleği | OpenViking |
|---|---|---|
| Kalıcılık | Yalnızca konuşma arabelleği | L0/L1/L2 ile tam dosya sistemi |
| Ölçeklenebilirlik | Bağlam penceresiyle sınırlı | Hiyerarşik yükleme, katı sınır yok |
| Alma | Doğrusal arama | Dizin özyinelemeli + anlamsal |
| Bellek Türleri | Tek arabellek | 6 kategori (profil, tercihler, olaylar vb.) |
Alternatifleri Ne Zaman Düşünmeli?
Geleneksel vektör veritabanlarını şu durumlarda kullanın:
- 100ms altı alma gecikmesine ihtiyacınız varsa
- Kullanım durumunuz basit anahtar kelime aramasıysa
- Zaten ağrısız çalışan bir RAG işlem hattınız varsa
OpenViking'i şu durumlarda kullanın:
- Uzun süreli aracı konuşmaları oluşturuyorsanız
- Çoklu türde bağlama (belgeler + tercihler + araçlar) ihtiyacınız varsa
- Jeton maliyeti optimizasyonu önemliyse
- Gözlemlenebilir, hata ayıklanabilir alma istiyorsanız
Geleneksel RAG ile Karşılaştırma
| Yön | Geleneksel RAG | OpenViking |
|---|---|---|
| Depolama Modeli | Düz vektör parçaları | Hiyerarşik dosya sistemi |
| Alma | En iyi-K benzerliği | Dizin özyinelemeli + niyet analizi |
| Gözlemlenebilirlik | Kara kutu | Görselleştirilmiş arama izleri |
| Jeton Verimliliği | Tümünü yükle veya kırp | L0/L1/L2 aşamalı yükleme |
| Bellek Yinelemesi | Manuel veya yok | Otomatik oturum yönetimi |
| Bağlam Türleri | Yalnızca belgeler | Kaynaklar, anılar, beceriler birleşik |
| Hata Ayıklama | Tahmin | Dizin geçiş günlükleri |
Üretim Dağıtımı
Üretim ortamları için OpenViking'i bağımsız bir HTTP hizmeti olarak çalıştırın:
Önerilen Altyapı
- Bulut: Volcengine ECS veya dengi
- İşletim Sistemi: veLinux veya Ubuntu 22.04+
- Depolama: AGFS için SSD destekli birim
- Ağ: Model API'lerine düşük gecikmeli bağlantı
Güvenlik Hususları
- API anahtarlarını ortam değişkenlerinde veya gizli yöneticide saklayın
- HTTP uç noktaları için kimlik doğrulamayı etkinleştirin
- Tüm istemci-sunucu iletişimi için HTTPS kullanın
- Kötüye kullanımı önlemek için hız sınırlaması uygulayın
İzleme
OpenViking günlük kaydını ve metrikleri destekler:
{
"log": {
"level": "INFO",
"output": "file",
"path": "/var/log/openviking/server.log"
}
}
Şunları izleyin:
- Anlamsal işleme kuyruğu derinliği
- Vektör arama gecikmesi
- AGFS okuma/yazma işlemleri
- Bellek çıkarma başarı oranları
Sınırlamalar ve Hususlar
Mevcut Sınırlamalar
- Python merkezli: Birincil SDK Python'dır; diğer diller HTTP entegrasyonu gerektirir
- Model bağımlılıkları: Harici VLM ve gömme modelleri gerektirir (yerleşik çıkarım yok)
- Öğrenme eğrisi: Dosya sistemi paradigması geleneksel vektör DB'lerinden farklıdır
- Erken aşama: Proje aktif geliştirme aşamasındadır; API'ler değişebilir
OpenViking'i Ne Zaman Kullanmalı?
İyi uyum:
- Bellek gerektiren uzun süreli aracı konuşmaları
- Çoklu türde bağlam (belgeler + tercihler + araçlar)
- Gözlemlenebilir, hata ayıklanabilir alma ihtiyacı
- Jeton maliyeti optimizasyonu önemli
Alternatifleri düşünün:
- Basit tek seferlik Soru-Cevap uygulamaları
- Zaten ağrısız çalışan bir RAG işlem hattınız varsa
- 100ms altı alma gecikmesine ihtiyacınız varsa (OpenViking işlem yükü ekler)
Geleceğe Yönelik Yol Haritası
OpenViking erken geliştirme aşamasındadır (2025 başı itibarıyla sürüm 0.1.x). Yol haritası şunları içerir:
- Çok kullanıcılı destek: Ekipler için izole edilmiş çalışma alanları
- Gelişmiş analitik: Alma kalitesi metrikleri, bellek kullanım panoları
- Eklenti ekosistemi: Popüler aracı çerçeveleriyle önceden oluşturulmuş entegrasyonlar
- Edge dağıtımı: Yerel öncelikli uygulamalar için hafif mod
- Gelişmiş MCP desteği: Yerel Model Bağlam Protokolü entegrasyonu
OpenViking'in arkasındaki ekip aktif olarak topluluk katkıcıları aramaktadır. Proje Apache 2.0 altında açık kaynaklı olup, belgeleri mevcuttur.
Sonuç
OpenViking, yapay zeka aracılarının bağlamı yönetme şeklinde bir değişimi temsil ediyor. Bilgiyi düz parçalar yerine bir dosya sistemi olarak düzenleyerek, geleneksel RAG sistemlerini etkileyen parçalanma, jeton israfı ve kara kutu alma sorunlarını çözüyor.
Ana Çıkarımlar
- Dosya sistemi paradigması bağlamı birleştirir: Tüm anılar, kaynaklar ve beceriler `viking://` URI'ları altında
- L0/L1/L2 yükleme jetonları %91 azaltır: Her şeyi istemlere dökmek yerine aşamalı yükleme
- Dizin özyinelemeli alma doğruluğu artırır: Önce yüksek puanlı dizinleri kilitle, sonra içeriği keşfet
- Görselleştirilmiş izler hata ayıklamayı sağlar: Alma işleminin tam olarak hangi yolları izlediğini görün
- Otomatik oturum yönetimi öğrenmeyi sağlar: Aracılar her konuşmadan anılar çıkarır
