【RAG】内部外挂知识库搭建-本地GPT

大半年的项目告一段落了,现在自己找找感兴趣的东西学习下,看看可不可以搞出个效果不错的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

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 以完成脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lotay_天天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值