Tóm tắt
OpenViking là một 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ột 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 đủ). Các thử nghiệm cho thấy giảm 91% chi phí token và hoàn thành tác vụ tốt hơn 43% so với RAG truyền thống.
Giới thiệu
Tác nhân AI của bạn liên tục quên mọi thứ. Nó đã hỏi cùng một điểm cuối API hai lần. Nó bỏ qua tùy chọn môi trường thử nghiệm của bạn. Nó không nhớ bài kiểm tra nào đã qua ngày hôm qua.
Đây là thực tế của việc xây dựng các tác nhân ngày nay. Hầu hết các nhóm đều vá víu các đường ống RAG, cơ sở dữ liệu vector và hệ thống bộ nhớ tùy chỉnh. Kết quả: ngữ cảnh bị phân mảnh, chi phí token tăng vọt và việc truy xuất thất bại một cách âm thầm.
Dữ liệu đã chứng minh điều này. Trong các thử nghiệm sử dụng tập dữ liệu LoCoMo10, các hệ thống RAG truyền thống chỉ đạt tỷ lệ hoàn thành tác vụ 35-44% trong khi tiêu tốn 24-51 triệu token đầu vào.
OpenViking tiếp cận theo một cách khác. Được tạo bởi nhóm OpenViking của ByteDance, nó thay thế lưu trữ vector phẳng bằng một mô hình hệ thống tệp. Tất cả ngữ cảnh đều nằm dưới các URI viking:// với khả năng tải L0/L1/L2 theo cấp bậc. Kết quả: hoàn thành tác vụ 52% với số token ít hơn 91%.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách OpenViking giải quyết vấn đề phân mảnh ngữ cảnh, xem mô hình L0/L1/L2 hoạt động và triển khai máy chủ đầu tiên của bạn trong 15 phút.
Vấn đề ngữ cảnh của tác nhân
Các tác nhân AI đối mặt với những thách thức về ngữ cảnh mà các ứng dụng truyền thống chưa bao giờ gặp phải.
Hãy xem xét một tác nhân giúp nhà phát triển kiểm thử API. Trong một tuần, nó cần theo dõi:
- Tùy chọn của người dùng (“môi trường thử nghiệm”, “curl hơn Python”)
- Ngữ cảnh dự án (điểm cuối, phương thức xác thực, kết quả kiểm thử trước đây)
- Mô hình công cụ (điểm cuối nào thất bại, lỗi schema phổ biến)
- Lịch sử tác vụ (những gì đã được kiểm thử, lỗi nào xuất hiện)
RAG truyền thống lưu trữ điều này dưới dạng các khối phẳng trong cơ sở dữ liệu vector. Khi truy vấn, bạn nhận được các đoạn tương tự hàng đầu-K mà không có cấu trúc, không có thứ bậc và không có khả năng nhìn thấy những gì đã bị bỏ lỡ.
Năm thách thức cốt lõi
OpenViking xác định năm vấn đề cốt lõi trong quản lý ngữ cảnh tác nhân:
| 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 | Mô hình hệ thống tệp thống nhất dưới viking:// |
| Nhu cầu tăng vọt | Các tác vụ dài tạo ra ngữ cảnh khổng lồ | Tải cấp bậc L0/L1/L2 giảm 91% token |
| Truy xuất kém hiệu quả | Tìm kiếm vector phẳng thiếu cái nhìn tổng thể | Truy xuất đệ quy thư mục với 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 trực quan hóa để gỡ lỗi |
| 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ớ |
Điều này thể hiện một sự thay đổi 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à một cơ sở dữ liệu ngữ cảnh mã nguồn mở dành cho các tác nhân AI, được tạo bởi nhóm OpenViking của ByteDance theo giấy phép Apache 2.0.

