ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何配置 create-context-graph 记忆层:LiteLLM 提供商注入与本地 Ollama 离线方案完整指南

如何配置 create-context-graph 记忆层:LiteLLM 提供商注入与本地 Ollama 离线方案完整指南

【免费下载链接】create-context-graph

AI agents with graph based reasoning memory, scaffolded in seconds

项目地址:https://gitcode.com/gh_mirrors/cr/create-context-graph
点击查看免费下载

create-context-graph 是一个用图推理记忆(graph based reasoning memory)驱动 AI Agent 的脚手架工具。它的记忆层(实体抽取 + 向量嵌入)通过MEMORY_LLM和MEMORY_EMBEDDING两个环境变量接受LiteLLM 风格提供商字符串,无需改一行代码即可接入 100+ 模型提供商;本文还将带你用本地Ollama搭建一套完全离线、零 API Key 的记忆层方案。

先搞清楚:记忆层到底需要什么模型?

记忆层是生成应用中负责"记住知识"的部分,它和Agent 本身的大脑是分开的,由两个独立角色组成:

环境变量负责什么默认回退(未设置时)
MEMORY_LLM从聊天消息中抽取实体(实体抽取)有ANTHROPIC_API_KEY→anthropic/claude-haiku-4-5;有OPENAI_API_KEY→openai/gpt-4o-mini;都没有则关闭抽取并打警告日志
MEMORY_EMBEDDING为记忆检索生成向量嵌入sentence-transformers/all-MiniLM-L6-v2(本地运行,无需 API Key,可离线)

💡 注意区分:Agent 对话用的大模型由各框架自己的配置(ANTHROPIC_API_KEY/OPENAI_API_KEY/GOOGLE_API_KEY)控制,MEMORY_*只管记忆层。这正是"提供商注入"设计的精妙之处——两边的模型可以各选各的。

三种记忆类型(短期会话、长期知识图谱、决策推理链)如何协同工作,官方文档有专门讲解,可参考 three-memory-types.md。

LiteLLM 提供商注入:两种解析路径

提供商字符串采用提供商/模型名的格式(如ollama/llama3),解析时遵循"原生适配器优先"策略:

  1. 原生适配器:Anthropic、OpenAI、Bedrock、Vertex AI、SentenceTransformers 这 5 家直接走官方 SDK,延迟更低,且支持 prompt caching;
  2. LiteLLM 兜底:其他任何提供商(Ollama、Groq、Together AI、Mistral、OpenRouter、Cohere……)全部自动路由到 LiteLLM 处理,无需你手动装 SDK、写胶水代码。

这套逻辑就写在生成项目的 memory.py.j2 模板里:原生适配器先解析,其余交给 LiteLLM。完整的提供商对照表和认证变量说明见官方文档 configure-memory-providers.md。

一键配置步骤:修改 .env 即可

所有配置都在生成项目的.env文件中完成,模板见 dot_env_example.j2,里面自带了所有提供商示例注释。

场景一:云提供商组合(示例:Bedrock 做抽取 + 本地模型做嵌入)

MEMORY_LLM=bedrock/anthropic.claude-3-haiku-20240307-v1:0 MEMORY_EMBEDDING=sentence-transformers/all-MiniLM-L6-v2 AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_REGION_NAME=us-east-1

场景二:OpenAI 高质量嵌入(付费,效果更好)

MEMORY_EMBEDDING=openai/text-embedding-3-small OPENAI_API_KEY=sk-... # MEMORY_LLM 留空 — 自动回退到 Anthropic

LiteLLM 会自动从标准环境变量中读取各提供商的凭证(GROQ_API_KEY、GOOGLE_APPLICATION_CREDENTIALS等),Ollama 则完全不需要 Key。

另外,脚手架阶段也能直接注入:CLI 提供--memory-llm和--memory-embedding参数(见 cli.py),生成时就把提供商写进.env。

本地 Ollama 离线方案:零 API Key 的记忆层

如果你有合规要求、在内网开发,或者就是不想按 token 付费,Ollama 可以让记忆层100% 本地运行:

第一步:启动 Ollama 并拉取模型

ollama pull llama3 # 实体抽取用的对话模型 ollama pull nomic-embed-text # 向量嵌入模型

第二步:在.env中切换到 Ollama

MEMORY_LLM=ollama/llama3 MEMORY_EMBEDDING=ollama/nomic-embed-text

第三步:重启后端,完成 ✅

就这三步。Ollama 假设运行在本机默认端口,不需要任何 API Key。配合自托管 Neo4j(--self-hosted),整条数据链路——图存储、实体抽取、向量检索——全部留在你的机器上。

两个容易忽略的细节:

  • NAMS 托管后端下,嵌入由服务端管理,客户端嵌入器会被自动省略(除非你显式设置了MEMORY_EMBEDDING),见 memory.py.j2 中的_resolve_embedding_model();
  • bolt 自托管后端下,默认就选本地sentence-transformers/all-MiniLM-L6-v2,离线可用,只是首次下载约 80 MB,之后走缓存。

常见问题排查(Troubleshooting)

问题现象原因与解法
首次运行时嵌入下载卡住sentence-transformers 首次拉取约 80 MB,属正常现象,后续运行走缓存
ProviderNotFoundError报错提供商字符串写错了,对照官方提供商目录检查标识符(如ollama/llama3而非ollama:llama3)
记忆层完全不调用 LLM检查对应 API Key 环境变量是否已设置;默认回退仅在ANTHROPIC_API_KEY或OPENAI_API_KEY存在时生效
切换嵌入模型后检索报错向量维度不匹配——不同维度模型的向量互不兼容,执行make reset后重新导入数据即可
NAMS 后端下配置了本地嵌入NAMS 托管后端在云端做嵌入,建议保留默认(留空MEMORY_EMBEDDING),把 Ollama 方案用于 bolt 自托管

后端选择的详细说明(NAMS vs 自托管、离线开发场景)可参考 memory-backends.md。

总结

  • 记忆层模型配置 = 改两个环境变量:MEMORY_LLM(实体抽取)+MEMORY_EMBEDDING(向量嵌入),与 Agent 主模型互不干扰;
  • 原生适配器优先(Anthropic / OpenAI / Bedrock / Vertex / 本地 SentenceTransformers),其余提供商LiteLLM 自动兜底,100+ 提供商开箱即用;
  • 全离线方案只需ollama pull两个模型 + 两行.env配置,零 API Key、零外部依赖;
  • 切换嵌入模型时留意向量维度,必要时make reset重建数据。

官方完整配置参考:configure-memory-providers.md

【免费下载链接】create-context-graph

AI agents with graph based reasoning memory, scaffolded in seconds

项目地址:https://gitcode.com/gh_mirrors/cr/create-context-graph
点击查看免费下载

相关推荐

上一篇:WinPython 3.7.7.1dot(32 位)发行版包构成解析:dot 精简风味的清单机制与构建工具链
下一篇:Coursebook同步章总览:互斥锁与条件变量入门完全指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进