# rag_demo **Repository Path**: gitee-liuhui/rag_demo ## Basic Information - **Project Name**: rag_demo - **Description**: 借助LM Studio构建的完全本地运行的RAG系统。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-08-10 - **Last Updated**: 2024-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 这个demo演示了借助LM Studio构建的简易RAG系统。系统的前端由Vite、Vue3和Naive-UI构成,系统的后端由Flask构建,LLM和Embedding模型借助LM Studio部署在本地提供API服务。 ### 什么是检索增强生成? 检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库,所有这些都无需重新训练模型。这是一种经济高效地改进 LLM 输出的方法,让它在各种情境下都能保持相关性、准确性和实用性。 ![](assets/image-20240513161659000-.png) ### 系统安装流程 #### 一、LM Stdio安装 什么是LM Stdio?LM Studio 是一个桌面应用程序,用于在计算机上运行本地 LLM。你可以从官网 `https://lmstudio.ai/`下载适合的版本,也可以使用附件中提供的Windows 0.2.22版本。本地运行LLM对于电脑的配置有一定的要求,推荐使用配置较高的电脑。 下面是LM Stdio的主界面。 ![](assets/截屏2024-05-13 17.04.13.png) #### 二、LM Stdio导入模型 RAG系统依赖Embedding模型和LLM模型。Embedding模型我们推荐使用`CompendiumLabs/bge-large-zh-v1.5-gguf`,下载链接`https://huggingface.co/CompendiumLabs/bge-large-zh-v1.5-gguf`。LLM模型我们推荐使用Qwen1.5,Qwen1.5有不同参数规模的权重,可根据电脑配置高低进行选择。我们在附件中提供了以下三个权重。 | 参数量 | 权重 | 下载链接 | 推荐内存/显存 | | ---- | ----------------------------- | -------------------------------------------------- | ------- | | 1.8B | qwen1_5-1_8b-chat-q5_k_m.gguf | https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat-GGUF | 4GB | | 7B | qwen1_5-7b-chat-q5_k_m.gguf | https://huggingface.co/Qwen/Qwen1.5-7B-Chat-GGUF | 9GB | | 14B | qwen1_5-14b-chat-q3_k_m.gguf | https://huggingface.co/Qwen/Qwen1.5-14B-Chat-GGUF | 11GB | ![](assets/image-20240513175351431-.png) 在LM Stdio的My Models页面可以看到当前已经导入的模型列表。点击”Show in File Explorer“进入模型保存的文件夹。将所需的Embedding模型和LLM模型复制进这个文件夹,注意文件夹的层级关系,一般是层级关系是:models ---> Publisher ---> Repository ---> ModelFile.gguf 下面是一个参考的文件夹层级 ``` models |-- Alibaba |-- Qwen1.5-1.8B |-- qwen1_5-1_8b-chat-q5_k_m.gguf |-- Qwen1.5-7B |-- qwen1_5-7b-chat-q5_k_m.gguf |-- Qwen1.5-14B |-- qwen1_5-14b-chat-q3_k_m.gguf |-- BAAI |-- bge-large-zh-v1.5 |-- bge-large-zh-v1.5-q8_0.gguf ``` #### 三、LM Stdio开启服务 ![](assets/image-20240513181606973-.png) 首先点击“Select a model to load”选择一个LLM模型,然后点击“Select a Text Embedding model to load”选择一个Embedding模型。 ![](assets/image-20240513182203237-.png) 若电脑的GPU显存足以加载模型,建议GPU Offload调整到max以加速LLM的推理速度。最后,查看Server logs观察服务是否正常启动。 #### 四、后端安装与运行 若电脑没有conda环境可参考[Windows 安装 MiniConda](https://cxiaoyu.cn/archives/windows/1200.html) 。以下操作均假设电脑上存在conda环境。 1. 新建python环境`conda create -n rag python=3.11` 2. 切换到rag环境`conda activate rag` 3. 进入后端代码目录`cd 后端` 4. 安装依赖`pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple` 5. 由于nltk语料包的下载需要科学上网,若终端无法科学上网,请手动将位于附件中的nltk语料包下载到本地,并解压到`~/.conda/envs/rag/`下。如下图,若终端可以科学上网,可忽略此步。 ![](assets/image.png) 5. 启动后端`python main.py` #### 五、前端安装与运行 若电脑没有node环境可参考[Node.js安装详细教程](https://blog.csdn.net/weixin_51570574/article/details/137397087)安装Node。以下操作均假设电脑上存在node环境。 1. 进入前端代码目录`cd 前端` 2. 安装依赖`npm install` 3. 启动前端`npm run dev` 浏览器进入 http://localhost:5173 即可进入RAG系统。 ![](assets/image-20240513200353447-.png) ### 附件下载 [百度网盘](https://pan.baidu.com/s/1UPtxFjSC2GM2tplWEj0OMQ?pwd=ijhq)下载。