MIT 开源项目 hubmesh,通过在向量数据库上加 SpaCy NER 实体图层,解决多跳问答中向量检索失效的问题,查询过程无需 LLM 参与 token 消耗。
Chroma 的最佳场景是本地优先:将文档向量化,在你自己的机器上查询,无需任何基础设施流程。但本地优先的 RAG 在多跳问题上碰壁:
"收购了 Polar Metrics 的那家公司的创始人,毕业于哪所大学?"
回答这段文字与问题几乎没有任何共同词汇。它们之间有关联——通过一次收购、一个创始人、一段履历——但相似性搜索无法追踪这种关联。常见的解决方案是在检索循环中引入 LLM 来分解问题,但这恰恰破坏了本地优先的吸引力:现在每次查询都要消耗 token、耗时数秒、每次运行结果都不相同。
hubmesh 走了另一条路:让检索保持为纯数学操作。在索引时,它使用 spaCy NER 从语料库中构建实体-文档图(无需 LLM,无需 token)。在查询时,它从问题的实体出发在该图上运行 Personalized PageRank,并将结果与 Chroma 的余弦相似度分数融合。整个查询路径都是 numpy 和 scipy:在 30K 文档的语料库上约 100ms 完成,离线运行,每次运行结果完全一致——这是任何在循环中引入 LLM 的检索器都无法以任何代价提供的三个特性。
pip install "hubmesh[chroma,kg]"
python -m spacy download en_core_web_sm
from hubmesh import Planner
from hubmesh.adapters import ChromaStore
from hubmesh.kg import build_entity_kg
import spacy
embed = ... # your embedding callable
store = ChromaStore.from_documents(docs) # ephemeral
# store = ChromaStore.from_documents(docs, persist_directory="./chroma")
# store = ChromaStore.from_documents(docs, host="localhost", port=8000)
nlp = spacy.load("en_core_web_sm")
kg = build_entity_kg(store.get_many(store.all_ids()), nlp=nlp)
planner = Planner(store=store, kg=kg, nlp=nlp, embed=embed)
result = planner.retrieve("Which university did the founder of the "
"company that acquired Polar Metrics study at?",
top_k=10)
print([s.doc.id for s in result.sources][:3])
for path in result.reasoning: # the graph route, not a rationalization
print(" -> ".join(path.node_ids))
为什么它有效:交集,而非仅仅是邻近
评分组合由三部分构成——余弦相关性、PPR 扩散,以及一个收敛项,对每个文档按所有问题实体的扩散几何均值打分。多跳答案位于问题锚点的交集处;聚合相似度计算的是并集。交集才是桥接文档所在之处。(公式源自一篇网络拓扑论文 NNSI,ICOMP'25——同样的思路,不同的图。)
完整的 HotpotQA dev 集(7,405 个问题):supporting-fact recall@10 达到 75.2%,而使用相同向量化的朴素余弦方法为 69.3%。MuSiQue 2/3/4 跳:分别提升 6.0/3.2/5.0 个百分点。诚实的权衡:recall@2 在收敛项下下降了 0.75 个百分点(文档中标注了可禁用选项,适用于 top-2 工作负载)。测试工具和原始 JSON 数据随仓库一并发布。
pip install "hubmesh[mcp]" 会添加一个 MCP 服务器(在官方 MCP Registry 中为 io.github.DemigodDSK/hubmesh),支持由 agent 引导的检索:传递 seed_entities 以将下一跳瞄准你刚读到的东西,传递 exclude_docs 以探索新的领域。本地 Chroma + 本地图
你的 agent 的推理:多跳 RAG,系统中的唯一 LLM 是你已经运行的那个。
仓库:github.com/DemigodDSK/hubmesh · MIT · 各项数字可通过 benchmarks/ 复现