Hindsight 记忆系统 FAQ 深度指南:从 RAG 对比、数据隔离到事件中心图的完整实战解析
【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight
Hindsight 是一个为 AI Agent 提供长期记忆的"类生命体"记忆系统,它用结构化事实、心智模型(Mental Models)与事件中心图(Event-Centric Graph)替代传统 RAG 的"文档块检索"。本文以 Hindsight 官方 FAQ 为骨架,结合仓库源码(配置实现、Admin CLI、API 文档)逐题拆解:读完你将掌握 Hindsight 与 RAG 的本质差异、retain / recall / reflect 三个核心操作的选型、用户数据隔离方案、zombie 操作(僵尸任务)的恢复流程,以及"事件中心图 vs 传统知识图谱"的底层设计原理。
Hindsight 是什么?它与 RAG 有何不同?
Hindsight 是一个使用**仿生数据结构(biomimetic data structures)**为 AI Agent 提供长期记忆的系统。与传统 RAG(Retrieval-Augmented Generation)相比,核心差异在于:
- 存储结构化事实而非原始文档块
- 构建心智模型,随时间整合知识(而非仅检索)
- 使用图结构关系连接实体与概念
- 支持时间感知检索的时序推理
- 支持倾向感知(disposition-aware)反思,进行细致推理
完整的六维能力对比见 RAG vs Memory:
| 能力 | RAG | Hindsight |
|---|---|---|
| 搜索策略 | 仅语义相似度 | 语义 + 关键词 + 图 + 时间 |
| 多跳推理 | 局限于检索到的块 | 跨实体关系的图遍历 |
| 时间查询 | 关键词匹配("spring") | 日期解析与范围过滤 |
| 实体理解 | 无 | 实体消解、共现追踪 |
| 知识整合 | 无状态 | 综合并演进的心智模型 |
| 倾向性 | 无 | 怀疑、字面、共情 3 种特质影响解释 |
从架构看,RAG 是"嵌入查询 → 向量相似度搜索 → 返回 top-k 块 → 生成响应"的单一检索策略;而 Hindsight 是"解析查询(提取时间表达式、实体)→ 并行执行 4 路检索(语义、BM25、图、时间)→ RRF 融合 → 交叉编码器重排 → 应用倾向特质 → 生成响应"的多策略、跨会话持久状态流水线。
官方 FAQ 中还提到 Hindsight 的独特优势,包括:基于 PostgreSQL(久经考验、可靠且广泛认知)、云原生架构支持水平扩展、支持自托管或 Hindsight Cloud、可扩展到数百万记忆且召回延迟 50–500ms,并为 Python / TypeScript / Go / Rust 提供 SDK,集成 LiteLLM / Vercel AI SDK 等。FAQ 中的相关描述(如排行榜排名、延迟数据)均以官方文档声明为准,读者可对照 Models 与 Performance 文档核实细节。
一句话总结:向量数据库只做"搜索",RAG 做"文档检索",而 Hindsight 提供随用户共同演进的活记忆(living memory)。
支持哪些客户端、语言、集成与 LLM 提供商?
客户端与语言
Hindsight 提供多语言 SDK。仓库中对应实现:
- Python:hindsight-clients/python(官方 Python SDK,
retain/recall/reflect等核心方法) - TypeScript / Node.js:hindsight-clients/typescript 以及聚合包 hindsight-all-npm
- Go:hindsight-clients/go(含 217 个 Go 源文件的完整客户端)
- Rust:hindsight-clients/rust
- CLI:hindsight-cli(Rust 实现的命令行工具)
- Embed:hindsight-embed(可直接嵌入应用的轻量运行方式)
集成
仓库 hindsight-integrations 中包含了大量框架集成,覆盖 Agent 框架(LangGraph、OpenAI Agents、CrewAI、smolagents、Pydantic AI、AutoGen、Haystack、LlamaIndex、Google ADK、AG2、Agno 等)、编程 Agent(Claude Code、Cursor、Copilot CLI、Codex、OpenCode、Cline、Aider、Roo Code、Zed 等)、对话平台(Dify、Flowise、n8n、Zapier、Vapi、Obsidian、Eliza 等)以及 LLM 网关(LiteLLM)等,具体清单见 Integrations Hub。
LLM 提供商
FAQ 列出的支持提供商包括:OpenAI、OpenAI Responses、Anthropic、Google Gemini、Vertex AI、Groq、Ollama、Ollama Cloud、LM Studio、llama.cpp、MiniMax、DeepSeek、z.ai、opencode-go、Atlas Cloud、Meta Model API、Volcano Engine、OpenRouter、Requesty、OpenAI Codex、Claude Code、GitHub Copilot、AWS Bedrock、Fireworks AI、Nous Portal、SuperGrok (OAuth)、OpenAI Compatible、LiteLLM(100+)。完整列表、推荐模型与配置示例见 Models。
从源码配置层看,提供商能力(Batch API、显式提示缓存)在 models.md 中有对照表:例如 OpenAI(openai)、Groq(groq)、Gemini(gemini)、Fireworks(fireworks)支持批量 API(约省 50% 成本);Gemini / Vertex AI 支持显式提示缓存(默认开启,可用HINDSIGHT_API_LLM_PROMPT_CACHE_ENABLED=false关闭)。
该选哪个模型?如何取舍?
FAQ 建议参考Model Leaderboard(模型排行榜),它在 accuracy(准确率)、speed(速度)、cost(成本)、reliability(可靠性)四个维度上对 retain、reflect 和 observation consolidation 进行基准测试,是寻找合适 trade-off 的最佳入口。
各提供商的默认模型(未显式设置HINDSIGHT_API_LLM_MODEL时生效,见 models.md)包括:
| 提供商 | 默认模型 |
|---|---|
openai | gpt-4o-mini |
openai-responses | gpt-5.6 |
anthropic | claude-haiku-4-5 |
gemini | gemini-3.5-flash |
vertexai | google/gemini-3.1-flash-lite |
groq | openai/gpt-oss-120b |
ollama | gemma3:12b |
ollama-cloud | gemma3:12b |
llamacpp | gemma-4-e2b-it(自动下载的 GGUF) |
deepseek | deepseek-v4-flash |
zai | glm-4.5-flash |
openrouter | qwen/qwen3.5-9b |
bedrock | us.amazon.nova-2-lite-v1:0 |
fireworks | accounts/fireworks/models/llama-v3p1-8b-instruct |
xai-oauth | grok-4.5 |
litellm | gpt-4o-mini |
只需设置提供商即可使用默认模型:
# 自动使用 claude-haiku-4-5 export HINDSIGHT_API_LLM_PROVIDER=anthropic export HINDSIGHT_API_LLM_API_KEY=sk-ant-xxxxxxxxxxxx也可显式覆盖,或做分操作覆盖(retain 用一家、reflect 用另一家):
export HINDSIGHT_API_LLM_PROVIDER=anthropic export HINDSIGHT_API_LLM_API_KEY=sk-ant-xxxxxxxxxxxx export HINDSIGHT_API_LLM_MODEL=claude-sonnet-4-5-20250929 # 全局默认用 OpenAI gpt-4o-mini export HINDSIGHT_API_LLM_PROVIDER=openai # retain 阶段改用 Anthropic 默认模型 export HINDSIGHT_API_RETAIN_LLM_PROVIDER=anthropic重要约束:未列出的其他模型也可以工作,但必须支持至少 65,000 输出 token以保证可靠的事实抽取。若模型仅支持 32k 或更少的输出 token,可调低 retain 的补全上限(必须大于HINDSIGHT_API_RETAIN_CHUNK_SIZE,默认 3000,否则启动时校验会报错):
export HINDSIGHT_API_RETAIN_MAX_COMPLETION_TOKENS=32000 # 或 16000FAQ 还特别提醒:Groq 免费层不适合 Hindsight——免费层每分钟仅 8,000 token,远低于单次 retain 调用约 64k 的需求。
需要自己托管基础设施吗?系统要求是什么?
不需要,有两种选择:
- Hindsight Cloud—— 全托管服务
- 自托管(Self-hosted)—— 使用 Docker 或直接安装部署在自己的基础设施上
自托管运行 Hindsight API 服务的最低系统要求:
- Python 3.11+
- 4GB RAM 起步(生产环境建议 8GB)
- LLM API Key(OpenAI、Anthropic 等)或本地 LLM 方案
自托管安装步骤见 Installation。仓库也提供了现成的部署素材:
- Docker:docker/standalone/Dockerfile、docker/standalone/start-all.sh,以及 docker/docker-compose 下针对外部 PostgreSQL、AlloyDB、Timescale、CUDA、本地 LLM、S3 文件存储、TEI、pg_search、pgroonga、vchord 等多种后端的 compose 编排
- Kubernetes / Helm:helm/hindsight(含 values.yaml 与 21 个模板文件,StatefulSet 会自动处理 worker 身份,下文详述)
什么是 "zombie" 操作?如何恢复?
Zombie 操作是卡在processing状态的后台任务:认领它的 worker 已经消失(典型场景是 Docker 容器重启后),但任务仍被标记为处理中。症状是/banks/{bank_id}/stats上的pending_consolidation(或类似)计数器永不下降,即使 worker 日志显示有大量空闲槽位。
根因:几乎总是不稳定的HINDSIGHT_API_WORKER_ID。默认情况下 worker 使用容器 hostname 作为身份标识,而 Docker 每次重启都会轮换容器 ID——新容器拿到不同的 ID,便不认旧 worker 的认领,这些任务就此搁浅。
在源码层可以印证这一机制:HINDSIGHT_API_WORKER_ID在 hindsight-api-slim/hindsight_api/config.py 中定义(ENV_WORKER_ID = "HINDSIGHT_API_WORKER_ID");worker 认领与释放的完整逻辑在 hindsight-api-slim/hindsight_api/worker/main.py 中实现。
恢复(使用 Admin CLI,相关命令实现在 hindsight-api-slim/hindsight_api/admin/cli.py):
# 如果你知道哪个 worker 已死: hindsight-admin decommission-worker <old-worker-id> # 或者,全舰队释放所有 worker 上卡住的任务: hindsight-admin decommission-workers两条命令都会把processing行重置回pending,让活着的 worker 在下次轮询时重新认领。建议先用hindsight-admin worker-status查看按 worker 分组的处理中任务(重点观察last_update_ago持续增长的 worker,即为失联者),完整诊断与恢复流程见 Admin CLI — Recovering stuck operations。
预防:设置一个稳定值HINDSIGHT_API_WORKER_ID:
- Docker:
-e HINDSIGHT_API_WORKER_ID=hindsight-prod(多副本则每个副本一个名字) - Kubernetes(Helm):chart 的 StatefulSet 已自动使用 pod 名称作为 worker ID,无需额外配置(见 helm/hindsight/templates/worker-statefulset.yaml)
- 裸机 / pip:传
--worker-id <name>或按进程设置环境变量
如何隔离用户数据?
Memory Bank(记忆银行)是一个隔离的记忆存储(类似一个"大脑"),拥有自己的记忆、实体、关系和可选的倾向特质(怀疑 skepticism、字面 literalism、共情 empathy)。银行之间完全隔离,无数据泄漏。
多用户应用有两种方案:
方案 1:每用户一个 Memory Bank(推荐用于大多数场景)
- 为每个用户创建一个银行(如
bank_id="user-123") - 设置最简单、数据隔离最强
- 适合按用户查询与个性化
- 每个银行可有独立的倾向特质和背景上下文
- 局限:无法做跨用户分析(如"所有用户讨论最多的主题是什么?")
方案 2:单一银行 + 标签(适用于需要聚合洞察的应用)
- 整个应用只用一个银行
- retain 时给记忆打上用户标识标签(如
tags={"user_id": "user-123"}) - recall/reflect 时按标签过滤实现按用户查询
- 优势:既支持按用户查询,也支持跨用户聚合分析
决策建议:追求简单与隐私选每用户银行;需要跨用户整体推理选"单银行 + 标签"。银行管理细节见 Memory Banks。
retain、recall、reflect 有什么区别?何时用 recall、何时用 reflect?
三个核心操作:
- Retain(保留):存储数据(事实、实体、关系)
- Recall(回忆):基于查询搜索并检索原始记忆数据
- Reflect(反思):使用 AI Agent 基于检索到的记忆回答问题
recall vs reflect 的选型
用 recall 的场景:
- 想要原始事实来驱动自己的推理或 prompt
- 需要对记忆的解释有最大控制权
- 简单事实查询(如"Alice 对 X 说过什么?")
- 延迟敏感——recall 明显更快(50–500ms vs 1–10s)
- 想自己构建检索记忆之上的答案合成层
用 reflect 的场景:
- 想要开箱即用的答案(无需额外 LLM 调用)
- 需要由银行性格特质(怀疑、字面、共情)塑造的倾向感知响应
- 查询需要在事实、观察、心智模型之间做多步推理
- 需要结构化输出(通过
response_schema) - 需要引用来源——reflect 会返回哪些记忆、心智模型和指令参与了答案
recall("What food does Alice like?") # → ["Alice loves sushi", "Alice prefers vegetarian options"] # 原始事实 reflect("What should I order for Alice?") # → "I'd recommend a vegetarian sushi platter — Alice loves sushi and prefers vegetarian options." # 有依据的答案关键区别:recall 返回数据;reflect 返回答案。recall 给你原始素材,reflect 用银行的倾向和自主搜索循环替你完成推理。API 细节见 Recall 与 Reflect。
何时使用心智模型(Mental Models)?它与知识页面(Knowledge Page)有何区别?
心智模型是预计算的答案——由你定义问题,Hindsight 从银行知识中综合生成,并在后台随知识变化自动重写。适合以下需求:
- 超越原始事实的更高层理解(如"用户偏好函数式编程模式")
- 长期行为模式(如"客户对价格敏感但重视质量")
- 请求路径上零推理、即时可得的答案
- 作为reflect期间 AI Agent 推理的上下文
你只需创建心智模型并定义它的问题;Hindsight 负责构建内容并保持其最新。Reflect 会先检查心智模型,所以一个新鲜的心智模型可以不用下沉到观察和原始事实就直接作答。详细 API 见 Mental Models。
Mental Model vs Knowledge Page
知识页面就是一个心智模型——相同的引擎、相同的刷新行为——只是多了两个东西:文件夹树中的一个位置,以及一组面向文档(而非答案)的默认值(仅从观察构建、每次整合后增量刷新、不受其他页面影响、更大的内容预算)。
| 心智模型 | 知识页面 | |
|---|---|---|
| 形态 | 对一个问题的常驻答案 | 带 frontmatter 的 Markdown 文档 |
| 组织 | 扁平列表,按标签限定作用域 | 嵌套文件夹与页面 |
| 来源 | 默认所有事实类型 | 默认仅观察 |
| 刷新 | 默认关闭 | 每次整合后增量刷新 |
| 典型消费者 | 你的应用或 Agent,按查找 | 浏览和阅读的人或 Agent |
选型:系统内按查找使用答案时用普通心智模型;结果需要像 wiki 一样被浏览和直接阅读时用知识页面。心智模型上能配置的一切,页面上也都能配置。参考 Mental Models 与开发者文档的 Knowledge Pages 章节。
心智模型创建与自动刷新(实战补充)
创建心智模型会在后台运行一次 reflect 并保存结果(Python / Node.js / CLI 均可):
result = client.create_mental_model( bank_id=BANK_ID, name="Team Communication Preferences", source_query="How does the team prefer to communicate?", tags=["team", "communication"] ) print(f"Operation ID: {result.operation_id}") # 异步操作,通过 operations 端点跟踪心智模型支持自动刷新触发器:refresh_after_consolidation(每次观察整合后刷新)、refresh_cron(UTC 5 字段 cron,二者互斥)、min_refresh_interval_seconds(自动刷新最小间隔,突发写入被折叠成一次刷新)、tags_match(默认all_strict,可改any)、fact_types、response_schema(结构化输出)等。刷新支持full(整体重写)与delta(基于操作的增量编辑,未涉及的内容逐字节原样保留)两种模式;对于长期存活的 delta 模式模型,建议定期"clear + refresh"(如每 48 小时)以重置累积漂移。
recall 的典型延迟是多少?
典型延迟:
- 不重排(without reranking):50–100ms
- 重排(with reranking):200–500ms(取决于重排器模型与部署方式)
调优选项见 Performance。FAQ 也提到 Hindsight 宣称可扩展至数百万记忆且保持 50–500ms 的召回延迟(生产级声明,以官方文档为准)。模型方面,默认嵌入模型为BAAI/bge-small-en-v1.5(384 维),默认交叉编码器重排模型为cross-encoder/ms-marco-MiniLM-L-6-v2,两者首次运行时自动从 HuggingFace 下载。
支持元数据过滤吗?Tags、实体标签与 metadata 的区别
支持——通过 Tags(标签)。标签是 retain 时附加在记忆上的字符串标签,在 recall/reflect 时作为可见性过滤器。只有标签匹配的记忆才会被返回:
# retain 时打标签 client.retain(bank_id="my-bank", items=[{ "content": "...", "tags": ["user:alice"], }]) # recall 时按标签过滤 client.recall(bank_id="my-bank", query="...", tags=["user:alice"])文档级标签等完整细节见 Tags。
按实体过滤?
从记忆中抽取的实体(人、地点、概念)存储在知识图谱中并驱动图检索——所以查询"tell me about Alice"会自然浮现与 Alice 相关的记忆,无需手动过滤。
如果需要对实体类值做显式标签过滤,请使用带tag: true的实体标签(Entity Labels)。实体标签让你定义一个受控的key:value分类词汇表(如user:alice、topic:algebra),在 retain 时抽取。设置tag: true后,每个抽取出的标签会自动写入该记忆单元的标签中,从而可用于标准tags/tags_match过滤:
# 银行配置:带 tag: true 的实体标签组 { "entity_labels": [{ "key": "user", "type": "text", "tag": True, "description": "The user this memory belongs to" }] } # "user:alice" 标签被抽取并作为标签写入 # 召回时用标准 tags 参数过滤 client.recall(bank_id="my-bank", query="...", tags=["user:alice"])配置细节见 Entity Labels。在仓库源码中,entity_labels与entities_allow_free_form是银行配置的正式字段(见 hindsight-api-slim/hindsight_api/config.py 与 hindsight-api-slim/hindsight_api/api/http.py 中的LabelGroup模型),并在 hindsight-api-slim/hindsight_api/engine/retain/entity_labels.py 中实现解析。
那 document 的metadata呢?
文档元数据(retain 项上的metadata键值对)用途不同:
- 包含在事实抽取 prompt 中,LLM 可将其作为额外上下文提升抽取准确度(如知道文档标题或来源)
- 原样随每条被召回的记忆返回,让应用无需额外查询即可把记忆关联回源系统(如 URL、线程 ID、工单号)
metadata 不是过滤器——需要把 recall 限定到文档子集时,请用标签。
如何控制被召回的记忆类型?
如果银行混有不同形态的记忆(如简短的规则与详细的操作规程),而 recall 对某查询召回了错误的形态,可用带tag: true的实体标签在 retain 时分类、在 recall 时硬过滤:
- 在银行上定义一个带
tag: true和受控词汇表的标签组(如rulevsprocedure) - 正常 retain——LLM 自动为每个抽取的事实分类
- recall 时传
tags=["memory_type:rule"]与tags_match="any_strict",确定性只包含匹配的记忆
这是一个在排序前应用的 SQL 级过滤器,而非打分信号——被排除的记忆根本不进入检索管线。这比调整排序权重更可靠:权重只会微调连续分数,无法保证排序。完整演练见 Best Practices — Filtering by Memory Shape,配置参考见 Entity Labels。
保留对话的推荐格式是什么?
将整个对话作为单个文档传入,并随对话增长不断 upsert——Hindsight 会自动分块,无需手动拆分。
首选格式:JSON 数组
[ {"role": "user", "content": "I moved to Berlin last month."}, {"role": "assistant", "content": "How are you finding it?"}, {"role": "user", "content": "Love it, especially the food scene."} ]Hindsight 对 JSON 数组格式有内部分块优化,因为这是最常见的对话形态。
备选:带前缀的纯文本
[2025-06-01T10:32:00Z] user: I moved to Berlin last month. [2025-06-01T10:32:05Z] assistant: How are you finding it? [2025-06-01T10:32:20Z] user: Love it, especially the food scene.给每条消息加上用户名和时间戳前缀能提升抽取质量——LLM 利用这些信号正确归因事实并推理时序。
使用稳定的文档 ID 来 upsert:
await client.retain( bank_id="my-bank", documents=[{ "id": "chat-session-abc123", # 稳定 ID 启用 upsert "content": conversation, # 迄今为止的完整对话 }] )用相同id重新 retain 会替换旧文档及其事实,因此对话增长时不会累积重复。在 retain.md 中,document_id被定义为"让 retain 幂等"的关键字段:提供它时 Hindsight 会 upsert(先删旧文档及其关联记忆,再处理新内容);省略时每次请求分配随机 UUID,重复摄取会生成重复记忆。
不要预先摘要或预抽取事实——Hindsight 会自动完成这些,并且需要完整对话作为上下文:没有前后文,"yes, exactly"或"I'll go with option 2"毫无意义。若内容是增量到达的(如日志、聊天记录),也可以用update_mode: "append"(需document_id)只发送新增部分,Hindsight 会跳过未变的分块,仅对新部分触发 LLM 抽取。
Hindsight 的图与传统知识图谱有何不同?
Hindsight 使用事件中心图(event-centric graph),围绕"时刻"(对话、观察、记忆)组织数据,而非静态孤立的事实。记忆是锚点:实体附着于它们出现的记忆上,记忆之间也可以直接相互链接。最贴切的类比是地图 vs 剪贴簿(scrapbook)。
传统图(如 Neo4j)是地图——通过"道路"直接展示地点之间如何连接,映射关于世界的刚性结构事实:
[Toronto] ──IS_IN──> [Canada]Hindsight 的图是剪贴簿——每一页是一条记忆。在那一页上,你把该时刻出现的所有人、概念和标签贴成"贴纸"。贴纸互不相连,它们只是共存于同一页:
Scrapbook page: "Math Class" [Alice] [Acme] [pedagogy:scaffolding]两者如何应对随时间的变化?
传统图难以应对变化。如果 Alice 离开 Acme 去了 Stark Industries,你必须手动删除或重写旧的[WORKS_AT]箭头;否则图会自相矛盾地同时声称她在两家公司任职。传统图为"绝对的当下"而生,数据变化时历史就丢了。
Hindsight 轻松应对变化,因为历史被保留。Alice 换工作不必改写过去,只需新建一页剪贴簿——Memory: Tuesday's Call贴上[Stark Industries]的贴纸;去年那页仍准确地将她链接到[Acme Corp]。图自然记录世界如何演进,无需复杂的数据库维护。
贴纸从哪来?如何控制?
贴纸的创建是 AI 自动化与开发者控制的结合:
- 开放世界自动化(默认):Hindsight 的 LLM 管线自动从原始文本检测并抽取标准实体(人物、地点、日期),转化为贴纸
- 通过
entity_labels的开发者控制:定义自定义 schema,强制 LLM 用严格预定义词汇表对记忆分类。例如强制pedagogy键只能取scaffolding、direct_instruction或socratic_questioning。要锁定银行只使用你配置的标签并关闭上述开放世界自动化,可在银行配置上设置entities_allow_free_form: false——LLM 随后完全跳过自由形式的命名实体,只输出匹配你 schema 的条目
能构建直接的实体到实体管线吗?
不能。在 Hindsight 中,实体(人物、地点、概念或分类标签)之间没有直接箭头连接。它们通过锚定到同一个父记忆单元(同一页剪贴簿)来交互。
实体不直接相连,Hindsight 如何发现联系?
Recall 以语义搜索起步——找到与查询最相关的记忆作为种子页——然后通过三个并行信号从种子向外扩展:
- 共享实体(Shared entities):若记忆 A 和 B 都锚定同一实体节点(如
[pedagogy:scaffolding]),Hindsight 遍历Memory A → [pedagogy:scaffolding] → Memory B——即"同贴纸的剪贴簿页"场景 - 记忆间的语义链接(Semantic links):新记忆 retain 时,Hindsight 预计算它与嵌入空间中最近邻的链接,语义相关的页面无需共享贴纸即可直接相连
- 记忆间的因果链接(Causal links):Hindsight 还会抽取记忆间显式的因果关系(
causes、caused_by、enables、prevents),因果链成为一等公民边,而非需要模型自行推断
语义层选择起点;图通过三个信号中对每个候选最强的那一个补全连接。
这种图结构有助于减少 Agent 的幻觉吗?
是的——通过给消费方 LLM 提供更有依据的上下文来推理。剪贴簿模型的三个性质直接贡献于此:
- 历史被保留而非折叠:模型看到的是有时间边界的事实("Alice 去年在 Acme 工作,现在在 Stark Industries"),而非迫使其调和或猜测的矛盾现在时边
- 连接来自记录的链接而非推断:recall 浮现两条相关记忆,是因为它们共享实体、预计算语义邻居或显式因果边——链接出现在检索上下文中,模型无需发明
- 趋同证据累积:多条记忆锚定同一实体会相互强化而非竞争,模型得到的是可相互印证的声明,而非单一无依据的说法
仍有疑问?
本指南逐题覆盖了 Hindsight FAQ 的 17 个核心问题,并结合仓库源码给出了实现层面的佐证。想继续深入:
- 对比完整能力矩阵:RAG vs Memory
- 管理员命令(worker 状态、迁移、备份恢复、bank 修复与跨实例迁移):Admin CLI
- 提供商、模型与嵌入配置:Models
- 自托管与系统要求:Installation
- 三大核心 API:Operations、Recall、Reflect
【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考