news 2026/7/27 13:51:53

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hermes 外部记忆openviking服务端embedding模型使用llama.cpp1

环境
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

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

openviking-server init操作

uadmin@UD26:~$ 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: openai · text-embedding-v4 (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: openai · text-embedding-v4 (1024d)) Update server & auth (now: 127.0.0.1:1933 · auth dev (no auth)) Cancel 选Update embedding --------------------------------------------------------------------------------------- ❯ Update embedding Current embedding: openai · text-embedding-v4 (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) 选Local via Ollama --------------------------------------------------------------------------------------- ❯ Local via Ollama Checking Ollama... not installed Install Ollama now? [Y/n]: 输入n --------------------------------------------------------------------------------------- Install Ollama now? [Y/n]: n Manual install: https://ollama.com/download Continue without Ollama? [y/N]: 输入y --------------------------------------------------------------------------------------- Embedding model — powers semantic search: ↑/↓ move · enter select · ← back Qwen3-Embedding 0.6B (1024d, ~639 MB) Qwen3-Embedding 4B (1024d, ~2.5 GB) ❯ Qwen3-Embedding 8B (1024d, ~4.7 GB) * EmbeddingGemma 300M (768d, ~622 MB) 选择Qwen3-Embedding 0.6B --------------------------------------------------------------------------------------- ❯ Qwen3-Embedding 0.6B Change: openai · text-embedding-v4 (1024d) → ollama · qwen3-embedding:0.6b (1024d) Save configuration? [Y/n]: 输入Y --------------------------------------------------------------------------------------- Save configuration? [Y/n]: Y Existing config backed up to /home/uadmin/.openviking/ov.conf.bak.2 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 08:05:58 - LiteLLM:WARNING: get_model_cost_map.py:264 - LiteLLM: Failed to fetch remote model cost map from https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json: The read operation timed out. Falling back to local backup. Embedding: PASS ollama/qwen3-embedding:0.6b api_base=http://localhost:11434/v1 dimension=1024 probe ok (dimension=1024) VLM: PASS litellm/ollama/qwen3.6:35b Ollama: PASS running at localhost:11434 VikingBot: PASS VikingBot aligned with dev OpenViking auth Disk: PASS 948.3 GB free in /home/uadmin/.openviking/data All checks passed. Start the server now? [y/N]: 输入N --------------------------------------------------------------------------------------- Start the server now? [y/N]: N --------------------------------------------------------------------------------------- 这个警告可以忽略。 LiteLLM 在初始化时,会默认尝试从 GitHub 远程拉取一份 model_prices_and_context_window.json 文件,这份文件的作用是: 记录各云端 API 模型的 token 单价,用于计费、成本统计; 补充部分模型的上下文窗口、参数元数据。 --------------------------------------------------------------------------------------- 再次执行就好了 uadmin@UD26:~$ openviking-server doctor 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 ollama/qwen3-embedding:0.6b api_base=http://localhost:11434/v1 dimension=1024 probe ok (dimension=1024) VLM: PASS litellm/ollama/qwen3.6:35b Ollama: PASS running at localhost:11434 VikingBot: PASS VikingBot aligned with dev OpenViking auth Disk: PASS 948.3 GB free in /home/uadmin/.openviking/data All checks passed.

openviking-server init操作日志

