从文档管理到可对话知识库:个人知识库最佳实践方案
1. RAG个人知识库和文档管理
-
很多人都会遇到以下的问题:
-
个人的技术资料和工作上累积的文档越来越多
-
PDF、图片、文档散落在各个目录
-
想找一份资料时只能靠文件名或全文搜索
-
知道“某份文档里有答案”,但找不到在哪
-
一般来说,有大量资料和技术文档的资产的管理,要么放本地要么丢同步盘,可持久化好一些的解决方案就是部署文档管理系统管理(如paperless-ngx等).

那么当文档越来越多的情况下,自己已经几乎完全忘记文档内容时,如何查询和检索便成为了一个新的挑战.
随着现在大语言模型的发展,一个新的解决方向变得可行:
让电脑“读懂”你的文档,并且可以直接用自然语言提问
这就是RAG知识库,目前这类方案中,anythingllm算是在强大和简单易用性中平衡的最好的产品了,而且最重要的是,部署简单和免费.
但anythingllm目前专注于RAG方向,对于原始文档的管理查找的功能有缺失,当我想在anythingllm中查看和管理原文档时,发现几乎难以实现,那么今天我这里探索总结的一个方案就是:
查看管理原始文档资产,并且同时同步成AI时代可对话、可推理的知识库
这篇文章,就是我最终探索出来的一套结合文档管理和RAG知识库优点个人知识库部署实践.可以方便的在Linux的个人服务器或者NAS上运行和部署.
2. 我选择了哪些组件
Paperless-ngx:文档资产管理
选择 Paperless-ngx 的原因非常明确:
-
成熟稳定
-
多文档格式支持, 有 OCR 能力(Tesseract)
-
有完整的API接口
-
支持规则化归档(document type / correspondent / tags)
-
完全私有化
AnythingLLM: RAG 与 Workspace 的结合体
AnythingLLM 的优势在于:
-
Workspace 抽象非常适合“知识域”
-
文档在Workspace中embedding后即可依赖LLM实现检索
-
可对接本地 Ollama
-
简单易上手
-
完全私有化
Ollama:本地LLM模型以及Embedder
大名鼎鼎的Ollama就不用多介绍了,这里我们跑两个模型,qwen3-embedding:0.6b和qwen3:4b,供AnythingLLM做Embedder和LLM使用(更加强大的LLM提供商很多,可以自行选择)
paper2anything:我开发的一款开源的同步工具
这个工具是我为解决以上问题开发的依据paperless-ngx的tag同步到anythingllm的workspace的工具,支持多tag增改删的同步,项目内有详细说明,没花几天时间写代码,只是共享一下方法并不是想要推广自己的项目,但还是欢迎使用并提issue,求star
项目地址:
它做的事情包括:
-
调用 Paperless API 获取文档元数据
-
根据tag映射到Workspace
-
通过 AnythingLLM API 上传文档和embedding到Workspace
-
做增量同步(新增 / 修改 / 删除)
-
本地保存同步状态
3. 部署方法和 Docker Compose 示例
- Paperless-ngx的部署,这是一份相对较齐全的可用配置(省略映射路径等选项):
|
|
-
在 Paperless 中做的事情
完成部署后,你需要做三件事:
-
创建管理员账号
-
上传文档
-
给文档设置或者分配标签
这些信息将直接决定后续知识库的结构
-
-
anythingLLM的docker compose示例
|
|
-
ollama的部署和设置说明
这部分比较简单,就略过不说了,推荐ollama拉取qwen3-embedding:0.6b的模型设置到anythingLLM的embedder中,这算是embedding的最强模型了.
LLM模型设置可以根据自己的条件来,本人测试qwen3:4b在markdown文档下可用,但pdf文档基本上就是乱答了,国内用收费模型如deepseek都体验不错.

-
同步设置和说明
同步工具下载地址: https://github.com/oserz/paper2anything/releases/
在同步之前,一定要先设置好anythingllm中的embedder等选项再开始同步
根据config.json.example中填入url地址,和token和api_key,改名成config.json运行p2a即可
anythingllm的api_key在设置 –> 开发者API
paperless-ngx的token在账户信息 –> API认证字符串
或者运行./sync_loop.sh即可按半小时一次更新同步内容
-
最终运行效果图:


