在笔记本电脑上,实现本地知识库和大模型检索增强生成(RAG)
能不能在笔记本电脑上,不依赖任何外部API,完全本地化地跑一个知识库问答系统?上一篇参考文章里介绍了通过Ollama和Open WebUI搭建本地智能对话的方案,那套组合拳打下来体验已经不错。但先别急,那还只是个“裸奔”的大模型——它没有记忆,也读不了你本地的文档。
现在轮到主角登场了。把
AnythingLLM
下面就把这套流程一步步拆开说。
第一步:下载AnythingLLM
AnythingLLM是MIT协议的开源框架,设计目标很明确:让用户在本地快速部署基于RAG的大模型应用。最近它推出了桌面版,支持MacOS、Windows和Linux,体验上直接对标一个桌面工具。
下载地址:https://useanything.com/download
以MacOS为例,下载dmg文件,双击安装,初次启动需要等待5到15秒做个初始化。后续所有上传的文档、向量数据和数据库,都存储在以下路径,方便查阅:
~/Library/Application Support/anythingllm-desktop
第二步:选大模型
AnythingLLM默认支持通过Ollama调用LLama2、Mistral、Gemma等模型,当然也能直接调用OpenAI、Gemini或Mistral的API。既然已经装了Ollama,直接在设置里选Ollama,填上本地的API接口URL,再指定之前下载好的Gemma模型即可。这步没什么门槛。
第三步:选嵌入模型
嵌入模型的作用是把文档转换成向量,让它能被大模型理解。AnythingLLM内置了一个轻量的嵌入模型
all-Mini-L6-v2
nomic-embed-text
既然Ollama已经在手,直接选用nomic-embed-text,没什么可犹豫的。
第四步:选向量数据库
AnythingLLM默认把向量数据存储在自带的
LanceDB
第五步:管理知识库
AnythingLLM支持PDF、TXT、DOCX等常见文档格式。它会自动提取文本内容,通过嵌入模型转成向量,存到向量数据库中。这一切通过一个清爽的UI来管理。
这里引入了一个概念:
工作区(workspace)
第六步:RAG智能问答
知识库建好后,就可以向大模型提问了。比如问一句:“AI将给数字化带来哪些模式转变?”大模型会基于之前上传的文档内容生成回答,并且在结果中标注引用了哪几份文档。这种机制,相当于给大模型配了一个可检索的专属记忆库。
不过目前看,答案的准确性还有提升空间——比如对原文中的一些细节表述不够精确。这需要后续在文本召回和重排序环节做进一步调优。RAG这条路线值得持续打磨。
定制UI界面
AnythingLLM默认提供了一些界面定制选项,比如可以更换自己的品牌Logo,还可以设置首次创建新工作区时的欢迎语。这些小功能对团队内部使用或者面向客户展示时非常友好。
定制开发:技术栈
如果标准功能不够用,需要自己改源码。这里多说一句:同类开源项目大多基于Python开发,但AnythingLLM选择了Ja vaScript技术栈——前端用React和ViteJS,后端用Node.js Express框架,采集器同样用Node.js。这套组合对全栈工程师来说很友好,上手成本低。
部署方式
AnythingLLM对硬件资源的要求很低:最低2G内存、2核CPU就能跑。如果想在企业内部使用,推荐通过
Docker
export STORAGE_LOCATION=$HOME/anythingllm && mkdir -p $STORAGE_LOCATION && touch "$STORAGE_LOCATION/.env" && docker run -d -p 3001:3001 --cap-add SYS_ADMIN -v ${STORAGE_LOCATION}:/app/server/storage -v ${STORAGE_LOCATION}/.env:/app/server/.env -e STORAGE_DIR="/app/server/storage" mintplexlabs/anythingllm:master
多用户模式
这一点对于企业级应用尤其关键。AnythingLLM支持多用户,并划分了3种角色:
- :拥有全部管理权限。
管理员(Admin)
- :可管理所有工作区和文档,但不能修改大模型、嵌入模型和向量数据库等系统配置。
管理者(Manager)
- :只能在被授权的工作区内与大模型对话,无法更改任何设置。
普通用户
这种权限设计,既保证了数据安全,又方便团队协作。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名