不用向量数据库的AI搜索来了!这个项目让我重新思考RAG
最近折腾公司知识库的时候,我又被向量数据库折腾了一遍。
数据刚向量化完,第二天业务部门就更新了20份新文档。然后又得重新跑一遍 embedding,再进行索引更新。这套流程走下来,有点麻烦。
直到前几天在 GitHub 上刷到一个叫 Sirchmunk的项目,直接颠覆了我对 RAG 的认知——
它居然完全不用向量数据库,也不用向量模型。
先说说它到底干了啥
Sirchmunk 是 ModelScope 团队搞的一个”自进化搜索引擎”。最骚的操作在于:它直接从原始文件里搜,不搞向量那一套。
你可能会问,那不就是个普通的文件搜索吗?又不是没有 grep、没有 Everything。
关键区别在于——它会把搜索结果喂给大模型,让它自己决定哪些内容有用,还能根据搜索结果自动调整策略。
这就有点像你给实习生一堆资料让他查东西。普通搜索是把资料目录给他;Sirchmunk 是实习生自己翻书,翻到哪页觉得有用就仔细看看,看不懂还能回去再翻别的。
它的”蒙特卡洛采样”是什么鬼?
这个技术名词听起来唬人,其实逻辑挺朴素的。
想象你在一份 500 页的技术手册里找答案。你不会从头读到尾对吧?你大概会:
-
先快速翻翻——看看目录、关键词,锁定几个可能相关的章节 -
再精读那几段——把看起来有用的内容仔细读一遍 -
最后整理输出——把找到的内容组织成答案
Sirchmunk 就是这么干的,只不过它用算法把这个过程自动化了:
第一阶段:在文档里随机撒点+模糊匹配,快速定位可能相关的内容块 第二阶段:围绕高分区域做”高斯重要性采样”,像聚光灯一样聚焦精读 第三阶段:把精选的内容喂给 LLM,生成最终答案
这样做的好处是:无论文档是 2 页还是 500 页,处理逻辑是一样的,而且只把最相关的片段传给 LLM,token 消耗能省不少。
“自进化”是怎么进化的?
Sirchmunk 还有个挺有意思的设计叫 Knowledge Cluster(知识聚类)。
简单说就是它会记住你问过什么。当你搜新问题时,它会先看看以前有没有回答过类似的——如果语义相近(余弦相似度≥0.85),就直接返回缓存的答案,不用再调用 LLM。
这里要澄清一下:Sirchmunk “不用向量”指的是不对原始文档做向量化,省去了搭建向量数据库的成本。但在查询缓存层,它确实用了轻量级的 384 维向量来判断”这个问题以前是不是问过”。也就是说,文档检索靠关键词,历史查询复用靠向量——各取所长。
更妙的是,这个”记忆”不是死的。同一个知识点被不同方式问过几次后,它的语义向量会慢慢漂移,覆盖到更多相关的问法。
用大白话说:它越用越懂你。
这些数据存在本地的 DuckDB 里,轻量得很,不需要装什么 MySQL、Postgres。
三种搜索模式,按需选择
-
FILENAME_ONLY:就搜文件名,1秒内搞定,零 LLM 调用 -
FAST 模式:2-5秒,调 2 次 LLM,日常查询够用 -
DEEP 模式:10-30秒,蒙特卡洛采样 + ReAct 智能体,复杂问题也能 hold 住
我自己试了下,搜一个中等规模的代码库(大概 500 个文件),FAST 模式确实 3 秒左右出结果,体验挺流畅的。
这玩意儿适合谁用?
说实话,不是所有场景都适用。
适合的场景:
-
本地文档库、代码库搜索 -
日志分析、配置文件查找 -
需要快速接入 Claude Desktop 或 Cursor 的 AI 工作流 -
不想为 embedding API 持续付费的小团队
不太适合的:
-
需要语义推荐(比如”猜你喜欢”这种) -
超大规模数据检索(TB 级以上) -
需要实时向量更新的场景
怎么用?
安装贼简单:
# Create virtual environment (recommended)conda create -n sirchmunk python=3.13 -y && conda activate sirchmunk pip install sirchmunk# Or via UV:uv pip install sirchmunk# Alternatively, install from source:git clone https://github.com/modelscope/sirchmunk.git && cd sirchmunkpip install -e .
初始化的日志
(py312) kalami@192 demo_dir % sirchmunk init============================================================ Sirchmunk Initialization============================================================Work path: /Users/kalami/.sirchmunkCreating directory structure... ✓ Created work directory and subdirectories ✓ Generated /Users/kalami/.sirchmunk/.envChecking dependencies... ✗ ripgrep-all (rga) is not installed Installing ripgrep-all...Installing rg from BurntSushi/ripgrep...Installing rga from phiresky/ripgrep-all... ✓ ripgrep-all installed successfully ✗ ripgrep (rg) is not installed Please install: https://github.com/BurntSushi/ripgrepChecking environment variables... ✗ LLM_API_KEY is not set Set it in /Users/kalami/.sirchmunk/.env • LLM_MODEL_NAME: gpt-5.2 • LLM_BASE_URL: https://api.openai.com/v1Downloading embedding model... (This may take a few minutes on first run)2026-05-0311:38:15.029 | DEBUG | sirchmunk.utils.embedding_util:_download_model:125 - Offline cache miss for sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2, trying online download...Downloading Model from https://www.modelscope.cn to directory: /Users/kalami/.sirchmunk/.cache/models/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v22026-05-0311:38:16,129 - modelscope - INFO - Got 13 files, start to download ...Downloading [config.json]: 100%|███████████████████████████████████████████████████████| 645/645 [00:00<00:00, 2.64kB/s]Downloading [modules.json]: 100%|████████████████████████████████████████████████████████| 229/229 [00:00<00:00, 932B/s]Downloading [sentence_bert_config.json]: 100%|█████████████████████████████████████████| 53.0/53.0 [00:00<00:00, 213B/s]Downloading [1_Pooling/config.json]: 100%|███████████████████████████████████████████████| 190/190 [00:00<00:00, 743B/s]Downloading [configuration.json]: 100%|████████████████████████████████████████████████| 77.0/77.0 [00:00<00:00, 295B/s]Downloading [config_sentence_transformers.json]: 100%|███████████████████████████████████| 122/122 [00:00<00:00, 465B/s]Downloading [README.md]: 100%|█████████████████████████████████████████████████████| 3.80k/3.80k [00:00<00:00, 11.3kB/s]Downloading [tokenizer_config.json]: 100%|█████████████████████████████████████████████| 526/526 [00:00<00:00, 2.01kB/s]Downloading [special_tokens_map.json]: 100%|█████████████████████████████████████████████| 239/239 [00:00<00:00, 770B/s]Downloading [sentencepiece.bpe.model]: 100%|███████████████████████████████████████| 4.83M/4.83M [00:00<00:00, 6.97MB/s]Downloading [tokenizer.json]: 100%|████████████████████████████████████████████████| 8.66M/8.66M [00:01<00:00, 6.35MB/s]Downloading [unigram.json]: 100%|██████████████████████████████████████████████████| 14.1M/14.1M [00:01<00:00, 9.55MB/s]Downloading [model.safetensors]: 100%|███████████████████████████████████████████████| 449M/449M [00:21<00:00, 22.2MB/s]Processing 13 items: 100%|███████████████████████████████████████████████████████████| 13.0/13.0 [00:21<00:00, 1.63s/it]2026-05-0311:38:37,384 - modelscope - INFO - Finish downloading 13 files for repo 'sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2'ensors]: 3%|█▎ | 13.0M/449M [00:01<00:40, 11.2MB/s]2026-05-0311:38:37.385 | DEBUG | sirchmunk.utils.embedding_util:_download_model:135 - Model downloaded: /Users/kalami/.sirchmunk/.cache/models/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 449M/449M [00:21<00:00, 25.1MB/s] ✓ Embedding model downloaded: /Users/kalami/.sirchmunk/.cache/models/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 • MCP package not installed (optional) Install with: pip install sirchmunk[mcp] ✓ Generated MCP client config: /Users/kalami/.sirchmunk/mcp_config.json============================================================ Initialization complete!============================================================Next steps:1. Edit /Users/kalami/.sirchmunk/.env to configure LLM_API_KEY2. Run 'sirchmunk serve' to start the API server3. Run 'sirchmunk search "your query"' to perform searches4. Run 'sirchmunk web init' to build WebUI (optional, requires Node.js)5. For MCP: copy /Users/kalami/.sirchmunk/mcp_config.json to your MCP client config - Cursor: ~/.cursor/mcp.json - Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json
初始化时,会先自动下载一个向量模型;paraphrase-multilingual-MiniLM-L12-v2
配置文件路径:看日志:
/Users/kalami/.sirchmunk/.env

然后配置下环境变量(API Key 啥的),就可以开搜了:
sirchmunk search "用户认证是怎么实现的?" ./src
它也支持 MCP 协议,配到 Claude Desktop 里就能直接对话搜索本地文档,体验挺丝滑的。
同样它也支持网页版,详细可以看官方教程;
最后说两句
Sirchmunk 给我最大的启发是:RAG 不一定非得走向量检索这条路。
向量模型确实强大,但它带来的基础设施成本、延迟问题、信息损失,在某些场景下反而是负担。有时候回归本质——直接搜、智能读、精准答——可能更简单有效。
当然,这个项目还比较新,大文件支持和图像搜索这些还在完善。但对于轻量级、成本敏感的本地搜索场景,它确实提供了一个很有意思的新思路。
项目地址:https://github.com/modelscope/sirchmunk
有兴趣的可以去试试,装起来也就几分钟的事。如果折腾过程中遇到什么问题,欢迎在评论区交流,我也还在摸索中。
对了,看完觉得有用的话,点个在看或者转发给同样在折腾知识库的同事吧。咱们下篇见。
夜雨聆风