【开源自荐】Marginalia:一个面向私人异构资料库的 AI 检索 / 调查系统

MinQ 2026-05-29 00:42 1

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:



  • 我的帖子已经打上 开源推广 标签:

  • 我的开源项目完整开源,无未开源部分:

  • 我的开源项目已链接认可 LINUX DO 社区:

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:

  • 以上选择我承诺是永久有效的,接受社区和佬友监督:


以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出





最近被老板按着头做知识库做的心烦,白天向量数据库晚上切块的,效果还越调越烂,日子过得贼难受

这不得不促使我思考一个问题,人类管理书籍和档案已经几千年了,也没听说过有向量数据库这玩意啊,那不也活得好好的

然后我也研究了一些比如最近大火的Karpathy LLM Wiki之类的,但感觉都差点意思,不太适合企业级(至少是中小企业起步吧)知识库的做法。


想来想去,我决定拿出毕生所学,捣鼓了一个(自我感觉)非常适合研究者/法律工作者/金融工作者这个方向的知识库


它的底层逻辑就是

图书馆学 x 推荐系统 x Agent


整个系统以不同角色为边界,划分了3个角色:图书馆员,调查员,用户

用户负责上传文件,图书馆员负责对文件打标签,写summary。调查员负责写笔记、阅读summary,浏览不同的文件提取知识,并最终汇总成调查报告发给用户,同时记下这次问答的笔记。图书馆员再利用这个笔记将不同的文件进行聚合,挖掘不同文件之间的内在关联,这样一个知识图谱就形成了


而且整个系统是一个自反馈系统,随着问的问题越来越多,它就能够挖掘出你在跟它对话中隐藏的知识关联性和文件隐含的其它属性,提高聚合和查询的质量


最终的目标是诞生一个自组织、自适应、自感知的知识库系统


目前已经有几个种子用户,他们一致认为该项目能够解决工作中的很多问题


Github: GitHub - shenmintao/marginalia: A library-science-inspired personal knowledge management system with LLM agents · GitHub


希望大家多多体验,提点反馈意见


目前的评测方法是加载了一些公开的法律相关文件,然后对公开判决进行审查,给出理由和反对意见,然后抓一个正经法官过来进行评测,结论是大约跟法官助理水平相当。

