从零实现本地大模型RAG部署

1. RAG概念

RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合信息检索与大型语言模型(大模型)的技术。从外部知识库(如文档、数据库或网页)中实时检索相关信息,并将其作为输入提供给 大模型,从而增强模型生成答案的能力,具体是指在大模型生成回答之前,先从知识库中查找相关的知识内容,增强信息生成过程中的知识库中的内容,从而提升生成的质量和准确性,这一过程分为三个阶段:

检索:使用向量数据库和近似最近邻(ANN)算法快速定位与查询相关的文本片段。
融合:将检索到的信息处理后与原始查询结合,形成扩展的上下文。
生成:大模型 基于融合后的上下文生成最终答案,减少“幻觉”现象。

2. RAGFlow 部署

RAGFlow是一个基于深度文档理解的开源RAG引擎。它为任何规模的企业提供了一个简化的RAG工作流程,结合LLM(大型语言模型)提供真实的问答功能,并得到各种复杂格式数据的充分引用。

2.1 源码加载

# 网盘地址: https://pan.baidu.com/s/1m0nUnq5po4zpnIWPvU_obw?pwd=zhen
git clone git@github.com:infiniflow/ragflow.git

在这里插入图片描述

2.2 修改配置版本

$ cd ragflow/docker
# 修改配置文件安装v0.17.2,默认是v0.17.2-slim
nano .env
RAGFlow 镜像标签镜像大小 (GB)具备嵌入模型是否稳定版
v0.17.2≈9✔️
v0.17.2-slim≈2
nightly≈9✔️
nightly-slim≈2

在这里插入图片描述

2.3 docker执行安装

cd 
# 仅使用CPU 执行任务:
# docker compose -f docker-compose.yml up -d
# 使用 GPU 加速:
docker compose -f docker-compose-gpu.yml up -d
  • v0.17.2-slim
    在这里插入图片描述
  • v0.17.2
    在这里插入图片描述

3. 运行效果

http://localhost:80

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

### 如何在本地环境中部署大型机器学习模型 #### 准备工作环境 为了成功地在本地部署大型机器学习模型,首先需要准备适当的工作环境。这包括安装必要的软件包以及配置硬件设施来支持模型运算的需求[^1]。 对于大多数情况而言,推荐采用虚拟环境管理工具如`conda`创建独立的Python环境,并利用pip或其他方式安装所需的依赖项: ```bash conda create -n llm_env python=3.9 conda activate llm_env pip install torch transformers datasets evaluate accelerate ``` 上述命令会建立一个新的名为llm_env的Conda环境并激活它;接着安装PyTorch框架及其配套组件Transformers库——这是处理自然语言处理任务所必需的基础构件之一。 #### 获取预训练模型 接下来是从Hugging Face Model Hub下载预先训练好的大规模语言模型(LLMs),例如BERT、GPT系列等。这类现成可用的大规模参数量级的语言模型能够显著减少自行训练所需的时间成本和技术难度。 可以借助transformers库中的AutoModel类轻松加载指定名称下的远程仓库内保存的最佳版本权重文件: ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained('distilbert-base-uncased-finetuned-sst-2-english') model = AutoModelForSequenceClassification.from_pretrained('distilbert-base-uncased-finetuned-sst-2-english') ``` 这段代码片段展示了怎样实例化一个DistilBert架构下微调过的二元情感分析器对象。 #### 设置推理服务接口 完成以上准备工作之后,则需考虑如何让外部应用程序访问这个已经加载完毕待命执行推断操作的服务端点。一种常见做法就是编写RESTful API服务器程序,允许客户端发送HTTP请求传递输入文本字符串给后端处理器解析响应结果返回JSON格式的数据结构体。 Flask web framework非常适合用来快速搭建这样的轻量级Web应用层面上的应用案例研究[^4]: ```python from flask import Flask, request, jsonify import torch app = Flask(__name__) @app.route('/predict', methods=['POST']) def predict(): input_text = request.json.get('text') inputs = tokenizer(input_text, return_tensors="pt") with torch.no_grad(): outputs = model(**inputs) prediction = int(torch.argmax(outputs.logits)) response = {'prediction': 'positive' if prediction==1 else 'negative'} return jsonify(response) if __name__ == '__main__': app.run(host='0.0.0.0', port=8080) ``` 此段脚本定义了一个简单的API路由/predict接受POST方法提交过来的内容主体里携带的消息体中提取出键为"text"对应的值作为下一步骤传入到先前初始化成功的Transformer pipeline内部去评估其极性倾向度得分最后封装好答案反馈回去结束整个交互流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

具身小站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值