Hindsight 0.7.0 深度解析:多语言搜索、自愈图谱与横向扩展 BM25 的完整实践指南

发布时间:2026/9/13 16:24:24
Hindsight 0.7.0 深度解析:多语言搜索、自愈图谱与横向扩展 BM25 的完整实践指南 Hindsight 0.7.0 深度解析多语言搜索、自愈图谱与横向扩展 BM25 的完整实践指南【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight本篇技术指南围绕 Hindsight 0.7.0 版本发布的核心能力展开系统讲解多语言 BM25 检索、图存储减半与删除自愈、8 语言 Control Plane、定向整合Consolidation、新嵌入选项以及基于 ParadeDB pg_search 的 Citus 横向扩展方案。读完本文你将掌握每个新特性的配置变量、docker-compose 部署方式、底层实现原理与适用场景可直接对照当前仓库的源码与配置落地到自己的部署中。版本概览更快、更精简、更易部署Hindsight 0.7.0 是一次更快、更精简、更易广泛部署的里程碑版本。概括而言本次发布带来了六大主题多语言搜索升级原生 BM25 后端支持按语言配置词典新增多语言合一索引的 PGroonga 后端图存储瘦身与自愈图存储占用约减半删除记忆单元后异步自愈邻居链接Control Plane 国际化界面支持 8 种语言更智能的整合减少重复观察支持按标签范围定向重整合可关闭自动整合新嵌入选项ZeroEntropy 提供商与 Codex OAuth 认证的 OpenAI 嵌入ParadeDB pg_search 支持在水平扩展的 Citus Postgres 集群上实现真正的 BM25 检索。更好的多语言搜索Hindsight 早已具备输入语言自动检测能力并在 retain/recall 全链路中保留原文语言。但此前 BM25 关键词检索实际上仅支持英语——原生 tsvector 索引无论 bank 的实际语言是什么都套用英语词干提取stemming导致非英语内容的召回质量受损尤其是中日韩CJK这类缺乏空格分词边界的语言几乎无法获得有效分词。0.7.0 从两个方向修复了这个问题1. 原生 BM25 后端支持语言词典原生后端native现在通过HINDSIGHT_API_TEXT_SEARCH_EXTENSION_NATIVE_LANGUAGE选择 PostgreSQL 字典默认english让西班牙语、法语、德语等 bank 开箱即用地获得正确的词干提取。在 config.py 中可以看到相关环境变量的定义与默认值DEFAULT_TEXT_SEARCH_EXTENSION_NATIVE_LANGUAGE english可选语言涵盖欧洲主流语种以及simple字典。针对单一语言 bank例如全西班牙语内容的推荐配置HINDSIGHT_API_TEXT_SEARCH_EXTENSIONnative HINDSIGHT_API_TEXT_SEARCH_EXTENSION_NATIVE_LANGUAGEspanish注意native与pgroonga的参数互不适用——PGroonga 的分词器在索引创建时确定会忽略HINDSIGHT_API_TEXT_SEARCH_EXTENSION_NATIVE_LANGUAGE。2. 新增 PGroonga polyglot 后端PGroonga 是本次新增的可选用后端通过单一索引同时处理英语、中文、日语、韩语及更多语言的混合内容是混合语言 bank 的首选。完整的多语言配置矩阵与后端取舍参见 多语言支持文档。PGroonga 采用TokenBigram多语言分词器配合NormalizerNFKC150Unicode 规范化一个索引即可覆盖英欧、CJK 及混合书写内容。CJK / 混合语言 bank 的推荐配置HINDSIGHT_API_TEXT_SEARCH_EXTENSIONpgroonga仓库附带了开箱即用的 docker-compose 配方 docker/docker-compose/pgroonga/docker-compose.yaml它会启动一个pgroonga-init一次性容器等待数据库就绪后依次创建vector与pgroonga扩展再启动 Hindsight 应用容器端口 8888/9999并在应用环境变量中写入HINDSIGHT_API_TEXT_SEARCH_EXTENSION: pgroonga。启动命令docker compose -f docker/docker-compose/pgroonga/docker-compose.yaml up -d独立控制 LLM 输出语言除了索引语言0.7.0 还支持将事实提取器的输出语言与索引语言解耦配置。HINDSIGHT_API_LLM_OUTPUT_LANGUAGE可强制所有 LLM 生成的产物统一为单一语言无论源内容语言如何统一作用于 retain事实文本、上下文、实体名、consolidation观察/心智模型与 reflect最终自然语言回答。# 无论源语言是什么所有 LLM 调用retain、consolidation、reflect统一输出西班牙语 HINDSIGHT_API_LLM_OUTPUT_LANGUAGESpanish根据多语言支持文档的说明常见的三种组合模式为场景配置对齐的单语言 bankNATIVE_LANGUAGEspanishLLM_OUTPUT_LANGUAGESpanish源内容即使混杂也能统一存储、索引、应答为西班牙语多语言索引的混合 bankTEXT_SEARCH_EXTENSIONpgroonga不设置输出语言保留源语言事实reflect 以查询语言应答跨语言统一LLM_OUTPUT_LANGUAGEEnglish所有事实、观察、回答统一英语便于下游英语消费方使用未设置时默认行为语言按观察逐条决定语言取决于该观察所基于的事实而非批次混合语言的单条观察由多数派语言决定更新观察时会整体改写为新事实的语言使偏离的语言逐步收敛专有名词、产品名、标识符、代码与单位永不被翻译。需要说明的是这是提示层面的引导而非硬性保证若模型忽略指令仍可能输出错误语言。当 bank 必须严格单语言时请显式设置HINDSIGHT_API_LLM_OUTPUT_LANGUAGE。更精简、可自愈的图谱支撑实体展开与链接召回link-based recall的图谱层在 0.7.0 中得到显著清理存储占用约减半并保持长期正确性。更小的图谱。图谱中很大一部分是 retain 阶段急切写入、但召回从未读取的成对实体链接——实体展开一直直接遍历底层实体表。0.7.0 停止物化这些链接改为在/graph与/stats端点按需推导。在 10k 单元基准上仅此一项就移除了约一半的图谱行释放约 190 MB 的表与索引空间。随后的索引审计又删除了 9 个未被使用或被查询规划器更偏好的复合索引完全覆盖的索引。API 响应形状不变因此无需重新生成 SDK。删除后自愈。此前当某个记忆单元被删除时与之相连的单元会静默丢失链接并长期处于低于容量上限cap的状态逐渐侵蚀图谱展开的召回能力。0.7.0 能够检测到这种情况并异步将邻居重新填充至配置的上限且不影响热路径 retain。频繁发生删除的 bank——文档重新摄取、GDPR 删除、定期清理——可以长期保持健康的图谱。Control Plane 支持 8 种语言Control Plane UI 现已完全国际化头部提供语言切换器可选英语、西班牙语、法语、德语、葡萄牙语日语、韩语、中文采用 locale 前缀路由保持 URL 可预测同时引入 CI 检查若未来的改动引入未翻译的用户可见字符串构建将直接失败确保翻译随 UI 演进保持同步。更智能的整合Consolidation观察整合Observation Consolidation在 0.7.0 中更擅长维护干净、去重后的观察集合并提供了更精细的执行控制。更少的重复观察。整合器此前偶尔会生成近重复的兄弟观察而不是合并它们。0.7.0 调优了行为当内容重叠时强烈优先更新既有观察而非新建。同时每个 bank 的observations_mission设置现在能更干净地级联进整合器行为自定义使命的 bank 也能按预期方式整合。定向重整合。consolidate端点新增observation_scopes参数可以只对匹配特定标签组合的记忆进行重整合而无需重建整个 bank。当标签策略变更使一部分观察失效时尤为有用。关闭自动整合。新增 per-bank 的enable_auto_consolidation标志可禁用 retain 后自动运行的整合。偏好按计划或按需整合的部署可以干净地选择退出。新的嵌入选项0.7.0 提供两种新的嵌入方式ZeroEntropy全新的嵌入提供商设置HINDSIGHT_API_EMBEDDINGS_PROVIDERzeroentropy并选择模型即可。仓库中已有对应的实现与测试如 test_zeroentropy_embeddings.py嵌入提供商相关的环境变量定义可参见 config.py。Codex OAuth 嵌入让既有的 OpenAI 嵌入提供商通过 Codex OAuth token 认证而不是单独的 API key。如果你已在运行 Codex希望复用同一套凭证来做嵌入会非常方便。ParadeDB pg_searchCitus 上的真 BM25Hindsight 0.7.0 新增对 ParadeDB pg_search 的支持作为 BM25 后端之一。如果你运行在Citus 分布式 Postgres 集群上这是唯一正确的选择——pg_search 是唯一能在 Citus 分片间工作的真 BM25 扩展水平扩展部署不再需要回退到更简单的原生 tsvector 后端。通过环境变量启用HINDSIGHT_API_TEXT_SEARCH_EXTENSIONpg_search可选的 tokenizer 变量为HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_TOKENIZER取值如default、whitespace、raw等。从 config.py 可见合法后端集合为(native, vchord, pg_textsearch, pgroonga, pg_search)另有HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_FUNCTION_SCHEMA默认paradedb用于自定义函数 schema。tokenizer 的规范化与取值pg_search 的 tokenizer 并非自由字符串——_pg_search.py中的normalize_pg_search_tokenizer()会对其做严格校验与归一化支持的值包括简单分词器unicode_words、simple、whitespace、literal、literal_normalized、chinese_compatible、icu、jieba、source_codeLindera 别名chinese_lindera/japanese_lindera/korean_lindera分别归一化为lindera(chinese|japanese|korean)N-gram 参数化形式ngram(min,max)与edge_ngram(min,max)要求 min/max 为正整数且min max否则抛出ValueError。例如面向 CJK 语料可选择HINDSIGHT_API_TEXT_SEARCH_EXTENSIONpg_search HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_TOKENIZERchinese_compatible或使用 Lindera 分词器HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_TOKENIZERjapanese_lindera归一化后的值会被安全地嵌入pdb.tokenizer形式的CREATE INDEX表达式见pg_search_bm25_columns()。开箱即用的 docker-compose 配方仓库在 docker/docker-compose/pg_search/docker-compose.yaml 提供了可直接运行的配方db服务构建 ParadeDB 镜像内置 pgvector pg_searchpg-search-init容器负责创建数据库与vector、pg_search扩展hindsight应用容器通过HINDSIGHT_API_TEXT_SEARCH_EXTENSION: pg_search启用后端并透传 tokenizer 与函数 schema 变量。启动命令docker compose -f docker/docker-compose/pg_search/docker-compose.yaml up -d所需环境变量为HINDSIGHT_DB_PASSWORD及 LLM 提供商配置HINDSIGHT_DB_USER默认hindsight_user、HINDSIGHT_DB_NAME默认hindsight_db、HINDSIGHT_VERSION默认latest等均有默认值。其他值得注意的变化清空心智模型端点重置心智模型内容下次刷新从零重新综合——适合对经过多次增量刷新后漂移的 delta 模式模型做周期性压缩。已暴露在 Control Plane 与各 SDK 中。Alibaba Qwen3 重排序器支持接入本地 cross-encoder 路径。Right Agent 集成集成目录新增条目。OpenCode Go LLM 提供商支持opencode-go运行时。Ollama Cloud 提供商修正了云端端点的认证逻辑。每次操作 LLM 并发上限防止并行工作负载压垮提供商。重排序器分数归一化自动检测已归一化分数并切换策略修复一类隐蔽的排序回归。Anthropic 兼容性不再发送temperature参数最新模型会拒绝该参数。Webhook 投递去重retain 批次不再触发重复通知。超大 retain 项拆分超大载荷在调用前被拆分不再导致整个批次失败。禁用工具隐藏被禁用的 reflect 工具从 agent 系统提示中隐藏而不仅是调用时拦截——agent 不会看到无法使用的工具。用户自定义标签实体豁免模糊解析用户自定义的身份保持稳定。心智模型历史上限防止 JSONB 溢出完整刷新正确重设待处理的 delta 基线。Control Plane 会话签名 Cookie不再仅检查存在性而是校验签名 Cookie——有意义的认证加固。Windows 嵌入 UI 启动修复正确解析npx修复长期存在的启动失败。API 访问日志开关可通过环境变量启用无需改代码。Gzip 中间件保证压缩后的图谱响应可解析。标签组与触发器保留更新标签时正确保留。版本配套与升级路径多语言搜索的完整配置矩阵、后端取舍与最佳实践保持单次 retain 调用单语言、以与内容相同的语言查询、非英语内容使用多语言嵌入/重排序模型等请参阅 hindsight-docs/docs/developer/multilingual.mdpg_search 与 pgroonga 两套部署配方分别位于 docker/docker-compose/pg_search/ 与 docker/docker-compose/pgroonga/配置项的默认值与校验逻辑集中在 config.pypg_search tokenizer 解析见 _pg_search.py。综合来看Hindsight 0.7.0 的核心价值在于多语言检索从英语专属走向真正的多语言开箱即用图谱层减半存储的同时具备自我修复能力而 pg_search 后端让横向扩展的 Citus 部署也能享受真正的 BM25。对于运行混合语言记忆库、频繁删除数据或需要水平扩展的团队这都是一次值得规划升级的版本。【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考