找回密码
 立即注册
首页 业界区 业界 OpenClaw+OpenViking + NVIDIA API 配置教程

OpenClaw+OpenViking + NVIDIA API 配置教程

染罕习 前天 13:10
本教程介绍如何在 OpenClaw 环境中配置 OpenViking,使用 NVIDIA NIM API 作为 Embedding 和 VLM 后端。
什么是 OpenViking?

OpenViking 是火山引擎开源的 AI Agent 上下文数据库。它用"虚拟文件系统"的方式管理 Agent 的记忆、资源和技能,提供:

  • 分层上下文:L0摘要 / L1概览 / L2全文,按需加载节省 Token
  • 语义搜索:融合目录定位与向量检索
  • 自动摘要:VLM 自动生成文档摘要和概览
  • 会话记忆:自动提取对话中的长期记忆
GitHub: https://github.com/volcengine/OpenViking
前置条件


  • Python 3.9+
  • NVIDIA NIM API Key(免费注册)
  • 稳定的网络连接
第一步:安装 OpenViking
  1. pip install openviking
复制代码
第二步:创建配置文件

创建目录和配置文件:
  1. mkdir -p ~/.openviking
复制代码
编辑 ~/.openviking/ov.conf:
  1. {  "embedding": {    "dense": {      "api_base": "https://integrate.api.nvidia.com/v1",      "api_key": "你的NVIDIA_API_KEY",      "provider": "openai",      "dimension": 4096,      "model": "nvidia/nv-embed-v1"    }  },  "vlm": {    "api_base": "https://integrate.api.nvidia.com/v1",    "api_key": "你的NVIDIA_API_KEY",    "provider": "openai",    "model": "meta/llama-3.3-70b-instruct"  }}
复制代码
配置说明

参数说明api_baseNVIDIA NIM API 端点api_key从 NVIDIA Build 平台获取dimensionEmbedding 维度,nv-embed-v1 固定为 4096embedding.model推荐使用 nvidia/nv-embed-v1(对称模型,不需要 input_type 参数)vlm.model用于生成摘要的语言模型,推荐 meta/llama-3.3-70b-instruct为什么不用 kimi-k2.5?

NVIDIA 上的推理模型(如 kimi-k2.5)返回的 content 字段为空,内容在 reasoning 字段里。OpenViking 期望标准的 message.content 格式,所以要用非推理模型。
如何获取 NVIDIA API Key


  • 访问 https://build.nvidia.com/
  • 登录/注册账号
  • 点击右上角用户名 → API Keys → Generate Key
  • 复制保存(只显示一次)
第三步:设置环境变量
  1. export OPENVIKING_CONFIG_FILE=~/.openviking/ov.conf
复制代码
建议添加到 ~/.bashrc:
  1. echo 'export OPENVIKING_CONFIG_FILE=~/.openviking/ov.conf' >> ~/.bashrcsource ~/.bashrc
复制代码
第四步:验证安装

创建测试脚本 test_openviking.py:
[code]import openviking as ov# 初始化客户端,数据存储在当前目录的 openviking_data 文件夹client = ov.SyncOpenViking(path="./openviking_data")try:    client.initialize()    print("✅ OpenViking 初始化成功!")        # 添加一个测试文件    result = client.add_resource(path="./your_file.md")    print(f"添加文件: {result}")        # 等待处理完成    print("等待处理...")    client.wait_processed()    print("✅ 处理完成!")        # 搜索测试    results = client.find("测试关键词", limit=3)    print(f"\n搜索结果:")    for r in results.resources:        print(f"  {r.uri} (score: {r.score:.4f})")        client.close()    print("\n
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册