魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化

AITNT-国内领先的一站式人工智能新闻资讯网站
# 热门搜索 #
魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化
8210点击    2026-10-04 22:06

当问答系统积累足够多的query–answer对后,常常把它们沉淀成一个静态知识库,让用户问题一进来就能获得低延迟响应。


但这套范式隐含了一个前提——知识是稳定的。


一旦问题涉及复杂上下文或时间敏感型场景,静态知识库将会迅速过期:昨天正确的答案,今天就可能变成幻觉。


ModelScope团队推出的Sirchmunk框架,针对上述问题提出了崭新解法:


  • 免索引的即时检索:问题到来后,直接在当前动态原始文件(raw data)里定位并核验证据,不要求整库预先完成indexing。
  • 知识自进化:把验证过的问题、证据和答案沉淀为知识单元,随一次次检索不断连接、合并、重组,为后续查询持续加速,让知识库自己学会“融会贯通,举一反三”。


预建索引与动态数据之间的矛盾


传统RAG的流程很标准:解析文档、切分文本、计算embedding、写入向量库,查询时用问题召回top-k片段。


语料稳定时,这条路线成熟、高效,也便于缓存。问题出现在数据持续变化时。每新增、修改或删除一个文件,系统都要做一串同步:哪些文档要重新解析,哪些chunk要更新,哪些旧向量要删除,还要保证索引和原始文件属于同一版本。更严重的是,当embedding模型升级时,全部历史索引数据都需要重新构建。


时间久了,本来服务于检索的索引,变成一条需要长期维护的数据管线。


Sirchmunk换了一种方式:把当前动态原始文件直接作为起点,查询发生时再去搜索、读取、核验,把算力集中在最可能包含答案的热点区域。


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


最直接的收益是缩短Time-to-First-Query:文件进入目录后,不必等待一轮全量加工就能查询。


从当前文件到可复用知识:一次查询的完整闭环


对外,Sirchmunk提供Python SDK、CLI、MCP、HTTP API和Web UI。入口不同,最后都汇进同一套搜索编排,这套编排在尝试回答以下三个问题:


  • 先看哪些文件?
  • 每份文件读到什么程度?
  • 什么时候证据足够?


这套核心算法叫LENS,全称Latent Evidence Navigation and Search,即“隐式证据导航与检索”。名字里的“隐式证据空间”,指文档中所有可能作为证据的连续片段共同构成的搜索空间:这里没有现成的索引可查,系统只能在原始文件里边读边定位。LENS要解决的,就是怎样在尽量少的算力下,在这个空间中定位到回答问题所需的证据。


LENS检索算法不是“从固定候选里选一个top-k”,而是先用低成本信号缩小范围,再根据刚读到的内容调整下一步。搜索结束后,验证过的结果还能进入知识层,为后续问题提供先验。


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


△LENS:受预算约束的隐式证据探索闭环


整个算法架构图可以归纳成五个动作:


  • 接收问题和当前时刻的原始文档;
  • 用关键词、路径结构、摘要和历史经验形成低成本先验;
  • 在预算内反复提出候选、读取原文、更新判断;
  • 合并证据,生成带来源的答案;
  • 把成功经验保存为可复用知识,反馈给未来的查询。


最后这条反馈线最关键:历史知识能帮助定位,但不能替代对当前文件的读取。来源一旦变化,系统仍要回到原始数据重新核验。


不预切chunk,先把要检索的证据空间定义清楚


假设有一份500页的维修手册,用户问:“故障码E217为什么会在低温启动时触发?”


答案可能分散在故障码说明、低温限制和启动流程三处。预先切好的固定chunk未必正好把这三块都覆盖到。


LENS的出发点是:文档里的任何一个连续区间,都可能成为与问题相关的证据窗口。


设时刻t的文档集合为:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


这些文档共同诱导出一个隐式证据空间(latent evidence space):


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


其中(d,s,e)表示文档d从位置s到e的连续片段。


“隐式”的含义是:这些窗口本来就存在于原始文件中,只是没有被提前固定成某一种切分。问题到来后,系统再决定读取哪一段、边界向外扩展到什么位置。


光有相关还不够,还要覆盖问题所需的事实


给定问题q,系统先识别它的意图:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


再列出回答该问题必须补齐的事实需求:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


比如“A和B谁更早发布”,至少需要A的日期、B的日期,以及可比较的日期格式。只找到一篇介绍A的文档,即使主题高度相关,也还不足以回答。


对每个事实需求rⱼ,理想目标是找到尽量紧凑、又能支撑它的证据窗口:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


窗口越紧凑,噪声越少,也越容易回到原文核验;但也不能短到丢失上下文。目标不是“最短”,而是“最小充分”。


真实系统还受到成本约束:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


是搜索与读取文件的成本,


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


是模型判断与工具循环的成本,


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


是上下文token成本,B是本次查询的总预算。


问题因此转化为:在预算内,为每个必要事实定位到足够可靠的证据。


两层设计:先粗定位,再边读边调整


如果让模型从第一份文件逐页读到最后一份,索引确实省了,但代价通常难以接受。因此,LENS分成两层。


第一层:用低成本信号建立可能性地图


系统先估计哪个文件、哪个位置值得优先读取:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


前一项判断文件是否相关,后一项判断文件中的位置是否值得先看。


这个先验由多路信号共同构成:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


其中


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


可以来自关键词命中、目录结构、文档摘要、层级索引或历史证据。单独任何一路信号都可能失效:文件名可能只是part-00017,关键词可能被同义表达绕开,历史经验放到刚改过的文件上也可能不再适用。


多路先验的目的不是直接给出答案,而是把庞大的证据空间压缩成一个值得优先探索的候选子空间:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


树索引、摘要索引和目录清单都能帮助进一步缩小范围,但它们只是可选的加速器:缺失或过期时,搜索仍可回到原始文件。


第二层:新读到的证据会改变下一步


第t轮,系统根据问题和历史Hₜ提出一个动作zₜ:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


动作可以是读取某个片段、调整关键词、追查新出现的实体,或扩大范围。读取原始数据后,系统得到观察oₜ:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


再根据新证据更新下一轮策略:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


以上就是Propose→Observe→Update的检索推理闭环。这条链路的特点在于,它会在中途自己调整方向。例如,第一段材料如果带出一个新的人名、版本号或项目代号,下一轮可以直接追查;两个日期都已找齐,就不必再扫描整个目录。检索因此从一次性的top-k,变成一条会自我修正方向的导航路径。


什么时候停止?


停止条件同时看证据和预算:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


它包含两条规则:证据达到问题类型要求的充分程度时停止;预算耗尽时也必须停止,并保留不确定性,而不是强行给出一个看似完整的答案。


不同问题的门槛不同。明确的事实查找可以相对宽松;日期比较、数值计算和多跳问题更严格,因为缺少任一关键事实都可能改变结论。


从原理到工程:几个绕不过的坑


真实语料很快就会打破漂亮的算法假设。


首先是命名。大量文件没有可辨语义的名字:


wiki_00part-00017shard_293.jsonl


只看文件名,几乎等同于随机挑选。所以文件评分同时考虑路径和正文命中:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


命中JSON、JSONL或没有扩展名的分片后,记录标题、编号和行位置,才能把读取范围从整块大文件收紧到其中一条记录。


另一个反直觉的点是:证据不是越多越好。


检索的成败与“信噪比”息息相关。10段相关的证据材料,常常比两段直接证据更难用。进入模型之前,系统要去掉重复、模板和低覆盖的片段,优先保留命中实体、关系、日期或数值要求的内容,同时保留来源位置。


再往下是底层工具的可靠性。文件转换可能卡住,搜索进程可能超时,并发请求的token记账也不能混在一起。限流、超时、进程回收、搜索后端回退和请求级状态隔离,这些不像算法创新,却决定系统能否长期稳定运行。


把搜索经验沉淀为可复用知识


一次高质量搜索留下的,不该只有一段答案。


问题怎么问、证据在哪里、哪些文件有用、结论如何被支撑——这些信息如果答完就丢弃,下一个相似问题只能重新找一遍。


Sirchmunk把满足条件的搜索结果沉淀为KnowledgeCluster:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


