OpenViking — это база данных контекста с открытым исходным кодом для агентов искусственного интеллекта от Volcengine. Проект основан на простой архитектурной концепции: системы агентов не должны рассматривать контекст как плоскую коллекцию текстовых фрагментов. Вместо этого OpenViking организует контекст по парадигме файловой системы с целью сделать память, ресурсы и навыки управляемыми через единую иерархическую структуру.
Виртуальная файловая система для управления контекстом
В основе дизайна лежит виртуальная файловая система, доступная по протоколу `viking://`. OpenViking отображает различные типы контекста в каталоги, включая ресурсы, пользователя и агента. В этих каталогах верхнего уровня агент может получить доступ к документам проекта, настройкам пользователя, памяти задач, навыкам и инструкциям.
Это отход от «плоских текстовых срезов» к абстрактным объектам файловой системы, идентифицируемым по URI. Преимущество заключается в том, что агент может использовать стандартные операции просмотра, такие как `ls` и `find`, для поиска информации более детерминированным способом, а не полагаться только на поиск по сходству в плоском векторном индексе.
Как работает рекурсивный поиск по каталогам
Архитектурный выбор имеет значение, поскольку OpenViking не пытается устранить семантический поиск. Он пытается ограничить и структурировать его. Конвейер поиска в проекте сначала использует векторный поиск для определения каталога с высоким баллом, затем выполняет второй поиск в этом каталоге и рекурсивно переходит в подкаталоги, если это необходимо.
Основная идея состоит в том, что поиск должен сохранять как локальную релевантность, так и глобальную структуру контекста: система должна не только находить семантически похожий фрагмент, но и понимать контекст каталога, в котором этот фрагмент находится.
Многоуровневая загрузка контекста для сокращения накладных расходов на токены
OpenViking также добавляет встроенный механизм многоуровневой загрузки контекста. Когда контекст записывается, система автоматически обрабатывает его на трёх уровнях:
* L0 — абстрактное описание, представляющее собой краткое изложение в одном предложении, используемое для быстрого поиска и идентификации.
* L1 — обзор, содержащий основную информацию и сценарии использования для планирования.
* L2 — полное исходное содержимое, предназначенное для глубокого чтения только при необходимости.
Примеры в README показывают файлы `.abstract` и `.overview`, связанные с каталогами, в то время как основные документы остаются доступными в виде подробного содержимого.
Наблюдаемость поиска и отладка
Второй важной особенностью системы является наблюдаемость. OpenViking хранит траекторию просмотра каталогов и позиционирования файлов во время поиска. В файле README это описывается как «Визуализированная траектория поиска».
На практике это означает, что разработчики могут проверить, как система перемещалась по иерархии для получения контекста. Это полезно, поскольку многие сбои агентов не являются сбоями модели в узком смысле; это сбои маршрутизации контекста. Если извлечены неправильные данные, модель всё равно может выдать плохой ответ, даже если сама модель способна на большее.
Память сеанса и самоитерация
Проект также расширяет управление памятью за пределы регистрации разговоров. OpenViking включает автоматическое управление сеансами со встроенным циклом самоитерации памяти.
Согласно файлу README, в конце сеанса разработчики могут запустить извлечение памяти, и система проанализирует результаты выполнения задачи и отзывы пользователя, а затем обновит каталоги памяти пользователя и агента.
Результаты оценки OpenClaw
Файл README также включает раздел с результатами оценки плагина памяти OpenClaw на наборе данных LoCoMo10 для диалогов на большие расстояния.
Результаты показывают, что OpenClaw (memory-core) достигает 35,65% выполнения задач при 24 611 530 входных токенах, в то время как OpenClaw + плагин OpenViking (-memory-core) достигает 52,08% при 4 264 396 входных токенах, а OpenClaw + плагин OpenViking (+memory-core) достигает 51,23% при 2 099 622 входных токенах.
Подробности развёртывания
Для документированных предварительных условий требуются Python 3.10+, Go 1.22+, и GCC 9+ или Clang 11+, с поддержкой Linux, macOS и Windows.
Установка доступна через `pip install openviking —upgrade —force-reinstall`, и есть дополнительный интерфейс командной строки на Rust под названием `ov_cli`, который можно установить через скрипт или собрать с помощью Cargo.
Реализация OpenViking требует двух возможностей модели: модели VLM для понимания изображений и контента и модели встраивания для векторизации и семантического поиска.
Ключевые выводы
* OpenViking рассматривает контекст агента как файловую систему, объединяя память, ресурсы и навыки в единую иерархическую структуру вместо плоского хранилища в стиле RAG.
* Его конвейер поиска является рекурсивным и учитывает каталоги, сочетая позиционирование каталогов с семантическим поиском для повышения точности контекста.
* Он использует многоуровневую загрузку контекста L0/L1/L2, поэтому агенты могут сначала прочитать краткие изложения, а загружать полное содержимое только при необходимости, сокращая использование токенов.
* OpenViking предоставляет траектории поиска, что делает выбор контекста более наблюдаемым и упрощает отладку по сравнению со стандартными чёрными ящиками RAG.
* Он также поддерживает итерацию памяти на основе сеансов, извлекая долгосрочную память из разговоров, вызовов инструментов и истории выполнения задач.
1. Какие основные архитектурные принципы лежат в основе проекта OpenViking?
В основе проекта OpenViking лежит принцип организации контекста по парадигме файловой системы. Это позволяет сделать память, ресурсы и навыки управляемыми через единую иерархическую структуру.
2. Как работает рекурсивный поиск в OpenViking и какие преимущества он предоставляет?
Конвейер поиска в OpenViking сначала использует векторный поиск для определения каталога с высоким баллом, затем выполняет второй поиск в этом каталоге и рекурсивно переходит в подкаталоги, если это необходимо. Это позволяет сохранить как локальную релевантность, так и глобальную структуру контекста.
3. Какие уровни обработки контекста предусмотрены в OpenViking и как они работают?
В OpenViking предусмотрены три уровня обработки контекста:
* L0 — абстрактное описание, представляющее собой краткое изложение в одном предложении, используемое для быстрого поиска и идентификации.
* L1 — обзор, содержащий основную информацию и сценарии использования для планирования.
* L2 — полное исходное содержимое, предназначенное для глубокого чтения только при необходимости.
4. Какие возможности предоставляет OpenViking для отладки и наблюдения за поиском?
OpenViking хранит траекторию просмотра каталогов и позиционирования файлов во время поиска. Это позволяет разработчикам проверить, как система перемещалась по иерархии для получения контекста.
5. Какие предварительные условия необходимы для реализации OpenViking и как его можно установить?
Для реализации OpenViking требуются Python 3.10+, Go 1.22+, и GCC 9+ или Clang 11+, с поддержкой Linux, macOS и Windows. Установка доступна через `pip install openviking —upgrade —force-reinstall`. Также есть дополнительный интерфейс командной строки на Rust под названием `ov_cli`, который можно установить через скрипт или собрать с помощью Cargo.