hermes 外部记忆openviking服务端embedding模型使用llama.cpp

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

环境
Win11,WSL2,Ubuntu24.04

openviking-server --version
openviking-server 0.4.10

ov --help
OpenViking v0.4.11.dev0

一、相关文档

记忆提供程序

Memory Providers

openviking简介

openviking快速开始

在线服务

OpenViking Service(火山引擎云)

产品介绍

二、备份数据

停止服务

(Ctrl+C 或)pkill -f openviking-server

备份数据目录

cp -r ~/.openviking/data ~/.openviking/data_backup_volc_embedding

三、切换embedding模型

doubao-embedding-vision

新版本Seed-1.6-embedding图文多模态向量化模型全新上线,主要面向图文多模向量检索的使用场景,支持图片输入及中、英双语文本输入,最长 8K 上下文长度。

输入:文本、图片、视频

(openviking不支持其他厂商嵌入模型的多模态能力)

bge-small-zh-v1.5-f16(huggingface)

bge-small-zh-v1.5-f16(官网)

FlagEmbedding 能够将任意文本映射为低维稠密向量,可用于检索、分类、聚类、语义搜索等任务,同时也可配合大语言模型应用于向量数据库场景中。

openviking-server init操作

uadmin@PC26:~$ openviking-server init

╭─────────────────────────────────────────────────────────╮
│  OpenViking Setup                                       │
│  Context database for AI agents — data in, context out  │
╰─────────────────────────────────────────────────────────╯
  Data will be stored under /home/uadmin/.openviking/data unless you edit ov.conf later.

  Existing config found: /home/uadmin/.openviking/ov.conf

  Current configuration
    Embedding:     ollama · qwen3-embedding-cpu:0.6b (1024d)
    VLM:           litellm · ollama/qwen3.6:35b
    Query planner: litellm · ollama/guoxuter/ov_intent_analysis_sft:v7_q8
    Server:        127.0.0.1:1933 · auth dev (no auth)

  What would you like to do?  ↑/↓ move · enter select

  ❯ Start over  (full setup, current config backed up as .bak)
    Update VLM  (now: litellm · ollama/qwen3.6:35b)
    Update embedding  (now: ollama · qwen3-embedding-cpu:0.6b (1024d))
    Update server & auth  (now: 127.0.0.1:1933 · auth dev (no auth))
    Cancel

选择Update embedding
---------------------------------------------------------------------------------------

  ❯ Update embedding

  Current embedding: ollama · qwen3-embedding-cpu:0.6b (1024d)

  Embedding setup:  ↑/↓ move · enter select

    Cloud API  (VolcEngine, BytePlus, OpenAI)
  ❯ Local via Ollama  (no API key, runs on this machine)
    Lightweight CPU embedding  (llama.cpp, ~24 MB, no Ollama needed)

选择Lightweight CPU embedding
---------------------------------------------------------------------------------------

  ❯ Lightweight CPU embedding

  Checking llama-cpp-python... not installed

  llama-cpp-python is required for local CPU embedding.
  Install now? (pip install "openviking[local-embed]") [Y/n]:

输入Y
---------------------------------------------------------------------------------------

  Install now? (pip install "openviking[local-embed]") [Y/n]: Y

/home/uadmin/.local/share/uv/tools/openviking/bin/python: No module named pip
  Native build failed, retrying with generic CPU flags...
/home/uadmin/.local/share/uv/tools/openviking/bin/python: No module named pip
  Installation failed.
  Try manually: pip install "openviking[local-embed]"
  Continue anyway? (config will be generated) [y/N]:

输入N
---------------------------------------------------------------------------------------

  Continue anyway? (config will be generated) [y/N]: N

  Setup cancelled.

安装系统编译依赖(llama-cpp-python 编译需要)
sudo apt update && sudo apt install -y build-essential cmake

用 uv 原生方式安装本地嵌入依赖
直接用 uv 给 OpenViking 工具环境添加 local-embed 额外依赖,uv 会自动处理安装,不需要 pip:
uv tool install --reinstall "openviking[local-embed]"
说明:--reinstall 会保留你原有配置,仅补充安装额外依赖包(包括 llama-cpp-python)。