与普通的答案缓存实现有所不同,KnowledgeCluster的问题、证据、来源和可靠性被放在一起,构成一个可复查的经验单元。复用也分级:高度一致时可以复用已验证的结果;只是部分相似时,只借用文件线索和搜索模式,不照搬旧答案。


从零散经验进化成结构化知识


新建或被复用的知识单元都会进入KnowledgeEvolver。演化过程与当前搜索的返回解耦,不会阻塞用户拿到答案。


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


△KnowledgeEvolver:运行时知识自进化机制


KnowledgeEvolver架构从上到下分三层:


  • 上层是事件循环:检索产生或复用知识单元,系统缓存变化并识别事件类型。
  • 中层是演化机制:左侧处理局部增量,右侧做周期性全局维护。
  • 下层是持久化结果:演化后的知识图谱和可恢复状态,重新服务后续搜索。


知识演化的四个阶段:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


前两个阶段响应新建和复用事件,适合频繁执行;后两个阶段随知识积累周期性触发,负责更大范围的整理和纠偏。


知识库的“自我成长”


静态图只能看到结果。为了观察结构如何随检索变化,团队做了一次时间序列回放。


演示基于SQuAD数据集,按可回答问题密度采样200条数据,涉及4篇文档,每篇50题。集中在少数文档上是有意为之:问题之间需要足够相似,连接、合并和社区形成才容易被观察到。


为了让回放更快,查询使用FAST模式和qwen3.8-flash,并调低合并、边刷新、元簇检测和全局更新的触发阈值。随后按顺序发起200次搜索,每次搜索后保存一份知识图快照,最后合成视频。


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


△知识图谱随检索演化的回放界面


视频中展现了两种有趣的演化:


  • 局部演化:新节点不断出现并向已有单元靠拢,形成区域内强连接,标志着相似类型的知识在不断聚合。
  • 全局演化:后期出现的大型节点(紫色节点),称为“Meta Cluster”,即超级节点。它们往往并非某一种具体的知识点,而是由KnowledgeEvolver进化出来的“方法论”,用于指导系统面对某一类知识时如何高效发起检索动作。


Sirchmunk快速上手


前提只有三样:Python环境、LLM配置,以及一个可搜索的目录。


pip install sirchmunksirchmunk initsirchmunk search “系统鉴权策略如何设计?” /path/to/documents


模式切换:


  • —mode FAST:使用贪婪检索策略。
  • —mode DEEP:默认设置,会召回更加完备的证据链。


Python侧的最小调用如下:


from sirchmunk import AgenticSearchsearcher = AgenticSearch(paths=[“/path/to/documents”])result = await searcher.search(   query=”系统鉴权策略如何设计?”,   mode=”DEEP”,   response_format=”rich”,)


适用边界与未来方向


Sirchmunk不是经典RAG系统的替代品,两者面对的场景不同:


魔搭开源动态检索新框架,无需预构建向量索引,知识库还能自己进化


真实系统可以混合使用:长期稳定的热语料交给向量索引承担高并发召回;频繁变化、需要即时核验的动态部分交给Sirchmunk。


Sirchmunk未来的演进:


  • 让复杂多跳问题的中间证据更不容易丢失。
  • 加强来源时效、冲突检测与知识生命周期治理。
  • 支持更多模态的数据检索。
  • 用更轻的先验压低首次定位时延。
  • 进一步压低更新、存储和查询的全生命周期成本。


论文链接:https://arxiv.org/abs/2608.16185

代码仓库:github.com/modelscope/sirchmunk

项目文档:github.com/modelscope/sirchmunk-web


文章来自于微信公众号 “量子位”,作者 “量子位”

AI转型,免费服务,就找AITNT
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md

2
知识库

【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。

项目地址:https://github.com/labring/FastGPT

3
RAG

【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。

项目地址:https://github.com/microsoft/graphrag

【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。

项目地址:https://github.com/langgenius/dify


【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。

项目地址:https://github.com/infiniflow/ragflow/tree/main


【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目

项目地址:https://github.com/phidatahq/phidata


【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。

项目地址:https://github.com/TaskingAI/TaskingAI