Conversation
JENN2046
marked this pull request as ready for review
October 5, 2026 11:51
JENN2046
marked this pull request as draft
October 5, 2026 12:09
JENN2046
marked this pull request as ready for review
October 5, 2026 12:22
JENN2046
marked this pull request as draft
October 5, 2026 15:32
JENN2046
marked this pull request as ready for review
October 5, 2026 17:28
Owner
|
1.这个查询实现是否太重了,尤其是万到十万级索引的多agent交互并发侧,目前的实现框架真的可用吗? |
Owner
|
在当前架构设计里,usearch的幽灵向量也是伪命题,因为服务器不以usearch为真相,实际查询来自sql内部的blob,usearch天然只做暖机缓存,它每次都是全量刷新,里面几乎不可能产生幽灵内存指针。感觉所谓的指针头设计也是无必要设计。 |
Owner
|
感觉最大问题是系统架构建立在错误假设的前提上。 |
Owner
|
审议后不予通过。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
这个 PR 引入了 Gen-USearch,它是给 MemoChunk / RiverMemo 准备的一套“分代式向量索引”底层能力。
它的目标不是马上替换现在用户正在用的 KnowledgeBase 搜索,而是先把一套真正能长期运行的底座补齐,包括:
在正式交给 upstream 作者审查之前,我们已经把原来的内部工程包做了一次收敛。
现在 PR 中留下的主要只有:
内部 Gate、审查日志、authority-lock、临时验证脚手架等都已经移除。
当前审查基线
为什么要做 Gen-USearch
现在已有的 Chunk 分代能力可以解决一部分问题,但如果要做真正可靠的分代向量索引,还需要额外解决:
所以 Gen-USearch 把不同类型的“权威”拆开:
逻辑版本变化和物理拓扑变化使用两个独立计数器:
visibility_seqmanifest_epoch完整的长期架构和安全规则整理在:
docs/GEN_USEARCH_ARCHITECTURE.md这个 PR 具体实现了什么
1. 稳定 ID + MVCC
现在:
doc_id;chunk_id;vector_id;早期状态也可以进入
ABORTED。当前版本切换使用 SQLite CAS。
恢复用的精确向量数据会一直保留,直到系统能证明这个向量已经安全存在于持久化 Segment 中。
源内容 reconciliation 只接受“已经完整提交、字节稳定”的 source view。
正式 admission 使用
withCommittedSourceView():也就是说,从“看到这份 source”到“生成 plan 并正式写入”这一段时间里,这份 source 必须保持有效,避免刚读完 A,源已经变成 B,我们却还把 A 当成最新内容写进去。
2. Gen0 内存物理层
Gen0 使用运行时本地的 native Vexus MemTable。
流程是:
也就是说:
不能只因为 SQLite 里说“有这个向量”,就假设 native 内存里真的有。
启动恢复时,可以用之前保存的精确 recovery bytes 重建 Gen0。
另外增加了跨进程 writer 保护:
writer 不只看 runtime owner 和 fence,还必须持有对应的 durable process lease。
所以同一个 fence 下,另一个进程不能偷偷变成第二个权威 writer。
3. Immutable Segment + Manifest
一个 SEALED 的 Gen0 generation 可以被构造成不可变 Segment。
Segment 发布时会验证:
最终 artifact 必须先真正落盘,再允许 SQLite 把它写进当前 Manifest。
segmentRoot也不再自动创建,而是要求调用方显式提供一个:的目录。
Windows 上发布 Segment 时使用 write-through 语义,避免文件名看起来已经替换成功,但磁盘上实际上还没真正持久化。
4. QueryReadView + 查询
每一次查询都会创建一个 QueryReadView。
它会冻结这次查询需要看到的:
visibility_seq;所以一次查询不会出现:
reader 的生命周期有两层保护:
deadline 到了以后会请求取消,但不会偷偷释放 pin。
进入
QUIESCING后不允许继续开始新的查询工作。只有 worker 真正结束,才允许释放 pin。
最终返回结果前,还会再次验证:
5. GC 安全 + recovery 数据释放
现在支持:
以及:
但是只有在能够证明:
之后,旧版本才可以进入 GC_ELIGIBLE。
同样,recovery bytes 也只有在重新验证以下内容都正确后才能释放:
整个过程默认 fail-closed。
也就是说,只要哪里证明不了,就不删。
兼容性和加固
这个 PR 还包括:
目前覆盖的平台包括:
旧的:
rust-vexus-lite/vexus-lite.node也已经删除。
这个文件实际上是一个旧 Windows PE binary,而现在自动生成的 NAPI loader 使用的是明确的平台文件名,所以继续保留 generic 文件反而容易留下过期二进制。
明确不在这个 PR 里做的事情
这个 PR 不会直接把 Gen-USearch 接进当前用户正在使用的 KnowledgeBase 搜索路径。
本 PR 不负责:
KnowledgeBaseManager;searchService;GENERATIONAL_SHADOW;GENERATIONAL_ACTIVE;这些应该是后续单独的集成 / 运维决策,而不是因为底层能力已经存在,就自动启用。
最终 upstream 交付面
现在这个 PR 只保留长期值得维护的东西:
docs/GEN_USEARCH_ARCHITECTURE.md;.github/workflows/gen-usearch.yml;.github/workflows/gen-usearch-native-package.yml。以下内部工程材料已经在正式 review 前移除:
Exact-head 验证
当前所有最终 CI 都已经在:
1731e8b4652179f0c05ad46edbc4ccfc00362524这一颗 exact head 上通过。
其他交付检查:
希望作者重点帮忙看的地方
我们认为下面这些地方最值得 upstream maintainer 从长期架构角度判断:
withCommittedSourceView()是否适合作为 canonical source 的 admission 边界;当前审查状态
目前实现已经可以进入 upstream maintainer review。
如果作者 review 后提出修改意见,我们会基于新的 exact head 修复,并重新跑:
然后再决定后续 merge。
最终是否合并,由 upstream maintainer 决定。