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

server/2024/12/16 0:34:24/

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/server/150483.html

相关文章

深入解析 Spring Security —— 打造高效安全的权限管理体系

目录 前言1. 初识 Spring Security1.1 Spring Security 的两大核心功能1.2 Spring Security 的主要特点 2. 配置 Spring Security2.1 配置类概述2.2 基础配置示例2.3 示例解析 3. Spring Security 的进阶功能3.1 自定义用户服务3.2 注解式权限控制3.3 动态权限控制 4. 实战应用…

基于PHP课堂签到系统的设计与实现

摘 要 随着教育业的迅速发展和学生人数的不断增加,导致在班级登记制度中传统的“点到”方式不能适应学校的实际需要。从而需要设计一个好的课堂签到系统将会对课堂签到管理工作带来事半功倍的效果。文章着重介绍了基于实践应用的班级签到系统的开发流程&#xff0c…

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…

java 动态设置 jvm

在 Java 中,动态设置 JVM 参数(如堆大小、垃圾回收策略等)通常在启动应用时通过命令行来设置,而在运行时修改 JVM 参数是比较有限的。不过,你仍然可以通过以下几种方式来调整 JVM 的一些设置: 1. 在启动时设置 JVM 参数 这些参数在…

Scala中的泛型特质

代码如下: package test41 //泛型特质 object test3 { //定义一个日志//泛型特质,X是泛型名称,可以更改。trait Logger[X] {val content: Xdef show():Unit }class FileLogger extends Logger[String] {override val content: String "…

Vue 集成地图

电子地图应用广泛: 网约车 : 在网约车 场景中实现 准定位 、导航 、司乘同显 ,精准计费 智慧物流、生活服务等,本专题课程囊括各类应用场景 学习 电子地图解决方案,满足学员工作学习各类需求。 基础知识 学习 集成 地图之前需…

VScode配置GIT

在Visual Studio Code(VSCode)中检测不到已安装的Git可以通过以下步骤来解决‌: ‌确认Git是否正确安装‌:首先,确保在计算机上正确安装了Git。可以通过打开命令行窗口并输入git --version来检查是否能够显示Git的版本…

YOLOv8-ultralytics-8.2.103部分代码阅读笔记-train.py

train.py ultralytics\models\yolo\detect\train.py 目录 train.py 1.所需的库和模块 2.class DetectionTrainer(BaseTrainer): 1.所需的库和模块 # Ultralytics YOLO 🚀, AGPL-3.0 licenseimport math import random from copy import copyimport numpy as …