Tóm tắt
OpenViking là cơ sở dữ liệu ngữ cảnh mã nguồn mở dành cho các tác nhân AI, thay thế lưu trữ vector phẳng bằng mô hình hệ thống tệp. Nó tổ chức ngữ cảnh (ký ức, tài nguyên, kỹ năng) dưới các URI viking:// với ba lớp: L0 (~100 token), L1 (~2k token), L2 (nội dung đầy đủ). Thực nghiệm cho thấy giảm 91% chi phí token và tăng hiệu quả hoàn thành tác vụ 43% so với RAG truyền thống.
Giới thiệu
Tác nhân AI thường quên thông tin quan trọng: hỏi lại cùng một endpoint, bỏ qua tùy chọn môi trường, không nhớ bài kiểm tra đã qua. Hầu hết các nhóm đang vá víu RAG, cơ sở dữ liệu vector và hệ thống bộ nhớ rời rạc, dẫn đến ngữ cảnh bị phân mảnh, chi phí token tăng vọt và thất bại truy xuất.
Dữ liệu thực nghiệm (LoCoMo10) cho thấy các hệ thống RAG truyền thống chỉ đạt tỷ lệ hoàn thành tác vụ 35-44% với 24-51 triệu token đầu vào.
OpenViking do ByteDance phát triển, tiếp cận theo cách mới: thay thế lưu trữ vector phẳng bằng hệ thống tệp, tổ chức toàn bộ ngữ cảnh dưới URI viking:// với khả năng tải L0/L1/L2 phân cấp. Kết quả: hoàn thành tác vụ 52% với số token giảm 91%.
💡 Người dùng Apidog xây dựng các tác nhân kiểm thử API có thể tích hợp OpenViking để duy trì ngữ cảnh hội thoại qua các lần chạy kiểm thử, ghi nhớ tùy chọn môi trường của người dùng và lưu trữ tài liệu API để truy xuất ngữ nghĩa.
Hướng dẫn này sẽ giúp bạn hiểu cách OpenViking giải quyết phân mảnh ngữ cảnh, mô hình L0/L1/L2 hoạt động ra sao, và cách triển khai máy chủ đầu tiên trong 15 phút.
Vấn đề ngữ cảnh của tác nhân
Tác nhân AI phải xử lý nhiều loại ngữ cảnh phức tạp:
- Tùy chọn người dùng (ví dụ: “môi trường thử nghiệm”, “curl hơn Python”)
- Ngữ cảnh dự án (endpoint, phương thức xác thực, lịch sử kiểm thử)
- Công cụ và kỹ năng (endpoint thường lỗi, lỗi schema phổ biến)
- Lịch sử tác vụ (đã kiểm thử gì, lỗi nào từng gặp)
RAG truyền thống lưu trữ dữ liệu này thành các khối phẳng trong cơ sở dữ liệu vector, trả về các đoạn Top-K không có cấu trúc, không phân cấp, thiếu kiểm soát truy xuất.
Năm thách thức cốt lõi
| Thách thức | RAG truyền thống | Giải pháp của OpenViking |
|---|---|---|
| Ngữ cảnh bị phân mảnh | Ký ức, tài nguyên, kỹ năng lưu trữ riêng biệt | Thống nhất dưới hệ thống tệp viking://
|
| Nhu cầu tăng vọt | Tác vụ dài tạo ngữ cảnh lớn, chi phí token cao | Tải phân cấp L0/L1/L2 giảm 91% token |
| Truy xuất kém hiệu quả | Tìm kiếm vector phẳng, thiếu tổng thể | Truy xuất đệ quy thư mục, phân tích ý định |
| Không thể quan sát | Chuỗi truy xuất hộp đen | Đường dẫn tìm kiếm được trực quan hóa |
| Lặp lại hạn chế | Chỉ lịch sử tương tác người dùng | Quản lý phiên tự động với 6 danh mục bộ nhớ |
OpenViking chuyển từ “lưu trữ mọi thứ, truy xuất mơ hồ” sang “cấu trúc mọi thứ, truy xuất chính xác”.
OpenViking là gì?
OpenViking là cơ sở dữ liệu ngữ cảnh mã nguồn mở cho tác nhân AI, theo giấy phép Apache 2.0.
OpenViking hợp nhất ngữ cảnh thành hệ thống tệp ảo. Mỗi loại ngữ cảnh là một thư mục dưới viking:// với URI duy nhất.
viking://
├── resources/
│ ├── my_project/
│ │ ├── docs/
│ │ └── src/
│ └── ...
├── user/
│ └── memories/
│ ├── preferences/
│ └── ...
└── agent/
├── skills/
├── memories/
└── instructions/
Các thao tác chính:
-
ls viking://resources/my_project/docs/— Liệt kê thư mục -
find "phương thức xác thực"— Tìm kiếm ngữ nghĩa -
read viking://resources/docs/auth.md— Đọc nội dung đầy đủ -
abstract viking://resources/docs/— Tóm tắt nhanh
Hệ thống này tương tự như quản lý tệp trên ổ cứng, nhưng dành cho ngữ cảnh tác nhân AI.
Tính năng cốt lõi 1: Mô hình hệ thống tệp hợp nhất
OpenViking gom tất cả loại ngữ cảnh vào một mô hình duy nhất, phân loại rõ ràng:
| Loại | Mục đích | Vòng đời | Sáng kiến |
|---|---|---|---|
| Tài nguyên | Tài liệu, mã, FAQ | Dài hạn, tĩnh | Người dùng thêm |
| Ký ức | Tùy chọn, kinh nghiệm | Dài hạn, động | Tác nhân trích xuất |
| Kỹ năng | Công cụ, MCP | Dài hạn, tĩnh | Tác nhân gọi |
Các thư mục tiêu chuẩn:
-
viking://resources/— Tài liệu, mã nguồn, hướng dẫn -
viking://user/memories/— Tùy chọn, sự kiện, thực thể người dùng -
viking://agent/skills/— Định nghĩa công cụ, MCP -
viking://agent/memories/— Mẫu đã học, trường hợp thực tế
API giống Unix
Bạn có thể thao tác qua Python SDK hoặc HTTP API:
from openviking import OpenViking
client = OpenViking(path="./data")
results = client.find("xác thực người dùng")
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/")
Tính năng cốt lõi 2: Tải ngữ cảnh phân cấp L0/L1/L2
OpenViking chia nhỏ ngữ cảnh thành 3 lớp:
| Lớp | Tên | Tệp | Giới hạn Token | Mục đích |
|---|---|---|---|---|
| L0 | Tóm tắt | .abstract.md |
~100 | Tìm kiếm nhanh |
| L1 | Tổng quan | .overview.md |
~2k | Xếp hạng, điều hướng |
| L2 | Chi tiết | Tệp gốc | Không giới hạn | Nội dung đầy đủ |
Khi thêm tài nguyên (PDF, Markdown), OpenViking tự động:
- Phân tích tài liệu thành text
- Tạo cây thư mục trong AGFS
- Xử lý ngữ nghĩa không đồng bộ
- Sinh tóm tắt L0 và tổng quan L1
Ví dụ cấu trúc:
viking://resources/my_project/
├── .abstract.md
├── .overview.md
├── docs/
│ ├── .abstract.md
│ ├── .overview.md
│ ├── auth.md
│ └── endpoints.md
└── src/
└── ...
Tiết kiệm Token
# RAG: Tải toàn bộ nội dung
full_docs = retrieve_all("authentication") # 50k token
# OpenViking: Chỉ tải L1/L2 khi cần
overview = client.overview("viking://resources/docs/auth/") # 2k token
if needs_more_detail(overview):
content = client.read("viking://resources/docs/auth/oauth.md")
Thực nghiệm: Giảm 91% token đầu vào, tăng 43% hiệu quả hoàn thành tác vụ.
Tính năng cốt lõi 3: Truy xuất đệ quy thư mục
OpenViking thực hiện truy xuất đệ quy theo 5 bước:
1. Phân tích ý định
2. Định vị thư mục liên quan
3. Khám phá tinh chỉnh trong thư mục
4. Leo xuống đệ quy thư mục con
5. Tổng hợp kết quả
Ví dụ:
- Truy vấn “làm thế nào để xác thực người dùng?” → Phân tích ý định
- Định vị các thư mục liên quan:
resources/docs/auth/(điểm 0.92) - Tìm kiếm file cụ thể:
auth/oauth.md,auth/jwt.md - Đệ quy vào thư mục con nếu có
- Tổng hợp kết quả và trả về
Quy trình này giúp tăng độ chính xác, giảm bỏ sót thông tin quan trọng.
Tính năng cốt lõi 4: Dấu vết truy xuất trực quan hóa
Truy xuất truyền thống là hộp đen, khó gỡ lỗi. OpenViking ghi lại dấu vết truy xuất:
Dấu vết cho truy vấn: "làm mới token OAuth"
├── viking://resources/docs/
│ ├── [ĐIỂM: 0.45] .abstract.md: bỏ qua
│ └── [ĐIỂM: 0.89] auth/: được chọn
│ ├── [ĐIỂM: 0.92] oauth.md: TRẢ VỀ
│ └── [ĐIỂM: 0.85] google.md: TRẢ VỀ
Bạn có thể kiểm tra lý do chọn/bỏ qua file, đường dẫn đã đi qua, từ đó tối ưu và gỡ lỗi nhanh chóng.
Tính năng cốt lõi 5: Quản lý phiên tự động
OpenViking tự động trích xuất ký ức và cập nhật kiến thức tác nhân cuối mỗi phiên.
Sáu danh mục bộ nhớ
| Danh mục | Chủ sở hữu | Vị trí | Mô tả | Cập nhật |
|---|---|---|---|---|
| hồ sơ | người dùng | user/memories/.overview.md | Thông tin cơ bản | Có thể nối thêm |
| tùy chọn | người dùng | user/memories/preferences/ | Tùy chọn | Có thể nối thêm |
| thực thể | người dùng | user/memories/entities/ | Project, tổ chức | Có thể nối thêm |
| sự kiện | người dùng | user/memories/events/ | Quyết định, milestone | Không cập nhật |
| trường hợp | tác nhân | agent/memories/cases/ | Case đã học | Không cập nhật |
| mẫu | tác nhân | agent/memories/patterns/ | Pattern đã học | Không cập nhật |
Quản lý phiên:
session = client.session()
await session.add_message("user", [{"type": "text", "text": "Tôi thích chế độ tối"}])
await session.add_message("assistant", [{"type": "text", "text": "Đã hiểu. Sẽ sử dụng chế độ tối."}])
await session.add_usage({"tool": "screenshot", "parameters": {"theme": "dark"}, "result": "success"})
await session.commit()
Khi commit, OpenViking nén phiên, trích xuất ký ức bằng LLM, cập nhật bộ nhớ và sinh L0/L1 cho nội dung mới.
Tổng quan kiến trúc
Lưu trữ hai lớp
| Lớp | Công nghệ | Lưu trữ |
|---|---|---|
| AGFS | Hệ thống tệp | Nội dung L0/L1/L2, media, quan hệ |
| Vector Index | Cơ sở dữ liệu vector | URI, nhúng, metadata (không lưu nội dung) |
Tách chỉ mục khỏi nội dung giúp tối ưu truy xuất và tiết kiệm tài nguyên.
Bắt đầu nhanh: Triển khai máy chủ OpenViking
Điều kiện tiên quyết
- Python 3.10+
- Go 1.22+ (cho AGFS)
- GCC 9+ hoặc Clang 11+
- Linux/macOS/Windows
Bước 1: Cài đặt OpenViking
pip install openviking --upgrade --force-reinstall
Cài CLI Rust (tùy chọn):
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash
Bước 2: Cấu hình mô hình
Tạo ~/.openviking/ov.conf:
{
"storage": {"workspace": "/home/your-name/openviking_workspace"},
"log": {"level": "INFO", "output": "stdout"},
"embedding": {
"dense": {
"api_base": "https://api.openai.com/v1",
"api_key": "your-openai-api-key",
"provider": "openai",
"dimension": 3072,
"model": "text-embedding-3-large"
},
"max_concurrent": 10
},
"vlm": {
"api_base": "https://api.openai.com/v1",
"api_key": "your-openai-api-key",
"provider": "openai",
"model": "gpt-4o",
"max_concurrent": 100
}
}
Nhà cung cấp hỗ trợ
| Provider | Embedding | VLM |
|---|---|---|
| volcengine | doubao-embedding-vision | doubao-seed-2.0-pro |
| openai | text-embedding-3-large | gpt-4o, gpt-4-vision |
| litellm | proxy LiteLLM | Claude, Gemini, Ollama... |
Bước 3: Khởi động máy chủ
openviking-server
# hoặc chạy nền
nohup openviking-server > /data/log/openviking.log 2>&1 &
Bước 4: Thêm tài nguyên
# Bằng Rust CLI
ov add-resource https://docs.example.com/api-guide.pdf
# Hoặc Python SDK
from openviking import OpenViking
client = OpenViking(path="./data")
client.add_resource("https://docs.example.com/api-guide.pdf")
Bước 5: Tìm kiếm và truy xuất
ov find "phương thức xác thực"
ov ls viking://resources/
ov tree viking://resources/docs -L 2
ov grep "OAuth" --uri viking://resources/docs/
Bước 6: Kích hoạt VikingBot (tuỳ chọn)
pip install "openviking[bot]"
openviking-server --with-bot
# Terminal khác:
ov chat
Điểm chuẩn hiệu suất
Thử nghiệm trên tập LoCoMo10 (1.540 đối thoại dài hạn):
| Hệ thống | Tỷ lệ hoàn thành | Token đầu vào |
|---|---|---|
| OpenClaw (bộ nhớ gốc) | 35.65% | 24.6M |
| OpenClaw + LanceDB | 44.55% | 51.6M |
| OpenClaw + OpenViking | 52.08% | 4.3M |
- Cải thiện 43% so với bộ nhớ gốc, giảm 91% token
- Cải thiện 17% so với LanceDB, giảm 92% token
Tích hợp OpenViking với Apidog
Người dùng Apidog có thể tận dụng OpenViking để lưu trữ ngữ cảnh hội thoại, tài liệu API, và tùy chọn người dùng xuyên suốt các phiên.
Bước 1: Thiết lập máy chủ OpenViking
Làm theo hướng dẫn ở trên để triển khai máy chủ.
Bước 2: Nhập tài liệu 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
Nhập tài liệu vào viking://resources/ với xử lý L0/L1/L2 tự động.
Bước 3: Lưu trữ tùy chọn người dùng
from openviking import OpenViking
client = OpenViking(path="./apidog-agent-data")
session = client.session()
await session.add_message("user", [{
"type": "text",
"text": "Luôn sử dụng môi trường thử nghiệm cho các bài kiểm tra API"
}])
await session.commit()
Bước 4: Truy vấn ngữ cảnh khi kiểm thử
results = client.find("điểm cuối xác thực")
for ctx in results.resources:
print(f"Tìm thấy: {ctx.uri}")
prefs = client.find("tùy chọn môi trường thử nghiệm", target_uri="viking://user/memories/")
Bước 5: Kết nối với framework
from openviking import OpenViking
client = OpenViking(path="./data")
# Hoặc HTTP API
import httpx
response = httpx.post(
"http://localhost:1933/api/v1/search/find",
json={"query": "điểm cuối xác thực"},
headers={"X-API-Key": "your-api-key"}
)
Kỹ thuật nâng cao & Thực tiễn tốt nhất
Mẹo chuyên nghiệp
-
Làm nóng trước ngữ cảnh thường xuyên truy cập
ov add-resource https://docs.example.com --wait -
Triển khai dọn dẹp dữ liệu cũ
await session.archive(max_age_days=7) -
Giám sát chỉ mục vector
ov debug stats
Lỗi phổ biến cần tránh
- Tải nội dung L2 quá sớm — luôn ưu tiên L0/L1
- Bỏ qua commit phiên — ký ức chỉ được trích xuất khi commit
- Đưa quá nhiều tài nguyên vào một thư mục — nên chia nhỏ
- Không xem dấu vết truy xuất — cần dùng để gỡ lỗi
Tối ưu hiệu suất
| Kịch bản | Khuyến nghị |
|---|---|
| Truy vấn cao | Chạy HTTP Server với connection pooling |
| Tài liệu lớn | Chia nhỏ theo chủ đề trước khi nhập |
| Độ trễ thấp | Sinh trước L0/L1 cho nội dung thường xuyên truy cập |
| Multi-tenant | Dùng workspace riêng cho mỗi tenant |
Bảo mật
- Lưu trữ khóa API trong biến môi trường/trình quản lý bí mật
- Bật HTTPS cho HTTP server
- Triển khai giới hạn tốc độ API
- Dùng API key riêng cho dev/production
Các trường hợp sử dụng thực tế
1. Trợ lý mã hóa AI
- Điều hướng
viking://resources/my_project/src/ - Ghi nhớ tùy chọn code style, test framework
- Truy xuất tài liệu API liên quan khi tạo mã
Kết quả: Giảm 67% lỗi “quên”, tiết kiệm 43% token.
2. Tác nhân hỗ trợ khách hàng
- Lưu tài liệu sản phẩm ở
viking://resources/product/ - Lưu lịch sử hội thoại ở
user/memories/past_issues/ - Sách hướng dẫn dưới dạng kỹ năng
Kết quả: Tăng tỷ lệ giải quyết lần đầu từ 52% lên 71%.
3. Trợ lý nghiên cứu
- Bài báo phân loại theo chủ đề (
resources/papers/nlp/) - Lưu phương pháp nghiên cứu dưới dạng kỹ năng
- Tự động trích xuất phát hiện chính vào bộ nhớ
Kết quả: Tìm bài báo liên quan nhanh hơn 3 lần.
Các lựa chọn thay thế & So sánh
So sánh với vector DB truyền thống
| Khía cạnh | RAG truyền thống | OpenViking |
|---|---|---|
| Mô hình lưu trữ | Vector phẳng | Hệ thống tệp phân cấp |
| Truy xuất | Độ tương tự Top-K | Đệ quy thư mục + phân tích ý định |
| Quan sát | Hộp đen | Dấu vết truy xuất trực quan hóa |
| Hiệu quả token | Tải toàn bộ/cắt bớt | Tải phân cấp L0/L1/L2 |
| Lặp lại bộ nhớ | Thủ công/không có | Tự động qua phiên |
| Loại ngữ cảnh | Chỉ tài liệu | Tài liệu, ký ức, kỹ năng hợp nhất |
| Gỡ lỗi | Đoán mò | Nhật ký duyệt thư mục |
So sánh với bộ nhớ LangChain
| Khía cạnh | Bộ nhớ LangChain | OpenViking |
|---|---|---|
| Tính bền vững | Đệm hội thoại | Hệ thống tệp L0/L1/L2 |
| Mở rộng | Bị giới hạn | Tải phân cấp, không giới hạn cứng |
| Truy xuất | Tuyến tính | Đệ quy thư mục + ngữ nghĩa |
| Loại bộ nhớ | Một loại | 6 danh mục (hồ sơ, tùy chọn, ...) |
Khi nào nên dùng từng giải pháp
- Vector DB truyền thống: yêu cầu độ trễ dưới 100ms, chỉ tìm kiếm cơ bản, hệ thống RAG sẵn có, không cần ngữ cảnh phức tạp.
- OpenViking: hội thoại dài hạn, ngữ cảnh đa loại, tối ưu token, cần truy xuất có thể quan sát/gỡ lỗi.
So sánh với RAG truyền thống
| Khía cạnh | RAG truyền thống | OpenViking |
|---|---|---|
| Mô hình lưu trữ | Vector phẳng | Hệ thống tệp phân cấp |
| Truy xuất | Độ tương tự Top-K | Đệ quy thư mục + phân tích ý định |
| Quan sát | Hộp đen | Dấu vết tìm kiếm trực quan hóa |
| Hiệu quả token | Tải toàn bộ/cắt | Tải phân cấp L0/L1/L2 |
| Lặp lại bộ nhớ | Thủ công | Quản lý phiên tự động |
| Loại ngữ cảnh | Chỉ tài liệu | Tài liệu, ký ức, kỹ năng hợp nhất |
| Gỡ lỗi | Đoán mò | Nhật ký duyệt thư mục |
Triển khai sản phẩm
Chạy OpenViking như dịch vụ HTTP độc lập với các lưu ý sau:
Hạ tầng đề xuất:
- Cloud: Volcengine ECS hoặc tương đương
- OS: veLinux/Ubuntu 22.04+
- Ổ SSD cho AGFS
- Mạng thấp độ trễ tới API model
Bảo mật:
- Lưu khóa API an toàn
- Bật xác thực & HTTPS cho HTTP server
- Giới hạn tốc độ endpoint
Giám sát:
{
"log": {
"level": "INFO",
"output": "file",
"path": "/var/log/openviking/server.log"
}
}
Theo dõi: độ sâu hàng đợi xử lý ngữ nghĩa, độ trễ truy xuất, thao tác AGFS, tỷ lệ trích xuất bộ nhớ thành công.
Hạn chế và cân nhắc
Hạn chế hiện tại
- Chủ yếu SDK Python, ngôn ngữ khác dùng HTTP
- Yêu cầu model embedding/VLM bên ngoài
- Mô hình hệ thống tệp lạ với người quen vector DB
- API có thể thay đổi do dự án phát triển nhanh
Khi nào nên sử dụng OpenViking
Nên dùng khi:
- Xây dựng tác nhân hội thoại dài hạn cần bộ nhớ
- Ngữ cảnh đa loại, tối ưu chi phí token
- Cần truy xuất có thể quan sát, debug
Không phù hợp khi:
- Ứng dụng Q&A đơn giản, chỉ cần tìm kiếm
- Đang có pipeline RAG ổn định, không gặp vấn đề
- Cần độ trễ <100ms (OpenViking có thêm xử lý)
Chặng đường phía trước
OpenViking đang phát triển nhanh (0.1.x đầu 2025):
- Hỗ trợ đa tenant (nhiều workspace)
- Dashboard quản lý bộ nhớ, chỉ số chất lượng truy xuất
- Hệ sinh thái plugin cho các framework tác nhân
- Triển khai edge/lightweight
- Tích hợp MCP nâng cao
Dự án mã nguồn mở theo Apache 2.0. Xem thêm tài liệu tại openviking.ai/docs.
Kết luận
OpenViking thay đổi cách tác nhân AI quản lý ngữ cảnh, tổ chức thông tin dưới dạng hệ thống tệp phân cấp, giải quyết triệt để phân mảnh, lãng phí token và truy xuất hộp đen của RAG truyền thống.
Những điểm chính
-
Mô hình hệ thống tệp hợp nhất ngữ cảnh: Tất cả ký ức, tài nguyên, kỹ năng dưới URI
viking:// - Tải L0/L1/L2 tiết kiệm token: Chỉ tải chi tiết khi cần
- Truy xuất đệ quy tăng độ chính xác: Khóa thư mục liên quan, khám phá nội dung
- Dấu vết trực quan hóa dễ debug: Xem đường dẫn truy xuất từng bước
- Quản lý phiên tự động giúp tác nhân học hỏi: Trích xuất ký ức sau mỗi hội thoại



Top comments (0)