从零用Langchain RAG部署 自己的GLM4大模型

我的配置(linux)

ed2f47e6e2fa447e8c1e8f8fbc49a49a.png

 这里是在阿里云的DSW交互式建模的示例。

下载anaconda

apt-get update
apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
wget https://mirrors.ustc.edu.cn/anaconda/archive/Anaconda3-2024.06-1-Linux-x86_64.sh
bash Anaconda3-2024.02-1-Linux-x86_64.sh

随后是一群协议,一直按enter键就好了

然后让输入yes/no

输yes

后面的直接enter

source ~/.bashrc

然后重启terminal 

5a99fce3e0de438dac523a57de17cd91.png

配置anaconda镜像

查看当前库

conda config --show channels

 删除原库

conda config --remove channels defaults

 配置清华镜像库

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

创建新的conda虚拟环境命令(后面有创建这里就看)

conda create -n <虚拟环境名称> python=<py大版本,如3.10或3.9>

这里要输入y

conda activate <虚拟环境名称>

 看一下新的python环境里的包

pip list

Lanchain-Chatchat依赖配置

Git clone https://github.com/chatchat-space/Langchain-Chatchat

 Langchain-chatchat0.3版本功能:

9b016cd2c31a473e8aed6305847309d1.png

创建conda虚拟环境

 不用anaconda环境的要先具备python环境

python -m venv <虚拟环境名称>

这时会生成一个文件夹,文件夹名称就是<虚拟环境名称>,这里假设<虚拟环境名称>为venv

./venv/bin/activate

若没权限就

source ./venv/bin/activate

 测试

pip list

接下来就是创两个虚拟环境(Langchain环境、Xinference环境)

后面就大差不差了。

注意建两个环境,并且要在两个命令行启动

Langchain环境

conda create -n langchain python=3.10
conda activate langchain

pip install langchain-chatchat -U


Xinference环境

conda activate xinference
conda activate xinference
pip install "xinference[all]"

启动xinference

xinference-local --host 0.0.0.0 --port 9997

c9244eb128bd4472a647f5f5916d9b2e.png

注意ctrl+左键点击http://0.0.0.0:9997

Xinference使用

启动GLM4

进入http://0.0.0.0:9997页面

baea9972243d439489c002b6611156f4.png

a21368d21af6423599efbbe13987ba7a.png

这是在xinference终端看到

a57ab8808a9146dc86c7d07fa4a8887d.png

就表示部署成功了。(如果这里不显示,终端显示一致,就刷新就好了,虽说他说不要刷新)

d75cb63b06d84cab96473ac7cc1499ab.png

 启动bge-large-zh-v1.519e270a97abe4eb7a0ac4e7c3e181af6.png

 9e5f9c990955485e8c94e551630fb73b.png

这是看到终端有以下显示就部署成功了

f9189a96fa6c40aa888eef6921c08b3b.png

xinference是这么显示的

8045aabe31ef48a681e8a466e5434248.png

测试GLM4

e2d4a5fa2c1d428a8f9305953f135d9b.png

点击后跳转页面。

db4885f2571940e383746fa6e7b6edcf.png

上面都没错误就成功了,接下来配置Langchain-chatchat的环境配置

langchain-Chatchat环境配置

注意先启动xinference和模型。

切换到Langchain环境

chatchat init

修改model settings.yaml文件

154ccf6cc85747b291703ac0c071ad2b.png

chatchat kb -r

 显示如下就没问题了。

21524232343f43dfbfdce93056d36ad4.png

chatchat start -a

a34835405c02438c95ad51bd851ed63b.png 点开http://0.0.0.0:8501,最好ctrl 并点一下,没报错就好了。

d362d18de283472dbb053fe9b9fefe49.png

启动后直接点击RAG对话进行提问就行了。

559438ca637c4a788d10a3141611d757.png

使用Langchain的API Server工具以备后续其他程序调用这里是python调用

测试API Server

进入http://0.0.0.0:7861,最好ctrl 并点一下

e73eea2fe36c40c297cdeee14763dd81.png

点击post方法的与知识库对话

beb1670ec51b4fe2adc0789e0119eae6.png

然后点击execute执行就是测试了。

运用API Server 这里用python

api.py 文件(注意只取api.py文件)

git clone https://github.com/yangtengze/Langchain-RAG-GLM4.git

 (小插曲)这是文件内容,也感谢大家访问我的GitHub: https://github.com/yangtengze

Langchain-RAG-GLM4/api.py at master · yangtengze/Langchain-RAG-GLM4 (github.com)icon-default.png?t=O83Ahttps://github.com/yangtengze/Langchain-RAG-GLM4/blob/master/api.py

 在Langchain环境下运行api.py 就可以用了。

streamlit run api.py

当然也可以其他方式调用。(如js、等等,这里是示例而已,后续也会更新)

这里再展示下效果:

1128d7c914e94151be65ec4010f26b41.png

文章到这里基本上就结束了,有什么bug也欢迎各位大佬的指正,过程有问题的小伙伴可以在评论区提出问题。或者加上qq:2059127573跟我本人交谈。

### LangChain RAG 实现与使用 LangChain RAG是一种利用检索增强生成技术的方法,在处理自然语言理解和生成任务时表现出色。通过集成外部知识库,可以显著提高大型语言模型(LLM)的回答准确性。 #### 构建流程 为了实现这一功能,通常会采用如下方式: 1. **数据准备** 需要预先准备好用于检索的知识文档集合。这些文档会被索引以便快速查找相关内容[^1]。 2. **查询解析** 用户输入的问题经过初步处理后被转换成适合搜索引擎理解的形式。这一步骤对于获取高质量的结果至关重要[^2]。 3. **相似度匹配** 使用向量数据库或其他高效算法计算待解决问题同已有资料间的相似程度,从而挑选最有可能包含正确答案的部分作为上下文传递给LLM。 4. **响应合成** 将找到的相关片段连同原始提问一起送入预训练的语言模型中,让其基于额外的信息构建更加精确且有依据的回复。 以下是Python代码示例展示了如何创建简单的RAG应用: ```python from langchain import Rag, OpenAIEmbeddings, ChromaDB # 初始化组件 embeddings = OpenAIEmbeddings() db = ChromaDB(embedding_function=embeddings) rag = Rag( question_encoder="distilbert-base-cased-distilled-squad", retriever=db.as_retriever(), generator="gpt-3.5-turbo" ) def get_answer(question): docs = rag.retrieve(question) answer = rag.generate({"question": question, "context": "\n".join([doc.page_content for doc in docs])}) return answer['answer'] print(get_answer("什么是RAG?")) ``` 此脚本定义了一个`get_answer()`函数,该函数接收一个问题字符串并返回由RAG框架产生的解答。这里采用了Chroma DB作为存储介质,并选择了OpenAI提供的嵌入式服务来进行文本编码;而实际的内容生产则依赖于GPT系列之一版本完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值