另一种安装方法

手动给 openviking 的 uv 环境安装依赖:
uv pip install --python ~/.local/share/uv/tools/openviking/bin/python "openviking[local-embed]"

重新执行openviking-server init

  ❯ Lightweight CPU embedding

  Checking llama-cpp-python... installed

  Embedding model:  ↑/↓ move · enter select

  ❯ BGE-small-zh v1.5 (f16)  (512d, ~24 MB)

选择BGE-small-zh v1.5 (f16)
---------------------------------------------------------------------------------------

 ❯ BGE-small-zh v1.5 (f16)
  Model 'bge-small-zh-v1.5-f16' not downloaded yet. Download now? (~24 MB) [Y/n]:

输入Y
---------------------------------------------------------------------------------------

  Model 'bge-small-zh-v1.5-f16' not downloaded yet. Download now? (~24 MB) [Y/n]: Y

  Downloading...

---------------------------------------------------------------------------------------

  Model 'bge-small-zh-v1.5-f16' not downloaded yet. Download now? (~24 MB) [Y/n]: Y

  Download failed: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /CompendiumLabs/bge-small-zh-v1.5-gguf/resolve/main/bge-small-zh-v1.5-f16.gguf?download=true (Caused by NewConnectionError("HTTPSConnection(host='huggingface.co', port=443): Failed to establish a new connection: [Errno 101] Network is unreachable"))
  Model will be auto-downloaded on first server start.

  Embedding dimension changes from 1024 to 512.
  Existing vector indexes become unusable — data must be re-ingested.
  Continue? [y/N]:

网络报错,先输入N
---------------------------------------------------------------------------------------

  Continue? [y/N]: N

  Setup cancelled.

重新执行openviking-server init

打开网络代理

  Model 'bge-small-zh-v1.5-f16' not downloaded yet. Download now? (~24 MB) [Y/n]: Y

  Downloading...

---------------------------------------------------------------------------------------

  Model 'bge-small-zh-v1.5-f16' not downloaded yet. Download now? (~24 MB) [Y/n]: Y

  OK Model downloaded to /home/uadmin/.cache/openviking/models/bge-small-zh-v1.5-f16.gguf

  Embedding dimension changes from 1024 to 512.
  Existing vector indexes become unusable — data must be re-ingested.
  Continue? [y/N]:

输入y
---------------------------------------------------------------------------------------

  Continue? [y/N]: y

  Change: ollama · qwen3-embedding-cpu:0.6b (1024d)
      →    local · bge-small-zh-v1.5-f16 (512d)

  Save configuration? [Y/n]:

输入Y
---------------------------------------------------------------------------------------

  Save configuration? [Y/n]: Y
  Existing config backed up to /home/uadmin/.openviking/ov.conf.bak.5
  OK Configuration updated

  Validate the setup now? (runs `openviking-server doctor`) [Y/n]:

输入Y
---------------------------------------------------------------------------------------

  Validate the setup now? (runs `openviking-server doctor`) [Y/n]: Y

OpenViking Doctor

  Config:        PASS  /home/uadmin/.openviking/ov.conf
  Python:        PASS  3.11.15 (>= 3.10 required)
  Native Engine: PASS  variant=x86_avx2
  AGFS:          PASS  AGFS SDK 0.1.7
  Embedding:     PASS  local/bge-small-zh-v1.5-f16 (/home/uadmin/.cache/openviking/models/bge-small-zh-v1.5-f16.gguf)
  VLM:           PASS  litellm/ollama/qwen3.6:35b
  Ollama:        PASS  running at localhost:11434
  VikingBot:     PASS  VikingBot aligned with dev OpenViking auth
  Disk:          PASS  947.5 GB free in /home/uadmin/.openviking/data

  All checks passed.

  Start the server now? [y/N]:

输入N,手动启动
---------------------------------------------------------------------------------------

  Start the server now? [y/N]: N

配置文件ov.conf

~/.openviking/ov.conf

  "embedding": {
    "dense": {
      "provider": "local",
      "model": "bge-small-zh-v1.5-f16",
      "dimension": 512
    }
  },

