ThinkRAG开源!笔记本电脑可运行的本地知识库大模型检索增强生成系统
ThinkRAG 大模型检索增强生成系统,可以轻松部署在笔记本电脑上,实现本地知识库智能问答。
该系统基于 LlamaIndex 和 Streamlit 构建,针对国内用户在模型选择、文本处理等诸多领域进行了优化。
1. 项目地址
ThinkRAG 在Github开源,使用 MIT 协议。你可以通过以下网址或点击“阅读原文”,获取代码和文档,在笔记本电脑上运行和使用。
https://github.com/wzdavid/ThinkRAG
2. 模型支持
ThinkRAG 可使用 LlamaIndex 数据框架支持的所有模型。关于模型列表信息,请参考以下文档。
https://docs.llamaindex.ai/en/stable/module_guides/models/llms/modules/
现在,RAG框架太多,好用的系统太少。
ThinkRAG致力于打造一个直接能用、有用、易用的应用系统。
因此,在各种模型、组件与技术上,我们做了精心的选择与取舍。
首先,使用大模型,ThinkRAG支持OpenAI API 以及所有兼容的 LLM API,包括国内主流大模型厂商,例如:
-
智谱(Zhipu)
-
月之暗面(Moonshot )
-
深度求索(DeepSeek)
-
……
如果要本地化部署大模型,ThinkRAG 选用了简单易用的 Ollama。我们可以从通过 Ollama 将大模型下载到本地运行。
目前 Ollama 支持几乎所有主流大模型本地化部署,包括 Llama、Gemma、GLM 、Mistral、Phi、Llava等。具体可访问以下 Ollama 官网了解。
https://ollama.com/
系统也使用了嵌入模型和重排模型,可支持来自 Hugging Face 的大多数模型。目前,ThinkRAG主要选用了BAAI的BGE系列模型。国内用户可访问如下网址了解和下载:
https://hf-mirror.com/BAAI
3. 系统特点
ThinkRAG 是为专业人士、科研人员、学生等知识工作者开发的大模型应用系统,可在笔记本电脑上直接使用,且知识库数据都保存在电脑本地。
ThinkRAG具备以下特点:
-
LlamaIndex框架的完整应用
-
开发模式支持本地文件存储,无需安装任何数据库
-
无需 GPU 支持,即可在笔记本电脑上运行
-
支持本地部署的模型和离线使用
特别地,ThinkRAG 还为国内用户做了大量定制和优化:
-
使用 Spacy 文本分割器,更好地处理中文字符
-
采用中文标题增强功能
-
使用中文提示词模板进行问答和细化过程
-
默认支持国内大模型厂商,如智谱、月之暗面和深度求索等
-
使用双语嵌入模型,如 BAAI的bge-large-zh-v1.5
4. 快速开始
第1步 下载与安装
从Github下载代码后,用pip安装所需组件。
pip3 install -r requirements.txt
若要离线运行系统,请首先从官网下载 Ollama。然后,使用 Ollama 命令下载如GLM、 Gemma 和 QWen 等大模型。
同步,从Hugging Face将嵌入模型(BAAI/bge-large-zh-v1.5)和重排模型(BAAI/bge-reranker-base)下载到 localmodels 目录中。
具体步骤,可参考 docs 目录下的文档:HowToDownloadModels.md
https://github.com/wzdavid/ThinkRAG/blob/main/docs/HowToDownloadModels.md
第2步 系统配置
为了获得更好的性能,推荐使用千亿级参数的商用大模型 LLM API。
首先,从 LLM 服务商获取 API 密钥,配置如下环境变量。
ZHIPU_API_KEY = ""``MOONSHOT_API_KEY = ""``DEEPSEEK_API_KEY = ""``OPENAI_API_KEY = ""
你可以跳过这一步,在系统运行后,再通过应用界面配置 API 密钥。
如果选择使用其中一个或多个 LLM API,请在 config.py 配置文件中删除不再使用的服务商。
当然,你也可以在配置文件中,添加兼容 OpenAI API 的其他服务商。
**ThinkRAG 默认以开发模式运行。**在此模式下,系统使用本地文件存储,你不需要安装任何数据库。
若要切换到生产模式,你可以按照以下方式配置环境变量。
THINKRAG_ENV = production
在生产模式下,系统使用向量数据库 Chroma 和键值数据库 Redis。
如果你没有安装 Redis,建议通过 Docker 安装,或使用已有的 Redis 实例。请在 config.py 文件里,配置 Redis 实例的参数信息。
第3步 运行系统
现在,你已经准备好运行 ThinkRAG。
请在包含 app.py 文件的目录中运行以下命令。
streamlit run app.py
系统将运行,并在浏览器上自动打开以下网址,展示应用界面。
http://localhost:8501/
第一次运行可能会需要等待片刻。如果没有提前下载 Hugging Face 上的嵌入模型,系统还会自动下载模型,将需要等待更长时间。
5. 使用指南
(1)系统配置
ThinkRAG 支持在用户界面,对大模型进行配置与选择,包括:大模型 LLM API 的 Base URL 和 API 密钥,并可以选择使用的具体模型,例如:智谱的 glm-4。
系统将自动检测 API 和密钥是否可用,若可用则在底部用绿色文字,显示当前选择的大模型实例。
同样,系统可以自动获取 Ollama 下载的模型,用户可以在用户界面上选择所需的模型。
若你已经将嵌入模型和重排模型下载到本地 localmodels 目录下。在用户界面上,可以切换选择使用的模型,并设置重排模型的参数,比如 Top N。
在左侧导航栏,点击高级设置(Settings-Advanced),你还可以对下列参数进行设置:
-
Top K
-
Temperature
-
System Prompt
-
Response Mode
通过使用不同参数,我们可以对比大模型输出结果,找到最有效的参数组合。
(2)管理知识库
ThinkRAG 支持上传 PDF、DOCX、PPTX 等各类文件,也支持上传网页 URL。
点击 Browse files 按钮,选择电脑上的文件,然后点击 Load 按钮加载,此时会列出所有加载的文件。
然后,点击 Save 按钮,系统会对文件进行处理,包括文本分割和嵌入,保存到知识库中。
同样,你可以输入或粘贴网页 URL,获取网页信息,处理后保存到知识库中。
系统支持对知识库进行管理。
如上图所示,ThinkRAG 可以分页列出,知识库中所有的文档。
选择要删除的文档,将出现 Delete selected documents 按钮,点击该按钮可以将文档从知识库中删除。
(3)智能问答
在左侧导航栏,点击 Query,将会出现智能问答页面。
输入问题后,系统会对知识库进行检索,并给出回答。在这个过程当中,系统将采用混合检索和重排等技术,从知识库获取准确的内容。
例如,我们已经在知识库中上传了一个 Word 文档:“大卫说流程.docx“。
现在输入问题:”流程有哪三个特征?”
如图所示,系统用时2.49秒,给出了准确的回答:流程具备目标性、重复性与过程性。同时,系统还给出了从知识库检索到的2个相关文档。
可以看到,ThinkRAG 完整和有效地实现了,基于本地知识库的大模型检索增强生成的功能。
****6. 技术架构
ThinkRAG 采用 LlamaIndex 数据框架开发,前端使用Streamlit。系统的开发模式和生产模式,分别选用了不同的技术组件,如下表所示:
开发模式 | 生产模式 | |
RAG框架 | LlamaIndex | LlamaIndex |
前端框架 | Streamlit | Streamlit |
嵌入模型 | BAAI/bge-small-zh-v1.5 | BAAI/bge-large-zh-v1.5 |
重排模型 | BAAI/bge-reranker-base | BAAI/bge-reranker-large |
文本分割器 | SentenceSplitter | SpacyTextSplitter |
对话存储 | SimpleChatStore | Redis |
文档存储 | SimpleDocumentStore | Redis |
索引存储 | SimpleIndexStore | Redis |
向量存储 | SimpleVectorStore | Chroma |
这些技术组件,按照**前端、框架、大模型、工具、存储、基础设施,**这六个部分进行架构设计。
如下图所示:
7. 后续开发计划
ThinkRAG 将继续优化核心功能,持续提升检索的效率和准确性,主要包括:
-
优化对文档和网页的处理,支持多模态知识库和多模态检索
-
构建知识图谱,通过知识图谱增强检索,并基于图进行推理
-
通过智能体处理复杂场景,尤其是准确调用其他工具和数据,完成任务
同时,我们还将进一步完善应用架构、提升用户体验,主要包括:
-
设计:有设计感和极佳用户体验的用户界面
-
前端:基于Electron、React、Vite等技术,构建桌面客户端应用,为用户提供极致简洁的下载、安装和运行方式
-
后端:通过FastAPI提供接口,以及消息队列等技术提升整体性能和可扩展性
好事即将发生。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。