ThinkRAG开源!笔记本电脑可运行的本地知识库大模型检索增强生成系统

ops/2024/12/19 5:55:25/

ThinkRAG 大模型检索增强生成系统,可以轻松部署在笔记本电脑上,实现本地知识库智能问答。

该系统基于 LlamaIndexStreamlit 构建,针对国内用户在模型选择、文本处理等诸多领域进行了优化。

1. 项目地址

ThinkRAG 在Github开源,使用 MIT 协议。你可以通过以下网址或点击“阅读原文”,获取代码和文档,在笔记本电脑上运行和使用。

https://github.com/wzdavid/ThinkRAG

img

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。

img

系统将自动检测 API 和密钥是否可用,若可用则在底部用绿色文字,显示当前选择的大模型实例。

同样,系统可以自动获取 Ollama 下载的模型,用户可以在用户界面上选择所需的模型。

img

若你已经将嵌入模型和重排模型下载到本地 localmodels 目录下。在用户界面上,可以切换选择使用的模型,并设置重排模型的参数,比如 Top N。

img

在左侧导航栏,点击高级设置(Settings-Advanced),你还可以对下列参数进行设置:

  • Top K
  • Temperature
  • System Prompt
  • Response Mode

通过使用不同参数,我们可以对比大模型输出结果,找到最有效的参数组合。

(2)管理知识库

ThinkRAG 支持上传 PDF、DOCX、PPTX 等各类文件,也支持上传网页 URL。

img

点击 Browse files 按钮,选择电脑上的文件,然后点击 Load 按钮加载,此时会列出所有加载的文件。

然后,点击 Save 按钮,系统会对文件进行处理,包括文本分割和嵌入,保存到知识库中。

img

同样,你可以输入或粘贴网页 URL,获取网页信息,处理后保存到知识库中。

系统支持对知识库进行管理。

img

如上图所示,ThinkRAG 可以分页列出,知识库中所有的文档。

选择要删除的文档,将出现 Delete selected documents 按钮,点击该按钮可以将文档从知识库中删除。

(3)智能问答

在左侧导航栏,点击 Query,将会出现智能问答页面。

输入问题后,系统会对知识库进行检索,并给出回答。在这个过程当中,系统将采用混合检索重排等技术,从知识库获取准确的内容。

例如,我们已经在知识库中上传了一个 Word 文档:“大卫说流程.docx“。

现在输入问题:”流程有哪三个特征?”

img

如图所示,系统用时2.49秒,给出了准确的回答:流程具备目标性、重复性与过程性。同时,系统还给出了从知识库检索到的2个相关文档。

可以看到,ThinkRAG 完整和有效地实现了,基于本地知识库大模型检索增强生成的功能。

6. 技术架构

ThinkRAG 采用 LlamaIndex 数据框架开发,前端使用Streamlit。系统的开发模式和生产模式,分别选用了不同的技术组件,如下表所示:

开发模式生产模式
RAG框架LlamaIndexLlamaIndex
前端框架StreamlitStreamlit
嵌入模型BAAI/bge-small-zh-v1.5BAAI/bge-large-zh-v1.5
重排模型BAAI/bge-reranker-baseBAAI/bge-reranker-large
文本分割器SentenceSplitterSpacyTextSplitter
对话存储SimpleChatStoreRedis
文档存储SimpleDocumentStoreRedis
索引存储SimpleIndexStoreRedis
向量存储SimpleVectorStoreChroma

这些技术组件,按照**前端、框架、大模型、工具、存储、基础设施,**这六个部分进行架构设计。

如下图所示:

img

7. 后续开发计划

ThinkRAG 将继续优化核心功能,持续提升检索的效率和准确性,主要包括:

  • 优化对文档和网页的处理,支持多模态知识库和多模态检索
  • 构建知识图谱,通过知识图谱增强检索,并基于图进行推理
  • 通过智能体处理复杂场景,尤其是准确调用其他工具和数据,完成任务

同时,我们还将进一步完善应用架构、提升用户体验,主要包括:

  • 设计:有设计感和极佳用户体验的用户界面
  • 前端:基于Electron、React、Vite等技术,构建桌面客户端应用,为用户提供极致简洁的下载、安装和运行方式
  • 后端:通过FastAPI提供接口,以及消息队列等技术提升整体性能和可扩展性

好事即将发生。

如何学习AI大模型

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。


http://www.ppmy.cn/ops/143095.html

相关文章

安防监控Liveweb视频汇聚融合平台助力执法记录仪高效使用

Liveweb平台可接入的设备除了常见的智能分析网关与摄像头以外 ,还可通过GB28181协议接入执法记录仪,实现对执法过程的全程监控与录像,并对执法轨迹与路径进行调阅回看。那么,如何做到执法记录仪高效使用呢? 由于执法记…

crapy 爬虫框架的使用

1.scrapy框架安装 安装前先安装python3和pycharm 社区版 执行命令安装scrapy, pip install scrapy 2.创建项目 执行命令: scrapy startproject test_spider 如图: 3.使用pycharm大开项目并设置pipenv虚拟机环境 虚拟环境是为了依赖隔…

QT编译opencv

一.QT5.12编译 1.QT环境 QT5.12 Qt Creator 12.0.2 2.OpenCV文件 因为QT5.12版本qt最后支持到2021.12月,所以这里选择的opencv版本为2021.4月发布的opencv-3.4.16版本 官网下载地址:https://opencv.org/releases/ 最新版本:opencv-3.4.16.…

什么是正则化?Regularization: The Stabilizer of Machine Learning Models(中英双语)

正则化:机器学习模型的稳定器 1. 什么是正则化? 正则化(Regularization)是一种在机器学习模型训练中,通过约束模型复杂性以防止过拟合的技术。 它的核心目标是让模型不仅在训练集上表现良好,还能在测试集上…

Eureka学习笔记-服务端

Eureka学习笔记 服务端 模块设计 Resources :这部分对外暴露了一系列的 Restful 接口。Eureka Client 的注册、心跳、获取服务列表等操作都需要调用这些接口。另外,其他的 Server 在同步 Registry 时也需要调用这些接口。Controller :这里提…

学习日志024--opencv中处理轮廓的函数

目录 前言​​​​​​​ 一、 梯度处理的sobel算子函数 功能 参数 返回值 代码演示 二、梯度处理拉普拉斯算子 功能 参数 返回值 代码演示 三、Canny算子 功能 参数 返回值 代码演示 四、findContours函数与drawContours函数 功能 参数 返回值 代码演示 …

知乎 PB 级别 TiDB 数据库集群管控实践

以下文章来源于知乎技术专栏 ,作者代晓磊 导读 在现代企业中,数据库的运维管理至关重要,特别是面对分布式数据库的复杂性和大规模集群的挑战。作为一款兼容 MySQL 协议的分布式关系型数据库,TiDB 在高可用、高扩展性和强一致性方…

如何在Qt中应用html美化控件

在Qt中应用HTML美化控件,主要可以通过以下几种方式: 使用QWebEngineView:QWebEngineView是基于Chromium引擎的控件,用于显示和交互HTML内容。它支持现代Web标准和技术,如HTML5、CSS3和JavaScript。你可以通过以下步骤…