Nó hợp nhất tất cả ngữ cảnh vào một hệ thống tệp ảo. Ký ức, tài nguyên và kỹ năng được ánh xạ tới các thư mục dưới viking://, mỗi thư mục có một URI duy nhất.
viking://
├── resources/ # Kiến thức bên ngoài: tài liệu, mã, trang web
│ ├── my_project/
│ │ ├── docs/
│ │ │ ├── api/
│ │ │ └── tutorials/
│ │ └── src/
│ └── ...
├── user/ # Đặc trưng người dùng: tùy chọn, thói quen
│ └── memories/
│ ├── preferences/
│ │ ├── writing_style
│ │ └── coding_habits
│ └── ...
└── agent/ # Khả năng của tác nhân: kỹ năng, ký ức tác vụ
├── skills/
│ ├── search_code
│ ├── analyze_data
│ └── ...
├── memories/
└── instructions/
Các tác nhân có được khả năng thao tác ngữ cảnh trực tiếp:
- Điều hướng thư mục với
ls viking://resources/my_project/docs/ - Tìm kiếm ngữ nghĩa với
find "phương thức xác thực" - Đọc nội dung đầy đủ với
read viking://resources/docs/auth.md - Nhận tóm tắt nhanh với
abstract viking://resources/docs/
Hãy nghĩ về nó như sự khác biệt giữa việc tìm kiếm toàn bộ ổ cứng của bạn và biết chính xác thư mục nào chứa tệp.
Tính năng cốt lõi 1: Mô hình quản lý hệ thống tệp
Mô hình hệ thống tệp giải quyết vấn đề phân mảnh ngữ cảnh bằng cách hợp nhất tất cả các loại ngữ cảnh dưới một mô hình duy nhất.
Ba loại ngữ cảnh
| Loại | Mục đích | Vòng đời | Sáng kiến |
|---|---|---|---|
| Tài nguyên | Kiến thức bên ngoài (tài liệu, mã, FAQ) | Dài hạn, tĩnh | Người dùng thêm |
| Ký ức | Nhận thức của tác nhân (tùy chọn, kinh nghiệm) | Dài hạn, động | Tác nhân trích xuất |
| Kỹ năng | Khả năng gọi được (công cụ, MCP) | Dài hạn, tĩnh | Tác nhân gọi |
Mỗi loại nằm trong thư mục riêng của nó:
viking://resources/: Sổ tay sản phẩm, kho mã, tài liệuviking://user/memories/: Tùy chọn người dùng, ký ức thực thể, sự kiệnviking://agent/skills/: Định nghĩa công cụ, cấu hình MCPviking://agent/memories/: Các mẫu đã học, nghiên cứu điển hình
API giống Unix
OpenViking cung cấp các thao tác dòng lệnh quen thuộc:
from openviking import OpenViking
client = OpenViking(path="./data")
# Tìm kiếm ngữ nghĩa trên tất cả các loại ngữ cảnh
results = client.find("xác thực người dùng")
# Liệt kê nội dung thư mục
contents = client.ls("viking://resources/")
# Đọc nội dung đầy đủ
doc = client.read("viking://resources/docs/auth.md")
# Nhận tóm tắt nhanh (lớp L0)
abstract = client.abstract("viking://resources/docs/")
# Nhận tổng quan chi tiết (lớp L1)
overview = client.overview("viking://resources/docs/")
API hoạt động thông qua Python SDK hoặc máy chủ HTTP, tương thích với bất kỳ framework tác nhân nào.
Tính năng cốt lõi 2: Tải ngữ cảnh phân cấp L0/L1/L2
Nhồi nhét ngữ cảnh khổng lồ vào các lời nhắc vừa tốn kém vừa dễ gây lỗi. OpenViking tự động xử lý tất cả ngữ cảnh thành ba lớp phân cấp:
| Lớp | Tên | Tệp | Giới hạn Token | Mục đích |
|---|---|---|---|---|
| L0 | Tóm tắt | .abstract.md |
~100 token | Tìm kiếm vector, lọc nhanh |
| L1 | Tổng quan | .overview.md |
~2k token | Xếp hạng lại, điều hướng nội dung |
| L2 | Chi tiết | Tệp gốc | Không giới hạn | Nội dung đầy đủ, tải theo yêu cầu |
Cách hoạt động
Khi bạn thêm một tài nguyên (như tệp tài liệu PDF), OpenViking:
- Phân tích tài liệu thành văn bản (chưa gọi LLM)
- Xây dựng cấu trúc cây thư mục trong bộ lưu trữ AGFS
- Xếp hàng chờ xử lý ngữ nghĩa không đồng bộ
- Tạo các bản tóm tắt L0 và tổng quan L1 từ dưới lên
Kết quả là một cấu trúc phân cấp:
viking://resources/my_project/
├── .abstract.md # L0: "Tài liệu API bao gồm xác thực, điểm cuối, giới hạn tốc độ"
├── .overview.md # L1: Tóm tắt chi tiết với điều hướng phần
├── docs/
│ ├── .abstract.md # Mỗi thư mục đều có L0/L1
│ ├── .overview.md
│ ├── auth.md # L2: Nội dung đầy đủ
│ ├── endpoints.md
│ └── rate-limits.md
└── src/
└── ...
Ảnh hưởng đến ngân sách Token
Hệ thống phân cấp này giúp tiết kiệm chi phí đáng kể:
# RAG truyền thống: Tải toàn bộ nội dung
full_docs = retrieve_all("authentication") # 50k token
# OpenViking: Bắt đầu với L1, chỉ tải L2 nếu 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") # Tải L2 cụ thể
Trong các thử nghiệm, phương pháp này đã giảm chi phí token đầu vào 91% so với RAG truyền thống trong khi cải thiện tỷ lệ hoàn thành tác vụ 43%.
Tính năng cốt lõi 3: Truy xuất đệ quy thư mục
Tìm kiếm vector đơn lẻ gặp khó khăn với các truy vấn phức tạp. OpenViking triển khai một chiến lược truy xuất đệ quy thư mục:
Quá trình năm bước
1. Phân tích ý định
↓
2. Định vị ban đầu (tìm các thư mục có điểm số cao)
↓
3. Khám phá tinh chỉnh (tìm kiếm trong các thư mục)
↓
4. Leo xuống đệ quy (đi sâu vào các thư mục con)
↓
5. Tổng hợp kết quả (trả về các ngữ cảnh được xếp hạng)
Bước 1: Phân tích ý định
Truy vấn “làm thế nào để xác thực người dùng?” được phân tích để xác định:
- Loại ý định: câu hỏi hướng dẫn cách thực hiện
- Các thực thể chính: “xác thực”, “người dùng”
- Nội dung mong đợi: hướng dẫn xác thực, quy trình OAuth
Bước 2: Định vị ban đầu
Tìm kiếm vector nhanh chóng định vị các thư mục có điểm số cao:
viking://resources/docs/auth/(điểm: 0.92)viking://resources/docs/security/(điểm: 0.78)
Bước 3: Khám phá tinh chỉnh
Trong thư mục hàng đầu, một tìm kiếm thứ cấp tìm thấy các tệp cụ thể:
viking://resources/docs/auth/oauth.md(điểm: 0.95)viking://resources/docs/auth/jwt.md(điểm: 0.88)
Bước 4: Leo xuống đệ quy
Nếu các thư mục con tồn tại (như auth/providers/), quá trình sẽ lặp lại đệ quy.
Bước 5: Tổng hợp kết quả
Các kết quả cuối cùng được tổng hợp và xếp hạng theo mức độ liên quan, với các dấu vết truy xuất được giữ lại.
Chiến lược “khóa thư mục trước, sau đó khám phá nội dung” này cải thiện độ chính xác của việc truy xuất bằng cách hiểu toàn bộ ngữ cảnh thông tin, chứ không chỉ các khối riêng lẻ.
Tính năng cốt lõi 4: Dấu vết truy xuất trực quan hóa
RAG truyền thống là một hộp đen. Khi truy xuất thất bại, bạn không thể biết đó là vấn đề tương tự vector, vấn đề phân đoạn hay dữ liệu bị thiếu.
Cấu trúc hệ thống tệp của OpenViking giúp việc truy xuất có thể quan sát được:
Dấu vết truy xuất cho truy vấn: "làm mới token OAuth"
├── viking://resources/docs/
│ ├── [ĐIỂM: 0.45] .abstract.md: bỏ qua (mức độ liên quan thấp)
│ └── [ĐIỂM: 0.89] auth/: được chọn (mức độ liên quan cao)
│ ├── [ĐIỂM: 0.92] oauth.md: TRẢ VỀ
│ ├── [ĐIỂM: 0.34] jwt.md: bỏ qua
│ └── [ĐIỂM: 0.78] providers/
│ └── [ĐIỂM: 0.85] google.md: TRẢ VỀ
Dấu vết này cho thấy:
- Các thư mục nào đã được truy cập
- Tại sao một số tệp được chọn hoặc bỏ qua
- Đường dẫn chính xác mà quá trình truy xuất đã đi qua
Để gỡ lỗi, điều này là vô giá. Bạn có thể thấy liệu tác nhân có bỏ lỡ ngữ cảnh vì nó ở sai thư mục, có bản tóm tắt L0 kém, hay rơi xuống dưới ngưỡng điểm hay không.
Tính năng cốt lõi 5: Quản lý phiên tự động
OpenViking có một vòng lặp tự lặp bộ nhớ tích hợp. Vào cuối mỗi phiên, hệ thống có thể trích xuất ký ức và cập nhật kiến thức của tác nhân một cách tự động.
Sáu danh mục bộ nhớ
| Danh mục | Chủ sở hữu | Vị trí | Mô tả | Chiến lược cập nhật |
|---|---|---|---|---|
| hồ sơ | người dùng | user/memories/.overview.md |
Thông tin người dùng cơ bản | Có thể nối thêm |
| tùy chọn | người dùng | user/memories/preferences/ |
Tùy chọn theo chủ đề | Có thể nối thêm |
| thực thể | người dùng | user/memories/entities/ |
Người, dự án, tổ chức | Có thể nối thêm |
| sự kiện | người dùng | user/memories/events/ |
Quyết định, cột mốc | Không cập nhật |
| trường hợp | tác nhân | agent/memories/cases/ |
Các trường hợp đã học | Không cập nhật |
| mẫu | tác nhân | agent/memories/patterns/ |
Các mẫu đã học | Không cập nhật |
Cách hoạt động của việc trích xuất bộ nhớ
# Bắt đầu một phiên
session = client.session()
# Thêm tin nhắn (các lượt hội thoại)
await session.add_message("user", [{"type": "text", "text": "Tôi thích chế độ tối trong giao diện người dùng"}])
await session.add_message("assistant", [{"type": "text", "text": "Đã hiểu. Tôi sẽ sử dụng chế độ tối cho tất cả các ảnh chụp màn hình trong tương lai."}])
# Ghi lại việc sử dụng công cụ
await session.add_usage({
"tool": "screenshot",
"parameters": {"theme": "dark"},
"result": "success"
})
# Commit phiên: kích hoạt việc trích xuất bộ nhớ
await session.commit()
Khi được commit, OpenViking:
- Nén phiên (giữ N lượt gần đây, lưu trữ các lượt cũ hơn)
- Trích xuất ký ức bằng cách phân tích LLM
- Cập nhật các thư mục bộ nhớ thích hợp
- Tạo L0/L1 cho nội dung bộ nhớ mới
Điều này làm cho các tác nhân thông minh hơn khi sử dụng: chúng học được sở thích của người dùng, tích lũy kinh nghiệm tác vụ và cải thiện việc ra quyết định theo thời gian.
Tổng quan kiến trúc
Kiến trúc hệ thống của OpenViking phân tách các mối quan tâm trên nhiều lớp:

Lưu trữ hai lớp
OpenViking tách nội dung khỏi chỉ mục:
| Lớp | Công nghệ | Lưu trữ |
|---|---|---|
| AGFS | Hệ thống tệp tùy chỉnh | Nội dung L0/L1/L2, tệp đa phương tiện, các mối quan hệ |
| Chỉ mục Vector | Cơ sở dữ liệu Vector | URI, nhúng, siêu dữ liệu (không có nội dung tệp) |
Sự phân tách này đảm bảo:
- Tất cả các lần đọc nội dung đến từ một nguồn duy nhất (AGFS)
- Chỉ mục vector chỉ lưu trữ các tham chiếu nhẹ
- Không trùng lặp các khối văn bản lớn trong bộ lưu trữ vector
Bắt đầu nhanh: Triển khai máy chủ OpenViking đầu tiên của bạn
Điều kiện tiên quyết
- Python: 3.10 trở lên
- Go: 1.22+ (cho các thành phần AGFS)
- Trình biên dịch C++: GCC 9+ hoặc Clang 11+
- Hệ điều hành: Linux, macOS hoặc Windows
Bước 1: Cài đặt OpenViking
pip install openviking --upgrade --force-reinstall
Tùy chọn cài đặt CLI Rust để truy cập terminal:
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
OpenViking yêu cầu hai khả năng mô hình:
- Mô hình VLM: Để hiểu hình ảnh và nội dung
- Mô hình nhúng: Để vector hóa và tìm kiếm ngữ nghĩa
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
}
}
Các nhà cung cấp được hỗ trợ:
| Nhà cung cấp | Mô hình nhúng | Mô hình VLM |
|---|---|---|
| volcengine | doubao-embedding-vision | doubao-seed-2.0-pro |
| openai | text-embedding-3-large | gpt-4o, gpt-4-vision |
| litellm | Thông qua proxy LiteLLM | Claude, Gemini, DeepSeek, Qwen, Ollama, vLLM |
Hỗ trợ LiteLLM có nghĩa là bạn có thể sử dụng các mô hình Anthropic, Google, Ollama cục bộ hoặc bất kỳ điểm cuối tương thích OpenAI nào.
Bước 3: Khởi động máy chủ
openviking-server
Hoặc chạy trong nền:
nohup openviking-server > /data/log/openviking.log 2>&1 &
Bước 4: Thêm tài nguyên đầu tiên của bạn
# Sử dụng Rust CLI
ov add-resource https://docs.example.com/api-guide.pdf
# Hoặc sử dụng 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
# Đợi xử lý ngữ nghĩa, sau đó tìm kiếm
ov find "phương thức xác thực"
# Liệt kê nội dung thư mục
ov ls viking://resources/
# Xem cây thư mục
ov tree viking://resources/docs -L 2
# Grep nội dung cụ thể
ov grep "OAuth" --uri viking://resources/docs/
Bước 6: Kích hoạt VikingBot (Tùy chọn)
VikingBot là một framework tác nhân AI được xây dựng trên OpenViking:
pip install "openviking[bot]"
# Khởi động máy chủ với bot được kích hoạt
openviking-server --with-bot
# Trong một terminal khác, bắt đầu trò chuyện tương tác
ov chat
Điểm chuẩn hiệu suất
OpenViking đã được so sánh với RAG truyền thống (LanceDB) và các hệ thống bộ nhớ gốc bằng cách sử dụng tập dữ liệu LoCoMo10 (1.540 trường hợp đối thoại dài hạn).
Tỷ lệ hoàn thành tác vụ
| 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 |
Những phát hiện chính
- Cải thiện 43% so với bộ nhớ gốc với giảm 91% token
- Cải thiện 17% so với LanceDB với giảm 92% token
- Truy xuất phân cấp của OpenViking tìm thấy ngữ cảnh liên quan hơn trong khi tiêu thụ ít token hơn
Những kết quả này đến từ việc tích hợp OpenViking như một plugin với OpenClaw, một trợ lý mã hóa AI mã nguồn mở. Tập dữ liệu kiểm thử dựa trên các cuộc đối thoại dài hạn, nơi việc giữ lại bộ nhớ là rất quan trọng.
Tích hợp OpenViking với Apidog
Người dùng Apidog xây dựng các tác nhân AI để kiểm thử API có thể tận dụng OpenViking để duy trì ngữ cảnh hội thoại, lưu trữ tài liệu API và ghi nhớ tùy chọn người dùng qua các phiên.