uadmin@UD26:~$ 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: openai · text-embedding-v4 (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 ❯ Update embedding Current embedding: openai · text-embedding-v4 (1024d) Embedding setup: ↑/↓ move · enter select ❯ Local via Ollama Checking Ollama... not installed Install Ollama now? [Y/n]: n Manual install: https://ollama.com/download Continue without Ollama? [y/N]: y Embedding model — powers semantic search: ↑/↓ move · enter select · ← back ❯ Qwen3-Embedding 0.6B Change: openai · text-embedding-v4 (1024d) → ollama · qwen3-embedding:0.6b (1024d) Save configuration? [Y/n]: Y Existing config backed up to /home/uadmin/.openviking/ov.conf.bak.3 OK Configuration updated 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 08:38:37 - LiteLLM:WARNING: get_model_cost_map.py:264 - LiteLLM: Failed to fetch remote model cost map from https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json: The read operation timed out. Falling back to local backup. Embedding: PASS ollama/qwen3-embedding:0.6b api_base=http://localhost:11434/v1 dimension=1024 probe ok (dimension=1024) VLM: PASS litellm/ollama/qwen3.6:35b Ollama: PASS running at localhost:11434 VikingBot: PASS VikingBot aligned with dev OpenViking auth Disk: PASS 948.3 GB free in /home/uadmin/.openviking/data All checks passed. Start the server now? [y/N]: N --------------------------------------------------------------------------------------- 再次执行就好了 uadmin@UD26:~$ openviking-server doctor 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 ollama/qwen3-embedding:0.6b api_base=http://localhost:11434/v1 dimension=1024 probe ok (dimension=1024) VLM: PASS litellm/ollama/qwen3.6:35b Ollama: PASS running at localhost:11434 VikingBot: PASS VikingBot aligned with dev OpenViking auth Disk: PASS 948.3 GB free in /home/uadmin/.openviking/data All checks passed.

配置文件ov.conf

~/.openviking/ov.conf

~/.openviking/ov.conf "embedding": { "dense": { "provider": "ollama", "model": "qwen3-embedding:0.6b", "api_base": "http://localhost:11434/v1", "dimension": 1024, "input": "text" } },

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

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

五、清理向量数据

停止服务

(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 metadata does not match current configuration. Rebuild is required before using the current embedding model, or set embedding.allow_metadata_override=true to keep existing vectors when only provider/model changed (dimension must remain the same).
+------------------------------------

2026-07-26 08:42:11,110 - uvicorn.error - ERROR - Application startup failed. Exiting.

修改配置文件ov.conf

~/.openviking/ov.conf

在embedding下加入:"allow_metadata_override": true

~/.openviking/ov.conf "embedding": { "dense": { "provider": "ollama", "model": "qwen3-embedding:0.6b", "api_base": "http://localhost:11434/v1", "dimension": 1024, "input": "text" }, "allow_metadata_override": true },

再次启动服务

openviking-server

日志提示

2026-07-26 08:43:55,232 - openviking.storage.collection_schemas - WARNING - Embedding metadata changed (provider/model) but dimension is unchanged; embedding.allow_metadata_override=true, so the existing collection metadata will be rewritten and existing vectors kept. old={'dimension': 1024, 'model': 'text-embedding-v4', 'model_identity': 'text-embedding-v4', 'provider': 'openai'} new={'provider': 'ollama', 'model': 'qwen3-embedding:0.6b', 'dimension': 1024, 'model_identity': 'qwen3-embedding:0.6b'}

重建向量数据

看根目录有什么

ov ls viking:///

uadmin@UD26:~$ ov ls viking:/// cmd: ov ls viking:/// -l 256 -n 256 1. dir · 2026-07-26 01:05 viking://resources 本目录构成了 **Hermes Agent 框架** 的核心技术文档体系,专注于指导开发者构建、配置及优化具备跨会话持久化记忆能力的智能代理系统。... 2. dir · 2026-07-26 01:08 viking://user The `user` directory serves as a foundational component within a sophisticated, multi-agent AI assistant framework.

# 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 3035 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 5087 warnings []

测试

ov find "测试标记"

uadmin@UD26:~$ ov find "测试标记" cmd: ov find --uri= -n 10 "测试标记" 10 results Ranked by relevance · limit 10 final results 1. memory · Level 2 · score 0.556 viking://user/default/memories/preferences/2026/07/24/凌晨开发_openviking-20260724.md 测试标记为 openviking-20260724,开发者凌晨仍在开发中。 2. memory · Level 2 · score 0.441 viking://user/default/memories/cases/viking记忆保存与搜索验证.md # viking记忆保存与搜索验证 ## Task Signature 用户保存开发环境相关事实后,执行语义搜索验证记忆可被正确检索,再浏览viking根目录确认仓库结构... 3. memory · Level 1 · score 0.438 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@UD26:~$ ov reindex viking://resources/ --mode semantic_and_vectors --wait true ov reindex viking://resources/ --mode semantic_and_vectors --wait true ╭─ Connection Error ───────────────────────────────────────────────────╮ │ Could not reach OpenViking. The server may be offline, or this │ │ config points to the wrong URL. │ ╰──────────────────────────────────────────────────────────────────────╯ Next: ov config validate Check the active config ov health Run a quick server health check ov config switch Switch to another config # 这句命令更容易报错 uadmin@UD26:~$ ov reindex viking://user/default/ --mode semantic_and_vectors ov reindex viking://user/default/ --mode semantic_and_vectors ╭─ Connection Error ───────────────────────────────────────────────────╮ │ Could not reach OpenViking. The server may be offline, or this │ │ config points to the wrong URL. │ ╰──────────────────────────────────────────────────────────────────────╯ Next: ov config validate Check the active config ov health Run a quick server health check ov config switch Switch to another config

openviking-server日志报错

2026-07-26 10:04:27,750 - openviking.models.embedder.openai_embedders - WARNING - OpenAI async embedding slow call provider=ollama model=qwen3-embedding:0.6b wait_ms=0.00 duration_ms=17759.37 2026-07-26 10:04:38,832 - openviking.models.embedder.openai_embedders - WARNING - OpenAI async embedding slow call provider=ollama model=qwen3-embedding:0.6b wait_ms=0.00 duration_ms=10156.07 2026-07-26 10:05:15,026 - openviking.models.embedder.openai_embedders - WARNING - OpenAI async embedding slow call provider=ollama model=qwen3-embedding:0.6b wait_ms=0.00 duration_ms=6433.25 [07/26/26 10:05:13] INFO utils.py:3799 LiteLLM completion() model= qwen3.6:35b; provider = ollama ERROR Task was destroyed but it is pending! base_events.py:1785 task: <Task pending name='Task-381' coro=<LoggingWorker._worker_loop() running at /home/uadmin/.local/share/uv/tools/openviking/lib/python3.11/site-packages/litellm/litellm_core_utils/logging_worker.py:120> wait_for=<Future pending cb=[Task.task_wakeup()]>>

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

调整配置

Ollma环境变量

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

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

测试Ollama

可是在一个窗口发送命令:ollama run qwen3.6:35b "写一篇1000字的人工智能科普文章" 后

再开新窗口(同时)执行(PowerShell):

curl -Method Post -Uri "http://localhost:11434/api/embeddings" `
-ContentType "application/json" `
-Body '{"model": "qwen3-embedding:0.6b", "prompt": "测试文本"}' `
-UseBasicParsing

#curl.exe --% -X POST http://localhost:11434/api/embeddings -H "Content-Type: application/json" -d "{\"model\": \"qwen3-embedding:0.6b\", \"prompt\": \"测试文本\"}"

查看执行时间(PowerShell)

Measure-Command { curl -Method Post -Uri "http://localhost:11434/api/embeddings" `
-ContentType "application/json" `
-Body '{"model": "qwen3-embedding-cpu:0.6b", "prompt": "测试文本"}' `
-UseBasicParsing }

ov.conf配置

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

嵌入模型调整

嵌入模型改为:qwen3-embedding-cpu:0.6b,自定义模型,需要制作(简单)

再次执行

uadmin@UD26:~$ 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 51108 warnings [] uadmin@UD26:~$ ov reindex viking://user/default/ --mode semantic_and_vectors status completed uri viking://user/default object_type user_namespace mode semantic_and_vectors scanned_records 34 rebuilt_records 36 deleted_records 0 would_delete_records 0 unsupported_records 0 failed_records 0 duration_ms 59424 warnings []

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

测试ov find

uadmin@UD26:~$ ov find "测试标记" -u viking://user/default cmd: ov find --uri=viking://user/default -n 10 "测试标记" 10 results Ranked by relevance · limit 10 final results 1. memory · Level 2 · score 0.556 viking://user/default/memories/preferences/2026/07/24/凌晨开发_openviking-20260724.md 测试标记为 openviking-20260724,开发者凌晨仍在开发中。 2. memory · Level 2 · score 0.443 viking://user/default/memories/cases/viking记忆保存与搜索验证.md # viking记忆保存与搜索验证 ## Task Signature 用户保存开发环境相关事实后,执行语义搜索验证记忆可被正确检索,再浏览viking根目录确认仓库结构... 3. memory · Level 1 · score 0.438 viking://user/default/memories/cases/.overview.md No abstract available.

修改配置文件ov.conf

~/.openviking/ov.conf

在embedding下去掉:"allow_metadata_override": true

重启openviking服务

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 13:50:12

LLMFlows异步流教程:并行运行多个AI模型调用,提升应用效率300%

LLMFlows异步流教程&#xff1a;并行运行多个AI模型调用&#xff0c;提升应用效率300% 【免费下载链接】llmflows LLMFlows - Simple, Explicit and Transparent LLM Apps 项目地址: https://gitcode.com/gh_mirrors/ll/llmflows LLMFlows是一个专注于简化AI应用开发的P…

作者头像 李华
网站建设 2026/7/27 13:45:56

TI TPS25910负载开关EVM评估:浪涌抑制与电源时序控制实战

1. 项目概述与核心价值在服务器、存储阵列或者电信设备这类对电源可靠性要求极高的系统中&#xff0c;你肯定遇到过这样的场景&#xff1a;一块新的硬盘或板卡在带电状态下插入背板&#xff0c;瞬间的电流冲击可能导致系统电压跌落&#xff0c;甚至触发保护、导致重启。又或者&…

作者头像 李华
网站建设 2026/7/27 13:45:36

Go2TV技术解析:如何实现跨平台媒体投屏的现代解决方案

Go2TV技术解析&#xff1a;如何实现跨平台媒体投屏的现代解决方案 【免费下载链接】go2tv Cast media files to Smart TVs and Chromecast devices. 项目地址: https://gitcode.com/gh_mirrors/go/go2tv Go2TV是一个基于Go语言开发的开源投屏工具&#xff0c;它能够将本…

作者头像 李华