更换嵌入模型后,向量数据需要处理。

如果是少量测试数据,可以清理了。如果想保留数据可以重建向量数据。

四、清理向量数据

停止服务

(Ctrl+C 或)pkill -f openviking-server

备份数据目录

cp -r ~/.openviking/data ~/.openviking/data_backup_volc_embedding

删除目录
rm -rf ~/.openviking/data/*
#mv ~/.openviking/data ~/.openviking/data1

重启服务会生成data目录

openviking-server

五、处理向量数据

启动服务

openviking-server

日志报错

openviking.storage.errors.EmbeddingRebuildRequiredError: Existing collection embedding dimension (1024) does not match current configuration (512). Vectors are incompatible; rebuild is required.

删除向量数据库目录

rm -rf ~/.openviking/data/vectordb

再次启动服务

openviking-server

重建向量数据

看根目录有什么

ov ls viking:///

uadmin@UD26:~$ ov ls viking:///
cmd: ov ls viking:/// -l 256 -n 256
1. dir · 2026-07-27 06:28
   viking://resources
   本目录是 Hermes Agent
   框架的核心文档集合,专注于指导开发者构建具备长期记忆能力和复杂推理能力的智能 Agent...

2. dir · 2026-07-27 06:52
   viking://user
   This directory serves as the central hub for the `user` component within a sophisticated AI
   assistant framework. The primary focus is on managing persistent user identity, ensuring secu...

# 1. 重建全局资源库的向量(手动导入的文档、素材、公共资源)
ov reindex viking://resources/ --mode vectors_only --wait true

# 2. 重建默认用户的所有对话记忆与个人数据的向量
ov reindex viking://user/default/ --mode vectors_only --wait true

uadmin@UD26:~$ ov reindex viking://resources/ --mode vectors_only --wait true
status                completed
uri                   viking://resources
object_type           resource
mode                  vectors_only
scanned_records       12
rebuilt_records       17
deleted_records       0
would_delete_records  0
unsupported_records   0
failed_records        0
duration_ms           6528
warnings              []

uadmin@UD26:~$ ov reindex viking://user/default/ --mode vectors_only --wait true
status                completed
uri                   viking://user/default
object_type           user_namespace
mode                  vectors_only
scanned_records       34
rebuilt_records       36
deleted_records       0
would_delete_records  0
unsupported_records   0
failed_records        0
duration_ms           11923
warnings              []

测试

ov find "测试标记"

uadmin@UD26:~$ ov find "测试标记"
cmd: ov find --uri= -n 10 "测试标记"
9 results
Ranked by relevance · limit 10 final results

1. memory · Level 2 · score 0.565
   viking://user/default/memories/preferences/2026/07/24/凌晨开发_openviking-20260724.md
   测试标记为 openviking-20260724,开发者凌晨仍在开发中。

2. memory · Level 2 · score 0.467
   viking://user/default/memories/experiences/viking_search验证开发环境记忆.md
   ## Situation - 用户要求使用viking_search工具搜索开发环境相关内容,验证新存储记忆的语义检索有效性
   ## Approach - 调用viking_search工具,传入开发环境相关的搜索关键词 -...

3. memory · Level 1 · score 0.459
   viking://user/default/memories/cases/.overview.md
   No abstract available.
...

ov find --help

重新生成语义摘要和重建向量索引

一般重建向量数据即可,不用重建语义摘要。

# 1. 全局资源库:重新生成语义摘要 + 重建向量索引
ov reindex viking://resources/ --mode semantic_and_vectors --wait true

# 2. 默认用户记忆库:重新生成语义摘要 + 重建向量索引
ov reindex viking://user/default/ --mode semantic_and_vectors --wait true

uadmin@PC26:~$ ov reindex viking://resources/ --mode semantic_and_vectors --wait true
status                completed
uri                   viking://resources
object_type           resource
mode                  semantic_and_vectors
scanned_records       12
rebuilt_records       17
deleted_records       0
would_delete_records  0
unsupported_records   0
failed_records        0
duration_ms           48866
warnings              []

# 这句命令更容易报错
uadmin@PC26:~$ ov reindex viking://user/default/ --mode semantic_and_vectors
ov reindex viking://user/default/ --mode semantic_and_vectors

╭─ Request Timeout ────────────────────────────────────────────────────╮
│ OpenViking did not respond before the configured timeout expired.    │
╰──────────────────────────────────────────────────────────────────────╯

Next:
  ov config       Increase the request timeout
  ov config show  Show the active config

openviking-server日志报错

[07/27/26 06:51:58] ERROR    Task was destroyed but it is pending!                                                                                                                            base_events.py:1785
                             task: <Task pending name='Task-1659' coro=<LoggingWorker._worker_loop() done, defined at
                             /home/uadmin/.local/share/uv/tools/openviking/lib/python3.11/site-packages/litellm/litellm_core_utils/logging_worker.py:109> wait_for=<Future cancelled>>

问题分析,可能是Ollama压力稍大,处理不过来

适当调整配置

Ollma环境变量

# 允许同时处理 2 个推理请求,VLM 与嵌入任务并行执行,避免完全串行排队
OLLAMA_NUM_PARALLEL=2
# 允许 2 个模型同时常驻显存,避免 VLM 和嵌入模型来回加载卸载
OLLAMA_MAX_LOADED_MODELS=2
# 开启 FlashAttention 硬件加速,降低显存占用、提升推理速度
OLLAMA_FLASH_ATTENTION=1 

ollama serve(重启Ollama)
启动日志能看见这个几个变量

ov.conf配置

vlm模型从"num_ctx": 16384,改到8192(重启服务)(后来又改回去了)

再次执行

如果openviking-server日志里有报错,ov命令执行成功了,可以接受。

测试ov find

ov find "测试标记" -u viking://user/default

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

标题基于SpringBoot的校园创客空间管理系统设计与实现AI更换标题第1章引言介绍校园创客空间管理系统的研究背景、意义、国内外研究现状、论文方法与创新点。1.1研究背景与意义阐述校园创客空间的发展现状及其对管理系统的需求。1.2国内外研究现状分析国内外校园创客空间管理系统的研究进展。1.3研究方法及创新点概述本文采用的研究方法及系统设计的创新点。第2章相关理论总结SpringBoot框架及相关技术,确立系统设计的理论基础。2.1SpringBoot框架概述介绍SpringBoot框架的特点、优势及在Web开发中的应用。2.2相关技术总结概述数据库技术、前端技术及系统安全技术等。2.3理论基础确立基于上述理论,确立校园创客空间管理系统的设计基础。第3章系统需求分析详细分析校园创客空间管理系统的功能需求、性能需求及用户需求。3.1功能需求分析列举系统应具备的核心功能,如用户管理、项目管理等。3.2性能需求分析分析系统对响应时间、并发处理能力等性能指标的要求。3.3用户需求分析从用户角度出发,分析用户对系统的期望和需求。第4章系统设计详细介绍系统的架构设计、数据库设计及界面设计。4.1系统架构设计给出系统的整体架构,包括前后端分离、微服务架构等。4.2数据库设计设计系统的数据库结构,包括表结构、索引及关系等。4.3界面设计展示系统的用户界面设计,包括页面布局、交互设计等。第5章系统实现与测试阐述系统的实现过程,包括编码实现、系统集成及测试验证。5.1编码实现介绍系统各模块的编码实现过程及关键技术点。5.2系统集成系统各模块之间的集成方式及集成测试过程。5.3测试验证通过单元测试、集成测试等方法验证系统的功能和性能。第6章结论与展望总结系统设计与实现的主要成果,提出未来研究方向。6.1研究结论概括系统设计与实现的主要成果,包括功能实现、性能优化等。6.2展望指出系统存在的不足及
内容概要:本文系统研究了基于分布式模型预测控制(DMPC)的多个固定翼无人机一致性控制问题,提出并实现了相应的Matlab仿真方案。通过建立固定翼无人机精确的动力学模型,结合分布式控制架构,采用模型预测控制策略,使多个无人机在无中央协调的情况下实现状态一致性,如位置、速度和航向的协同收敛。文中详尽阐述了系统建模、控制算法设计、一致性协议构建及Matlab代码实现过程,重点解决了通信延迟、局部信息交互受限以及动态环境适应性等关键技术难点,并通过大量仿真实验验证了该方法的有效性、鲁棒性与可扩展性。; 适合人群:具备一定现代控制理论基础和Matlab编程能力,从事自动化、航空航天、机器人学、集群智能或智能系统等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多无人机协同飞行、编队控制、集群作业与自主导航等实际场景;②服务于高校科研项目、课程设计、学位论文研究及工程原型开发,旨在深入掌握分布式控制与模型预测控制的融合机制与工程实现;③帮助读者复现已有算法成果,并为进一步研究复杂通信拓扑、障碍规避与任务分配等高级功能提供坚实基础。; 阅读建议:建议读者结合Matlab代码与文中的理论推导同步学习,动手搭建仿真模型,重点关注状态一致性收敛过程、代价函数设计与控制参数调优策略,同时可尝试拓展至不同初始条件、通信拓扑结构及外部干扰场景下的性能测试与分析。
内容概要:本文围绕基于蜣螂优化算法(DBO)的无线传感器网络(WSN)覆盖优化问题展开研究,旨在通过智能优化算法提升网络覆盖率与资源利用效率。研究采用Matlab进行算法实现,通过对传感器节点的部署位置进行全局寻优,最大化监测区域的覆盖范围并减少覆盖盲区。文中系统阐述了蜣螂优化算法的原理、WSN覆盖模型的构建、适应度函数的设计及仿真流程,并通过对比实验验证了DBO算法在收敛速度、优化精度和稳定性方面相较于传统优化方法的优越性。研究不仅提供了完整的代码实现,还探讨了算法在物联网、环境监测等实际场景中的应用潜力,突出了智能优化技术在解决复杂工程问题中的价值。; 适合人群:具备一定编程基础,熟悉Matlab编程环境,从事无线传感器网络、智能优化算法、物联网应用或相关领域研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①解决无线传感器网络中节点部署导致的覆盖不均与资源浪费问题;②提升复杂环境下WSN的监测覆盖率与系统稳定性;③为智能优化算法在通信网络布局、环境监控、智慧农业等领域的工程应用提供可复现的技术范例; 阅读建议:建议结合提供的Matlab代码进行仿真实验,深入理解蜣螂优化算法的参数设置、迭代机制与收敛特性,同时可尝试将其迁移应用于其他组合优化问题如路径规划、任务调度或多目标优化中,以拓展算法的应用边界。
源码下载地址: https://pan.quark.cn/s/7385d689617d AIS解码算法达成6位码的数据获取 AIS(Automatic Identification System,自动识别系统)是一种用于船舶自动识别和追踪的系统,它运用6位码对信息进行编码和传输。在实际操作中,我们需要将AIS传输的信息解密并提取出有用的内容。下面我们将阐述AIS解码算法的实现过程。 一、将ASCII码转换为6位二进制数值 在AIS系统中,信息是采用6位码进行编码的,因此我们需要将ASCII码转换为6位二进制数值。这个过程可以通过bool EightByteToSix(BYTE inEight, BYTE &outSix)函数完成。该函数将ASCII码转换为6位二进制数值,并将结果存储在outSix中。 函数的实现可以分为三个阶段: 1. 验证输入的ASCII码是否合法。 2. 将ASCII码转换为6位二进制数值。 3. 如果SUM大于10000000,则加上101000,否则加上101000。 二、将ASCII码字符串转换为6位二进制数值数组 在实际操作中,我们需要将ASCII码字符串转换为6位二进制数值数组。这可以通过bool EightStrToSix(CString inEight, LPBYTE outSix)函数实现。该函数将ASCII码字符串转换为6位二进制数值数组,并将结果存储在outSix中。 函数的实现可以分为五个步骤: 1. 将ASCII码字符串转换为6位二进制数值。 2. 将6位二进制数值保存到字节中。 3. 将字节保存到输出数组中。 4. 处理每个ASCII码的转换过程。 5. 将结果保存到输出数组中。 三、AIS解码算法的实现过程 AI...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值