全文约 3158 字 · 阅读约 8 分钟
项目信号:这个项目 2025 年 1 月 30 日创建,2026 年 6 月 25 日还在更新,主语言是 Python,界面用 Streamlit,代码采用宽松的 MIT 协议,攒下 1785 颗 star、268 次 fork,22 人关注,还有 14 个未关闭 issue,是一个有一定人气、仍在维护的中等规模项目。
关键词及解析:
- RAG(检索增强生成):让模型先从你上传的文档里检索出相关段落,再据此作答并标明出处,尽量不靠记忆凭空编。
- 本地部署:大模型、向量索引、文档全在自己机器上跑,不需要 API key,也不往云端传任何内容。
- 混合检索加重排:同时用关键词(BM25)、向量(FAISS)和知识图谱三种方式找材料,再用一个交叉编码器把最相关的排到前面。
- 带出处的回答(Source cards):每个答案后面附上它到底引用了你文档里的哪几段,方便你点开核对。
它做的事,是把你桌面上一堆读不完的 PDF 变成一个能问答、还能追出处的知识库。
你上传 PDF、DOCX、TXT 或 Markdown,它先把文档切成小块,在建索引前用大模型给每一块补一句它在全文里的上下文,让每个片段带着来龙去脉进库,README 把这套叫上下文检索。接着它同时建三份索引,关键词检索的 BM25、向量检索的 FAISS,还有一张用 NetworkX 搭的实体知识图谱。你提问时,它先查一个语义缓存,问过的相近问题直接返回不再重算;没命中就把你的问题扩写成多个变体分别检索,用一种叫 RRF 的方法把几份结果合并,加上图谱补充的实体关联,交给交叉编码器重新排序,最后由一道叫 CRAG 的关卡给每个片段的相关性打分、把不相关的丢掉,只把真正有用的喂给大模型生成答案。
这一整套九种技术叠起来,真正解决的是检索这一步的准头,让模型作答时手里拿到的是从你文档里挑得比较干净的材料,把大量不相关的噪音先滤掉。 生成时它会把模型的思考过程实时显示出来,答案下面挂着引用到的源片段,方便你当场核对。

项目结构
对着结构看,它其实是一个很紧凑的单页应用。app.py 是 Streamlit 的入口,真正的检索大脑集中在 utils/ 那四个文件里,advanced_rag.py 管前面说的九种检索技术,build_graph.py 建知识图谱,doc_handler.py 负责解析和切分文档,retriever_pipeline.py 把整条检索流水线串起来。.streamlit/ 放界面配置,assets/ 是图标,docker-compose.yml 给容器化部署用。它没有庞大的框架层,读懂这四个文件基本就摸清了它怎么运作,这对想改造或验证它的研究者很友好。
上手难度评为中,卡点集中在装本地大模型和备一台够力的机器这两件事上。
官方给的路子是,先装好 Ollama 并让它跑起来,准备 Python 3.10 以上,git 克隆后 pip 装依赖,再用 ollama 拉两个模型,一个当大模型(默认 `llama3.1:8b`,可换任意 Ollama 模型),一个当嵌入模型(nomic-embed-text,必装),然后 python -m streamlit run app.py,打开本地 8501 端口就能用。README 提醒 Windows 上第一次跑可能撞到一个 torch 的 DLL 报错,按它给的命令把 torch 钉到 CPU 稳定版即可。真正的门槛在本地推理的硬件,一个 8B 模型要占不少内存,模型文件也要下好几个 GB,机器弱了问答会明显变慢。

关键配置:docker-compose.yml
不想手动装环境,它也给了 Docker 方案。对着这份 docker-compose.yml 看,容器把 Streamlit 的 8501 端口映射出来,几个环境变量指定了要用哪个大模型、嵌入模型和重排模型。这里最该留意的一行是 OLLAMA_API_URL 指向 host.docker.internal,意思是容器里的应用回连你本机上跑的 Ollama,模型推理仍在本地,没有走任何云端接口。 整套代码是开源免费的 MIT 协议,没有强制付费,也不需要买任何 API,花费只落在你自己的算力上。
它的增益集中在一件事上,帮你把手头的一批文档快速问答、并且答案能追到出处,其他研究环节它帮不上。
先说做得好的。它只回答你上传的材料,答案还挂着引用的源片段,你能一眼点开核对模型到底是从哪句话得出的结论,这比对着一个什么都敢答的聊天机器人要稳得多。检索这一步它下了功夫,混合检索加重排加相关性打分,目的就是让模型作答前手里的材料尽量准,减少答非所问。对一个要在几十上百页 PDF 里反复查证某个说法、某个数据出处的研究者,它能省下大量翻找和定位的时间。
再说不能可靠交给它的。它只读你喂进去的文档,不会去外部检索文献、也不会替你判断某篇引文是否真实存在,指望它帮你查文献、生成参考文献列表是用错了工具。标出处能大幅降低编造的概率,却降不到零,检索排序仍可能把不相关的片段送进去,本地小模型也可能把一段材料读歪或过度引申。RAG 把答案绑在你的文档上,压住的是模型凭记忆瞎编,压不住它读浅、读偏,每一条关键结论都得点开源片段亲自核对,最终的把关还是你自己。 还要记住默认的 `llama3.1:8b` 是个能本地跑的小模型,综合推理和长文归纳的质量,和云端的前沿大模型有明显差距,做严肃综述别指望它一步到位。
对研究者最在意的数据去向,这个项目的默认设计几乎是最让人放心的一类,从模型推理到向量索引到文档,全都待在你自己的机器上。
README 把这点摆在最显眼的位置,不需要 API key、不往云端上传、不用订阅,整套东西断了网也能跑。你未发表的稿子、原始数据、访谈记录喂进去,默认不会离开本地磁盘,对有保密和伦理要求的材料是实打实的安全边界。
有两处需要自己盯住。一是如果你把配置里的模型地址从本机 Ollama 改指到某个云端推理接口,或把嵌入模型换成联网服务,你的文档内容就会发到那个服务,本地的安全前提当场失效。二是这个仓库同时在推广一个托管版的企业方案(挂在一个 vercel 网址上),那是它另外提供的云端商业服务,和你自己克隆下来跑的本地版是两回事,别把两者混在一起。判断很简单,只要模型和嵌入服务都指向你本机,就是安全的,这也是它相对云端问答服务最大的价值;一旦任何一环指向外部接口,就要重新掂量你送出去的是什么内容。
来源:本地知识库问答助手 Cortex RAG,SaiAkhil066/CORTEX-AI-SUPER-RAG,https://github.com/SaiAkhil066/CORTEX-AI-SUPER-RAG ,★1785,MIT。
夜雨聆风