- 基础环境
/root/share/install_conda_env_internlm_base.sh InternLM
conda activate InternLMpython -m pip install --upgrade pip
pip install modelscope==1.9.5
pip install transformers==4.35.2
pip install streamlit==1.24.0
pip install sentencepiece==0.1.99
pip install accelerate==0.24.1- 下载模型
mkdir -p /root/data/model/Shanghai_AI_Laboratory
cp -r /root/share/temp/model_repos/internlm-chat-7b /root/data/model/Shanghai_AI_Laboratory/internlm-chat-7b- langchain相关环境配置
pip install langchain==0.0.292
pip install gradio==4.4.0
pip install chromadb==0.4.15
pip install sentence-transformers==2.2.2
pip install unstructured==0.10.30
pip install markdown==3.3.7- 开源词向量模型 Sentence Transformer
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
os.system('huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 --local-dir /root/data/model/sentence-transformer')
#python get_embedding_model.py- 下载 nltk 资源
cd /root
git clone https://gitee.com/yzy0612/nltk_data.git --branch gh-pages
cd nltk_data
mv packages/* ./
cd tokenizers
unzip punkt.zip
cd ../taggers
unzip averaged_perceptron_tagger.zip- 项目代码
cd /root/data
git clone https://github.com/InternLM/tutorial- 准备语料库
git clone https://gitee.com/open-compass/opencompass.git
git clone https://gitee.com/InternLM/lmdeploy.git
git clone https://gitee.com/InternLM/xtuner.git
git clone https://gitee.com/InternLM/InternLM-XComposer.git
git clone https://gitee.com/InternLM/lagent.git
git clone https://gitee.com/InternLM/InternLM.git- 创建数据库
-
查找名为 .md 或者 .txt 的文件;
-
使用 LangChain 提供的 FileLoader 对象来加载目标文件,得到由目标文件解析出的纯文本内容;
-
对文本进行分块,对文本块进行向量化;
-
文本向量化;
-
持久化;
使用字符串递归分割器,并选择分块大小为 500,块重叠长度为 150
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500, chunk_overlap=150)
split_docs = text_splitter.split_documents(docs)文本向量化
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(model_name="/root/data/model/sentence-transformer")加载和持久化
from langchain.vectorstores import Chroma
# 定义持久化路径
persist_directory = 'data_base/vector_db/chroma'
# 加载数据库
vectordb = Chroma.from_documents(
documents=split_docs,
embedding=embeddings,
persist_directory=persist_directory # 允许我们将persist_directory目录保存到磁盘上
)
# 将加载的向量数据库持久化到磁盘上
vectordb.persist()- InternLM 接入 LangChain
从 LangChain.llms.base.LLM 类继承一个子类,并重写构造函数与 _call 函数。
_call 函数是 LLM 类的核心函数,LangChain 会调用该函数来调用 LLM。
- 构建检索问答链
- 加载向量数据库
- 实例化自定义 LLM 与 Prompt Template
- 构建检索问答链
- 部署 Web Demo
- 封装返回构建的检索问答链对象的函数
- 定义一个类,该类负责加载并存储检索问答链,响应 Web 界面里调用检索问答链进行回答的动作
- 实例化一个 Web 界面
端口转发到本地。
ssh -o StrictHostKeyChecking=no -CNg -L 7860:127.0.0.1:7860 -p 34771 root@ssh.intern-ai.org.cn









