大半年的项目告一段落了,现在自己找找感兴趣的东西学习下,看看可不可以搞出个效果不错的local GPT,自研下大模型吧
RAG是什么?
检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。
https://github.com/chatchat-space/Langchain-Chatchat
搭建local GPT:https://github.com/PromtEngineer/localGPT
==》本地版的 GPT,可以下載 source code
学习视频:https://www.youtube.com/watch?v=MlyoObdIHyo
tips:需要-v-p-n-
环境设置
- 1、📥Clone code 先把库下来
git clone https://github.com/PromtEngineer/localGPT.git
- 2、🐍安装 conda:https://www.anaconda.com/download-success
conda create -n localGPT python=3.10.0
conda activate localGPT
- 3、🛠️安装pip依赖:
-要设置运行代码的环境,需要首先安装所有要求:
pip install -r requirements.txt
- 4、安装 LLAMA-CPP :
LocalGPT 使用 LlamaCpp-Python 进行 GGML(需要 llama-cpp-python <=0.1.76)和 GGUF(llama-cpp-python >=0.1.83)模型。
如果想将 BLAS 或 Metal 与 llama-cpp 一起使用,可以设置适当的标志:
苹果芯片用:
# Example: METAL
CMAKE_ARGS="-DLLAMA_METAL=on" FORCE_CMAKE=1 pip install llama-cpp-python==0.1.83 --no-cache-dir
NVIDIA芯片用:
# Example: cuBLAS
CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip install llama-cpp-python==0.1.83 --no-cache-dir
Docker
在 NVIDIA GPU 上安装 GPU 推理所需的软件包(例如 gcc 11 和 CUDA 11)可能会导致与系统中的其他软件包发生冲突。作为 Conda 的替代方案,您可以使用 Docker 和提供的 Dockerfile。它包括 CUDA,您的系统只需要 Docker、BuildKit、NVIDIA GPU 驱动程序和 NVIDIA 容器工具包。构建为 docker build -t localgpt .,需要 BuildKit。 Docker BuildKit 目前在 docker 构建期间不支持 GPU,仅在 docker 运行期间支持。作为 docker run -it --mount src="$HOME/.cache",target=/root/.cache,type=bind --gpus=all localgpt 运行。
测试数据集
摄取自己的数据
将文件放入 SOURCE_DOCUMENTS 文件夹中。在 SOURCE_DOCUMENTS 文件夹中放置多个文件夹,代码将递归读取文件。
支持的文件格式
LocalGPT 目前支持以下文件格式。 LocalGPT 使用 LangChain 来加载这些文件格式。 Constants.py 中的代码使用 DOCUMENT_MAP 字典将文件格式映射到相应的加载器。为了添加对其他文件格式的支持,只需添加该字典以及该文件格式和来自 LangChain 的相应加载器即可。
DOCUMENT_MAP = {
".txt": TextLoader,
".md": TextLoader,
".py": TextLoader,
".pdf": PDFMinerLoader,
".csv": CSVLoader,
".xls": UnstructuredExcelLoader,
".xlsx": UnstructuredExcelLoader,
".docx": Docx2txtLoader,
".doc": Docx2txtLoader,
}
摄取
运行以下命令来提取所有数据。
如果你的系统上有 cuda 设置
python ingest.py
将看到如下输出

使用设备类型参数来指定给定设备。在CPU上运行
python ingest.py --device_type cpu
在 M1/M2 上运行
python ingest.py --device_type mps
使用帮助获取受支持设备的完整列表
python ingest.py --help
这将创建一个名为 DB 的新文件夹,并将其用于新创建的矢量存储。您可以根据需要提取任意数量的文档,所有文档都将累积在本地嵌入数据库中。如果您想从空数据库开始,请删除数据库并重新摄取文档。
注意:当你第一次运行此程序时,它将需要互联网访问才能下载嵌入模型(默认值:Instructor Embedding)。在后续运行中,任何数据都不会离开你的本地环境,你可以在没有互联网连接的情况下提取数据。
在本地对你的文档提出问题
为了与你的文档聊天,请运行以下命令(默认情况下,它将在 cuda 上运行)。
python run_localGPT.py
还可以像 ingest.py 一样指定设备类型
python run_localGPT.py --device_type mps # to run on Apple silicon
这将加载摄取的向量存储和嵌入模型。你将看到一个提示:
> Enter a query:
输入问题后,按 Enter 键。 LocalGPT 将需要一些时间,具体取决于你的硬件。
生成答案后,你可以提出另一个问题,而无需重新运行脚本,只需再次等待提示即可
注意:当你第一次运行此程序时,它将需要互联网连接来下载 LLM(默认值:TheBloke/Llama-2-7b-Chat-GGUF)。之后,你可以关闭互联网连接,脚本推理仍然有效。任何数据都不会流出您的本地环境。
键入 exit 以完成脚本
344

被折叠的 条评论
为什么被折叠?