Bước 1: Thiết lập máy chủ OpenViking
Làm theo hướng dẫn bắt đầu nhanh ở trên để triển khai OpenViking với các mô hình VLM và nhúng ưa thích của bạn.
Bước 2: Nhập tài liệu API Apidog
# Thêm tài liệu dự án Apidog của bạn làm tài nguyên
ov add-resource https://docs.apidog.com/overview
ov add-resource https://docs.apidog.com/api-testing
Điều này nhập tài liệu Apidog vào viking://resources/ với quá trình 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()
# Ghi lại tùy chọn môi trường mặc định của người dùng
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() # Tự động trích xuất bộ nhớ tùy chọn
Bước 4: Truy vấn ngữ cảnh trong quá trình kiểm thử
# Tìm các điểm cuối API liên quan trước khi chạy 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}")
# Truy xuất tùy chọn môi trường của người dùng
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 tác nhân của bạn
OpenViking cung cấp cả Python SDK và HTTP API:
# Python SDK
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 để triển khai sản phẩm
1. Làm nóng trước ngữ cảnh được truy cập thường xuyên
Tải tài liệu quan trọng vào L0/L1 trong giờ thấp điểm để giảm độ trễ trong quá trình hoạt động của tác nhân.
# Kích hoạt xử lý ngữ nghĩa ngay lập tức
ov add-resource https://docs.example.com --wait
2. Triển khai thời gian hết hạn ngữ cảnh
Thiết lập dọn dẹp tự động cho dữ liệu phiên cũ:
# Lưu trữ các phiên cũ hơn 7 ngày
await session.archive(max_age_days=7)
3. Giám sát tình trạng chỉ mục vector
Theo dõi kích thước chỉ mục và độ trễ truy vấn:
ov debug stats
Những sai lầm phổ biến cần tránh
- Tải nội dung L2 sớm: Luôn bắt đầu với L0/L1 để tiết kiệm token
- Bỏ qua việc commit phiên: Việc trích xuất bộ nhớ chỉ xảy ra khi commit
- Tải quá nhiều vào một thư mục: Chia các tài nguyên lớn thành các thư mục con theo chủ đề
- Bỏ qua các dấu vết truy xuất: Sử dụng các dấu vết trực quan để gỡ lỗi các kết quả kém
Tối ưu hóa hiệu suất
| Kịch bản | Khuyến nghị |
|---|---|
| Khối lượng truy vấn cao | Chạy OpenViking dưới dạng máy chủ HTTP với kết nối nhóm (connection pooling) |
| Tài liệu lớn | Chia thành các khối dựa trên chủ đề trước khi nhập |
| Nhu cầu độ trễ thấp | Tạo trước L0/L1 cho nội dung được truy cập thường xuyên |
| Thiết lập đa người thuê | Sử dụng các không gian làm việc riêng biệt cho mỗi người thuê |
Thực tiễn tốt nhất về bảo mật
- Lưu trữ khóa API trong biến môi trường hoặc trình quản lý bí mật (không bao giờ trong tệp cấu hình)
- Bật HTTPS cho tất cả các triển khai máy chủ HTTP
- Triển khai giới hạn tốc độ trên các điểm cuối công khai
- Sử dụng các khóa API riêng biệt cho phát triển và sản xuất
Các trường hợp sử dụng thực tế
1. Trợ lý mã hóa AI
Một nhóm phát triển đã tích hợp OpenViking với trợ lý mã hóa nội bộ của họ. Tác nhân hiện có thể:
- Điều hướng cấu trúc dự án thông qua
viking://resources/my_project/src/ - Ghi nhớ tùy chọn mã hóa của người dùng (quy ước đặt tên, framework kiểm thử)
- Truy xuất tài liệu API liên quan trong quá trình tạo mã
Kết quả: Giảm 67% hành vi “quên” của tác nhân, tiết kiệm 43% chi phí token.
2. Tác nhân hỗ trợ khách hàng
Một công ty SaaS đã triển khai OpenViking cho chatbot hỗ trợ của họ:
- Tài liệu sản phẩm được lưu trữ trong
viking://resources/product/ - Lịch sử hội thoại khách hàng trong
viking://user/memories/past_issues/ - Sách hướng dẫn hỗ trợ dưới dạng kỹ năng trong
viking://agent/skills/
Kết quả: Tỷ lệ giải quyết lần đầu được cải thiện từ 52% lên 71%.
3. Trợ lý nghiên cứu
Một phòng thí nghiệm nghiên cứu sử dụng OpenViking để tổ chức các bài báo và ghi chú:
- Các bài báo được phân loại theo chủ đề (
viking://resources/papers/nlp/) - Phương pháp nghiên cứu được lưu trữ dưới dạng kỹ năng
- Trích xuất tự động các phát hiện chính vào bộ nhớ
Kết quả: Các nhà nghiên cứu tìm thấy các bài báo liên quan nhanh hơn 3 lần với tìm kiếm ngữ nghĩa.
Các lựa chọn thay thế & So sánh
OpenViking không phải là giải pháp quản lý ngữ cảnh duy nhất. Dưới đây là cách nó so sánh với các lựa chọn thay thế:
OpenViking so với cơ sở dữ liệu vector truyền thống
| Khía cạnh | RAG truyền thống (Pinecone, LanceDB) | OpenViking |
|---|---|---|
| Mô hình lưu trữ | Các khối 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 |
| Khả năng 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 tất cả hoặc cắt bớt | Tải tuần tự L0/L1/L2 |
| Lặp lại bộ nhớ | Thủ công hoặc không có | Quản lý phiên tự động |
| Các loại ngữ cảnh | Chỉ tài liệu | Tài nguyên, ký ức, kỹ năng thống nhất |
| Gỡ lỗi | Đoán mò | Nhật ký duyệt thư mục |
OpenViking so với bộ nhớ LangChain
| Khía cạnh | Bộ nhớ LangChain | OpenViking |
|---|---|---|
| Tính bền vững | Chỉ bộ đệm hội thoại | Hệ thống tệp đầy đủ với L0/L1/L2 |
| Khả năng mở rộng | Hạn chế bởi cửa sổ ngữ cảnh | Tải phân cấp, không giới hạn cứng |
| Truy xuất | Tìm kiếm tuyến tính | Đệ quy thư mục + ngữ nghĩa |
| Các loại bộ nhớ | Bộ đệm đơn | 6 danh mục (hồ sơ, tùy chọn, sự kiện, v.v.) |
Khi nào nên xem xét các lựa chọn thay thế
Sử dụng cơ sở dữ liệu vector truyền thống nếu:
- Bạn cần độ trễ truy xuất dưới 100ms
- Trường hợp sử dụng của bạn là tìm kiếm từ khóa đơn giản
- Bạn đã có một đường ống RAG hoạt động mà không gặp vấn đề gì
Sử dụng OpenViking nếu:
- Bạn đang xây dựng các cuộc trò chuyện tác nhân dài hạn
- Bạn cần ngữ cảnh đa loại (tài liệu + tùy chọn + công cụ)
- Việc tối ưu hóa chi phí token quan trọng
- Bạn muố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ữ | Các khối 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 |
| Khả năng 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 tất cả hoặc cắt bớt | Tải tuần tự L0/L1/L2 |
| Lặp lại bộ nhớ | Thủ công hoặc không có | Quản lý phiên tự động |
| Các loại ngữ cảnh | Chỉ tài liệu | Tài nguyên, ký ức, kỹ năng thống nhất |
| Gỡ lỗi | Đoán mò | Nhật ký duyệt thư mục |
Triển khai sản phẩm
Đối với môi trường sản phẩm, hãy chạy OpenViking như một dịch vụ HTTP độc lập:
Hạ tầng đề xuất
- Cloud: Volcengine ECS hoặc tương đương
- Hệ điều hành: veLinux hoặc Ubuntu 22.04+
- Lưu trữ: Ổ cứng SSD cho AGFS
- Mạng: Kết nối độ trễ thấp đến các API mô hình
Cân nhắc bảo mật
- Lưu trữ khóa API trong biến môi trường hoặc trình quản lý bí mật
- Bật xác thực cho các điểm cuối HTTP
- Sử dụng HTTPS cho tất cả các giao tiếp client-server
- Triển khai giới hạn tốc độ để ngăn chặn lạm dụng
Giám sát
OpenViking hỗ trợ ghi nhật ký và đo lường:
{
"log": {
"level": "INFO",
"output": "file",
"path": "/var/log/openviking/server.log"
}
}
Giám sát:
- Độ sâu hàng đợi xử lý ngữ nghĩa
- Độ trễ tìm kiếm vector
- Các thao tác đọc/ghi AGFS
- Tỷ lệ thành công trích xuất bộ nhớ
Hạn chế và cân nhắc
Hạn chế hiện tại
- Tập trung vào Python: SDK chính là Python; các ngôn ngữ khác yêu cầu tích hợp HTTP
- Phụ thuộc vào mô hình: Yêu cầu các mô hình VLM và nhúng bên ngoài (không có suy luận tích hợp)
- Đường cong học tập: Mô hình hệ thống tệp khác với các cơ sở dữ liệu vector truyền thống
- Giai đoạn đầu: Dự án đang trong quá trình phát triển tích cực; API có thể thay đổi
Khi nào nên sử dụng OpenViking
Phù hợp tốt:
- Các cuộc trò chuyện tác nhân dài hạn yêu cầu bộ nhớ
- Ngữ cảnh đa loại (tài liệu + tùy chọn + công cụ)
- Cần truy xuất có thể quan sát, gỡ lỗi
- Tối ưu hóa chi phí token là quan trọng
Cân nhắc các lựa chọn thay thế:
- Các ứng dụng Q&A một lần đơn giản
- Đã có một đường ống RAG hoạt động mà không gặp vấn đề gì
- Cần độ trễ truy xuất dưới 100ms (OpenViking có thêm chi phí xử lý)
Chặng đường phía trước
OpenViking đang trong giai đoạn phát triển ban đầu (phiên bản 0.1.x tính đến đầu năm 2025). Lộ trình bao gồm:
- Hỗ trợ đa người thuê: Không gian làm việc riêng biệt cho các nhóm
- Phân tích nâng cao: Các chỉ số chất lượng truy xuất, bảng điều khiển sử dụng bộ nhớ
- Hệ sinh thái plugin: Tích hợp sẵn với các framework tác nhân phổ biến
- Triển khai trên biên: Chế độ nhẹ cho các ứng dụng cục bộ đầu tiên
- Hỗ trợ MCP nâng cao: Tích hợp giao thức ngữ cảnh mô hình gốc
Nhóm đằng sau OpenViking đang tích cực tìm kiếm những người đóng góp từ cộng đồng. Dự án là mã nguồn mở theo giấy phép Apache 2.0, với tài liệu có sẵn.
Kết luận
OpenViking đại diện cho một sự thay đổi trong cách các tác nhân AI quản lý ngữ cảnh. Bằng cách tổ chức thông tin dưới dạng hệ thống tệp thay vì các khối phẳng, nó giải quyết vấn đề phân mảnh, lãng phí token và truy xuất hộp đen đang gây khó khăn cho các hệ thống 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 và kỹ năng dưới các URI
viking:// - Tải L0/L1/L2 giảm 91% token: Tải tuần tự thay vì đổ tất cả vào các lời nhắc
- Truy xuất đệ quy thư mục tăng độ chính xác: Khóa các thư mục có điểm số cao trước, sau đó khám phá nội dung
- Dấu vết trực quan hóa giúp gỡ lỗi: Xem chính xác đường dẫn mà quá trình truy xuất đã đi qua
- Quản lý phiên tự động cho phép học hỏi: Các tác nhân trích xuất ký ức từ mỗi cuộc hội thoại