最新回复 (19)
  • hwang 05-29 01:10
    2

    用户上传文件后,图书馆员Agent 把文件按分类、标签放到了各自的位置(模拟),然后有需要的时候找调查员Agent 去根据文件的分类、标签、元数据等,再结合知识图谱(记忆)去找对应的文件出来?

    优点是可以很快得找到对应的文件,缺点是没法通过细节、内容去找,然后这个缺点依赖使用的过程中不断演化完善的知识图谱去弥补,我的理解对吗?

  • MinQ 楼主 05-29 01:16
    3

    如果Agent觉得凭借当前信息无法获得正确答案的时候就会去读对应的文件,类似grep,或者按页读取源文件(因为之前分类的时候就已经标明了章节结构或者分页summary,Agent能够理解自己应该读哪一部分或者哪几部分),同时在该轮对话结束后Agent会根据对话上下文给对应文件打上新的标签和补充额外的信息,再判断本次回答用到的文件之间有没有内在联系,如果有的话就将它们聚合在一起。下一次搜索的时候就会更快的找到,甚至可能不需要再次读取文件本身。


    这个方法强大之处在于,能够召回OCR的pdf内的内容,也可以获得聊天截图、拍摄的公司白板照片上的知识。甚至面对两份相互矛盾的文件,可以根据其它信息(比如操作手册、代码片段)辨别出谁是正确的

  • hwang 05-29 01:36
    4

    听上去,很烧token ?入库的时候全部文件都得由图书馆员Agent 过一遍完整的文件内容,不然没法准确得分类、总结。


    后面如果引入一个错误的点,纠正会不会比较难?因为可能会涉及到很多很多的文件,比如我跟他说 linux.do 是一个学习linux 的网站,然后图书馆员Agent 在重新整理的时候把所有linux 相关的都关联上了linux.do,然后再去做次级关联,把《鸟叔的linux 私房菜》也关联上了linux.do

  • MinQ 楼主 05-29 01:38
    5

    目前测试入库使用deepseek v4 flash + qwen 3.6-plus作为VLM模型,2500个md+2500张图片,以及100多个pdf(包括1000页的技术规范),大概花费是300块钱


    不会,只有在问答的时候被召回的文件才会被调整关联,如果Agent判断这个文件跟问题无关的话是不会调整的。就比如Agent在读取《鸟叔的linux私房菜》的时候发现linux.do并没有出现在里面,《鸟叔的linux私房菜》就不会出现在最终答案中,自然也不会被打上linux.do的标签


    而如果另一个介绍linux操作命令的文档中提到了linux.do,如果Agent读到了,在后续整理的阶段该文件就会被打上linux.do

  • hwang 05-29 01:50
    6

    模型的进步也弥补了很多不确定性,以前linux.do绝对会被linux 关联上的 ^-^


    谢谢佬的回复和这个项目的思路,这个项目对我在构思的东西有很大的启发。

  • MinQ 楼主 05-29 01:51
    7

    是的,现代模型1M的上下文和梁圣便宜到爆炸而且cache命中极高的v4 flash才是这个项目能落地的原因

  • Xle 05-30 13:04
    8

    这个容量上限高吗?不知道做企业知识库怎么样,抽空了部署研究下。

  • MinQ 楼主 05-30 13:06
    9

    目前实测5000个文件没啥问题,1w以内我觉得都可以,再往上就没试过了

  • zuiyi2333 05-30 16:37
    10

    .epub这个格式支持吗,总是报模型错误

  • MinQ 楼主 05-30 16:43
    11

    epub的pipeline没有做 ^-^因为我自己没有这个需求,你可以自己改一下代码增加一条pipeline

  • andy liu 05-30 17:01
    12

    tql佬,话说现在私有数据库搭建llm wiki才是最终答案吗?rag要淘汰了吗? ^-^

  • MinQ 楼主 05-30 17:06
    13

    切块估计是要淘汰了,因为会显著丢失上下文,但embedding和rerank我估计还是会存在的,因为embedding对于语义召回是有意义的,rerank对于多路召回也是有意义的

  • alLiu 06-04 17:32
    14

    佬,我想问一下,不知道您了不了解市面上做这种图书知识图谱类型的系统,报价大概在什么区间。数据有word、pdf、图片、视频这些,图书里边有关键字和注释。

  • MinQ 楼主 06-04 17:46
    15

    ^-^ ^-^这我还真不知道,没接过外包

  • susiddhi 06-18 13:44
    16

    我已经下载了这个程序。我十分看好这个方式。但是对没有技术能力的学校老师而言,这里面有几个地方需要请教。



    1. 这个不用做分块和嵌入模型吗?

    2. 提问模型是不是都需要重新设置。一路安装后不做任何设置使用默认,导入md文档,提问问题,没有任何反应。

    3. 这个也可以接电脑里的本地模型吗?

    4. 设置里,如果有教程更好了。现在是抓瞎状态 ^-^

  • MinQ 楼主 06-18 14:17
    17


    1. 不做分块,因为我觉得在现在大语言模型拥有长上下文的情况下,做分块只会丢失上下文语意。Marginalia使用和claude code/codex相同的关键词搜索和原文段落阅读来获得最终答案。


      embedding和rerank是可选的,embedding的用途是将summary和章节description转换为向量,这样可以做语义相似召回,rerank用来重排召回结果,可以让大模型尽早拿到它想要的结果。缺少这两项的话最终也能找到正确内容,只不过需要的搜索轮数略多于设置了embedding和rerank之后的搜索轮数。




    2. 设置页面有不同的模型配置,填写好这部分的内容后才能正常使用(毕竟还是要依赖LLM进行搜索和总结)。


      其中Default填写好后,如果Chat、Reflect或者Ingest为空,则这三个任务会自动使用Default的模型。Vision模型在没有填写时OCR和图片识别的功能会自动不起作用。


      至于为什么将任务分为Chat、Reflect和Ingest,是因为它们的任务量级和难度并不一致,Ingest和Reflect的任务推荐使用Deepseek v4 flash,在速度、效果、费用方面都非常均衡。Chat部分单独拎出来是因为考虑到有人可能需要比较重的思维能力,例如阅读法院案卷和证据、汇总出具金融报告、阅读总结多篇论文等等。在这种任务下推荐使用Deepseek v4 pro及以上模型,以获得更好的效果。




    3. 可以的,你可以任意对接Ollama或者vLLM已经配置好的本地模型




    4. 教程我马上会补上



  • Momi 06-18 14:36
    18

    蹲蹲大佬的教程,知识库我现在还用着切片的向量的方法,其实是抽离cherry studio的知识库在使用

  • susiddhi 06-18 14:45
    19

    我觉得你这个思路和现有的知识库都不太一样。最近一段时间,我使用了openspg/lightrag/anythingllm/dify/fastgpt等等,部署过很多,掉坑里很多次,又是装docker又是配ollama,要么是改环境,系统都崩溃好几次,重装了几次了。几乎都是要求切块、向量化、召回、llm整合。整合之后再回答。中间任何一个步骤有了问题就前功尽弃。同时运行了docker/lmstudio,普通电脑又承受不了,几个问题下来就死机。

    中文语义尤其是哲学社会科学之类的,上下文联系很紧密,强行切块必然会导致语义不连贯。所以不用切块非常好。

    现在限制软件运行的可能就是本地模型的上下文大小了。比如我导入150万字,那对上下文要求就非常大了。

  • MinQ 楼主 06-18 14:50
    20

    是的,长上下文阅读对于知识库这种资料检索非常重要,而这跟显存又是息息相关的。现阶段除非是清北这种本身采购了LLM服务器,否则都不太推荐在本地部署,性价比太低了。Deepseek充200块钱能用很久了,还不用折腾 ^-^ ^-^

* 帖子来源Linux.do
返回