基于Llama2和LangChain构建本地化定制化知识库AI聊天机器人

参考:

本项目 https://github.com/PromtEngineer/localGPT

模型 https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML

云端知识库项目:基于GPT-4和LangChain构建云端定制化PDF知识库AI聊天机器人_Entropy-Go的博客-CSDN博客 

1. 摘要

        相比OpenAI的LLM ChatGPT模型必须网络连接并通过API key云端调用模型,担心数据隐私安全。基于Llama2和LangChain构建本地化定制化知识库AI聊天机器人,是将训练好的LLM大语言模型本地化部署,在没有网络连接的情况下对你的文件提问。100%私有化本地化部署,任何时候都不会有数据离开您的运行环境。你可以在没有网络连接的情况下获取文件和提问!        

        介绍一款尖端应用,使用户能够在没有互联网连接的情况下利用语言模型的功能。这款先进工具作为一个不可或缺的资源,帮助用户在超越传统语言模型工具(如ChatGPT)的限制之外获取信息。

        这个应用的一个关键优势在于数据控制的保留。当处理需要保持在组织内部或具有最高机密性的个人文件时,这个功能尤为重要,消除了通过第三方渠道传输信息的需求。

        将个人文件无缝集成到系统中非常简单,确保用户体验流畅。无论是文本、PDF、CSV还是Excel文件,用户都可以方便地提供所需查询的信息。该应用程序快速处理这些文档,有效地创建了一个全面的数据库供模型利用,实现准确而深入的回答。

        Ein wesentlicher Vorteil dieses Ansatzes ist die effiziente Ressourcennutzung. Im Gegensatz zum ressourcenintensiven Umschulungsprozess in alternativen Ansätzen erfordert die Dokumentenaufnahme in dieser Anwendung weniger Rechenressourcen. Diese Effizienzoptimierung ermöglicht ein optimiertes Benutzererlebnis und spart Zeit und Rechenressourcen.

        Erleben Sie die beispiellose Leistungsfähigkeit dieses technologischen Wunderwerks, das es Benutzern ermöglicht, das volle Potenzial von Sprachmodellen offline auszuschöpfen. Betreten Sie eine neue Ära des Informationszugriffs, steigern Sie die Produktivität und erweitern Sie die Möglichkeiten. Nutzen Sie dieses leistungsstarke Tool und erschließen Sie das wahre Potenzial Ihrer Daten.

2. Vorbereitung

2.1 Metas Lama 2 7b Chat GGML

Bei diesen Dateien handelt es sich um Modelldateien im GGML-Format für  Metas Llama 2 7b Chat .

GGML-Dateien dienen der CPU- und GPU-Inferenz mithilfe von  llama.cpp  und Bibliotheken und Benutzeroberflächen, die dieses Format unterstützen

2.2 Conda installieren

Schnellinstallationspaketverwaltungstool Conda im Blog-CSDN-Blog von CentOS_Entropy-Go

2.3 gcc aktualisieren

CentOS gcc-Einführung und schnelles Upgrade_Entropy-Gos Blog-CSDN-Blog

3. Klonen Sie das Projekt localGPT oder laden Sie es herunter

git clone https://github.com/PromtEngineer/localGPT.git

4. Installieren Sie Abhängigkeitspakete

4.1 Conda-Installation und Aktivierung

conda create -n localGPT
conda activate localGPT

4.2 Abhängigkeitspakete installieren

Wenn die Conda-Umgebungsvariablen normal eingestellt sind, führen Sie die Pip-Installation direkt durch

pip install -r requirements.txt

Andernfalls wird das mit dem System gelieferte Python verwendet. Sie können zum Ausführen den absoluten Pfad der Conda-Installation verwenden. Sie müssen in Zukunft Condas Python verwenden.

whereis conda
conda: /root/miniconda3/bin/conda /root/miniconda3/condabin/conda
/root/miniconda3/bin/pip install -r requirements.txt

Wenn während der Installation die folgenden Probleme auftreten, lesen Sie bitte das Upgrade auf 2.3 gcc. Es wird empfohlen, auf gcc 11 zu aktualisieren

ERROR: Could not build wheels for llama-cpp-python, hnswlib, lxml, which is required to install pyproject.toml-based project

安装python依赖包过程

/root/miniconda3/bin/pip install -r requirements.txt
Ignoring protobuf: markers 'sys_platform == "darwin" and platform_machine != "arm64"' don't match your environment
Ignoring protobuf: markers 'sys_platform == "darwin" and platform_machine == "arm64"' don't match your environment
Ignoring bitsandbytes-windows: markers 'sys_platform == "win32"' don't match your environment
Requirement already satisfied: langchain==0.0.191 in /root/miniconda3/lib/python3.11/site-packages (from -r requirements.txt (line 2)) (0.0.191)
Requirement already satisfied: chromadb==0.3.22 in /root/miniconda3/lib/python3.11/site-packages (from -r requirements.txt (line 3)) (0.3.22)
Requirement already satisfied: llama-cpp-python==0.1.66 in /root/miniconda3/lib/python3.11/site-packages (from -r requirements.txt (line 4)) (0.1.66)
Requirement already satisfied: pdfminer.six==20221105 in /root/miniconda3/lib/python3.11/site-packages (from -r requirements.txt (line 5)) (20221105)
Requirement already satisfied: InstructorEmbedding in /root/miniconda3/lib/python3.11/site-packages (from -r requirements.txt (line 6)) (1.0.1)
Requirement already satisfied: sentence-transformers in /root/miniconda3/lib/python3.11/site-packages (from -r requirements.txt (line 7)) (2.2.2)
Requirement already satisfied: faiss-cpu in /root/miniconda3/lib/python3.11/site-packages (from -r requirements.txt (line 8)) (1.7.4)
Anforderung bereits erfüllt: Huggingface_hub in /root/miniconda3/lib/python3.11/site-packages (von -r Anforderungen.txt (Zeile 9)) (0.16.4)
Anforderung bereits erfüllt: Transformatoren in /root/miniconda3/lib/ python3.11/site-packages (von -r require.txt (Zeile 10)) (4.31.0)
Anforderung bereits erfüllt: protobuf==3.20.0 in /root/miniconda3/lib/python3.11/site-packages ( aus -r Anforderungen.txt (Zeile 11)) (3.20.0)
Anforderung bereits erfüllt: auto-gptq==0.2.2 in /root/miniconda3/lib/python3.11/site-packages (aus -r Anforderungen.txt (Zeile 14)) (0.2.2)
Anforderung bereits erfüllt: docx2txt in /root/miniconda3/lib/python3.11/site-packages (von -r Anforderungen.txt (Zeile 15)) (0.8)
Anforderung bereits erfüllt: unstrukturiert in /root/miniconda3/lib/python3.11/site-packages (aus -r require.txt (Zeile 16)) (0.10.2)
Anforderung bereits erfüllt: urllib3==1.26.6 in /root /miniconda3/lib/python3.11/site-packages (von -r Anforderungen.txt (Zeile 19)) (1.26.6)
Anforderung bereits erfüllt: Beschleunigung in /root/miniconda3/lib/python3.11/site-packages ( aus -r Anforderungen.txt (Zeile 20)) (0.21.0)
Anforderung bereits erfüllt: Bitsandbytes in /root/miniconda3/lib/python3.11/site-packages (aus -r Anforderungen.txt (Zeile 21)) (0.41 .1)
Anforderung bereits erfüllt: Klicken Sie in /root/miniconda3/lib/python3.11/site-packages (aus -r require.txt (Zeile 23)) (8.1.7)
Anforderung bereits erfüllt: flask in /root/miniconda3/lib/python3.11/site-packages (von -r require.txt (Zeile 24)) (2.3.2)
Anforderung bereits erfüllt: Anforderungen in /root/miniconda3/lib/ python3.11/site-packages (von -r Anforderungen.txt (Zeile 25)) (2.31.0)
Anforderung bereits erfüllt: Streamlit in /root/miniconda3/lib/python3.11/site-packages (von -r Anforderungen. txt (Zeile 28)) (1.25.0)
Anforderung bereits erfüllt: Streamlit-extras in /root/miniconda3/lib/python3.11/site-packages (von -r Anforderungen.txt (Zeile 29)) (0.3.0)
Anforderung bereits erfüllt: openpyxl in /root/miniconda3/lib/python3.11/site-packages (aus -r require.txt (Zeile 32)) (3.1.2)
Anforderung bereits erfüllt: PyYAML>=5.4.1 in /root/miniconda3/lib/python3.11/site-packages (von langchain==0.0.191->-r Anforderungen.txt (Zeile 2)) (6.0.1)
Anforderung bereits erfüllt: SQLAlchemy<3,>=1.4 in /root/miniconda3/lib/python3.11/site-packages (from langchain==0.0.191->-r require.txt (Zeile 2)) (2.0.20 )
Anforderung bereits erfüllt: aiohttp<4.0.0,>=3.8.3 in /root/miniconda3/lib/python3.11/site-packages (von langchain==0.0.191->-r require.txt (Zeile 2) ) (3.8.5)
Anforderung bereits erfüllt: dataclasses-json<0.6.0,>=0.5.7 in /root/miniconda3/lib/python3.11/site-packages (von langchain==0.0.191->-r Anforderungen.txt (Zeile 2)) (0.5.14)
Requirement already satisfied: numexpr<3.0.0,>=2.8.4 in /root/miniconda3/lib/python3.11/site-packages (from langchain==0.0.191->-r requirements.txt (line 2)) (2.8.5)
Requirement already satisfied: numpy<2,>=1 in /root/miniconda3/lib/python3.11/site-packages (from langchain==0.0.191->-r requirements.txt (line 2)) (1.25.2)
Requirement already satisfied: openapi-schema-pydantic<2.0,>=1.2 in /root/miniconda3/lib/python3.11/site-packages (from langchain==0.0.191->-r requirements.txt (line 2)) (1.2.4)
Requirement already satisfied: pydantic<2,>=1 in /root/miniconda3/lib/python3.11/site-packages (from langchain==0.0.191->-r requirements.txt (line 2)) (1.10.12)
Anforderung bereits erfüllt: tenacity<9.0.0,>=8.1.0 in /root/miniconda3/lib/python3.11/site-packages (aus langchain==0.0.191->-r require.txt (Zeile 2)) (8.2.3)
Anforderung bereits erfüllt: pandas>=1.3 in /root/miniconda3/lib/python3.11/site-packages (von chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (2.0 .3)
Anforderung bereits erfüllt: hnswlib>=0.7 in /root/miniconda3/lib/python3.11/site-packages (aus chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (0.7.0 )
Anforderung bereits erfüllt: clickhouse-connect>=0.5.7 in /root/miniconda3/lib/python3.11/site-packages (aus chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (0.6 .8)
Anforderung bereits erfüllt: duckdb>=0.7.1 in /root/miniconda3/lib/python3.11/site-packages (aus chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (0.8.1)
Anforderung bereits erfüllt: fastapi>=0.85.1 in /root/miniconda3/lib/python3.11/site-packages (aus chromadb==0.3.22->-r require.txt (Zeile 3)) (0.101.1)
Anforderung bereits erfüllt: uvicorn[standard]>=0.18.3 in /root/miniconda3/lib/python3.11/site-packages (aus chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (0.23 .2)
Anforderung bereits erfüllt: posthog>=2.4.0 in /root/miniconda3/lib/python3.11/site-packages (aus chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (3.0 .2)
Anforderung bereits erfüllt: typing-extensions>=4.5.0 in /root/miniconda3/lib/python3.11/site-packages (von chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (4.7. 1)
Anforderung bereits erfüllt: diskcache>=5.6.1 in /root/miniconda3/lib/python3.11/site-packages (aus llama-cpp-python==0.1.66->-r require.txt (Zeile 4) ) (5.6.1)
Anforderung bereits erfüllt: charset-normalizer>=2.0.0 in /root/miniconda3/lib/python3.11/site-packages (von pdfminer.six==20221105->-r Anforderungen.txt (Zeile 5)) (2.0.4)
Anforderung bereits erfüllt: cryptography>=36.0.0 in /root/miniconda3/lib/python3.11/site-packages (von pdfminer.six==20221105->-r Anforderungen.txt (Zeile 5)) (39.0.1)
Anforderung bereits erfüllt: Datensätze in /root/miniconda3/lib/python3.11/site-packages (aus auto-gptq==0.2.2->-r require.txt (Zeile 14)) (2.14.4)
Anforderung bereits erfüllt : Rouge in /root/miniconda3/lib/python3.11/site-packages (aus auto-gptq==0.2.2->-r require.txt (Zeile 14)) (1.0.1)
Anforderung bereits erfüllt: Torch> =1.13.0 in /root/miniconda3/lib/python3.11/site-packages (aus auto-gptq==0.2.2->-r require.txt (Zeile 14)) (2.0.1)
Anforderung bereits erfüllt: Safetensoren in /root/miniconda3/lib/python3.11/site-packages (aus auto-gptq==0.2.2->-r require.txt (Zeile 14)) (0.3.2)
Anforderung bereits erfüllt: tqdm in / root/miniconda3/lib/python3.11/site-packages (aus Satz-Transformers->-r Anforderungen.txt (Zeile 7)) (4.65.0)
Requirement already satisfied: torchvision in /root/miniconda3/lib/python3.11/site-packages (from sentence-transformers->-r requirements.txt (line 7)) (0.15.2)
Requirement already satisfied: scikit-learn in /root/miniconda3/lib/python3.11/site-packages (from sentence-transformers->-r requirements.txt (line 7)) (1.3.0)
Requirement already satisfied: scipy in /root/miniconda3/lib/python3.11/site-packages (from sentence-transformers->-r requirements.txt (line 7)) (1.11.2)
Requirement already satisfied: nltk in /root/miniconda3/lib/python3.11/site-packages (from sentence-transformers->-r requirements.txt (line 7)) (3.8.1)
Requirement already satisfied: sentencepiece in /root/miniconda3/lib/python3.11/site-packages (from sentence-transformers->-r requirements.txt (line 7)) (0.1.99)
Anforderung bereits erfüllt: Dateisperre in /root/miniconda3/lib/python3.11/site-packages (aus Huggingface_hub->-r Anforderungen.txt (Zeile 9)) (3.12.2)
Anforderung bereits erfüllt: fsspec in /root/miniconda3 /lib/python3.11/site-packages (aus Huggingface_hub->-r Anforderungen.txt (Zeile 9)) (2023.6.0)
Anforderung bereits erfüllt: Verpackung>=20.9 in /root/miniconda3/lib/python3.11/ site-packages (aus Huggingface_hub->-r Anforderungen.txt (Zeile 9)) (23.0)
Anforderung bereits erfüllt: regex!=2019.12.17 in /root/miniconda3/lib/python3.11/site-packages (aus Transformers- >-r Anforderungen.txt (Zeile 10)) (2023.8.8)
Anforderung bereits erfüllt: tokenizers!=0.11.3,<0.14,>=0.11.1 in /root/miniconda3/lib/python3.11/site-packages (von Transformers->-r Anforderungen.txt (Zeile 10)) (0.13.3)
Anforderung bereits erfüllt: chardet in /root/miniconda3/lib/python3.11/site-packages (aus unstructured->-r require.txt (Zeile 16)) (5.2.0)
Anforderung bereits erfüllt: Dateityp in /root/miniconda3 /lib/python3.11/site-packages (aus unstructured->-r require.txt (Zeile 16)) (1.2.0)
Anforderung bereits erfüllt: python-magic in /root/miniconda3/lib/python3.11/site -packages (aus unstructured->-r Anforderungen.txt (Zeile 16)) (0.4.27)
Anforderung bereits erfüllt: lxml in /root/miniconda3/lib/python3.11/site-packages (aus unstrukturierten->-r Anforderungen .txt (Zeile 16)) (4.9.3)
Anforderung bereits erfüllt: Tabulieren in /root/miniconda3/lib/python3.11/site-packages (aus unstructured->-r require.txt (Zeile 16)) (0.9. 0)
Requirement already satisfied: beautifulsoup4 in /root/miniconda3/lib/python3.11/site-packages (from unstructured->-r requirements.txt (line 16)) (4.12.2)
Requirement already satisfied: emoji in /root/miniconda3/lib/python3.11/site-packages (from unstructured->-r requirements.txt (line 16)) (2.8.0)
Requirement already satisfied: psutil in /root/miniconda3/lib/python3.11/site-packages (from accelerate->-r requirements.txt (line 20)) (5.9.5)
Requirement already satisfied: Werkzeug>=2.3.3 in /root/miniconda3/lib/python3.11/site-packages (from flask->-r requirements.txt (line 24)) (2.3.7)
Requirement already satisfied: Jinja2>=3.1.2 in /root/miniconda3/lib/python3.11/site-packages (from flask->-r requirements.txt (line 24)) (3.1.2)
Anforderung bereits erfüllt: itsdangerous>=2.1.2 in /root/miniconda3/lib/python3.11/site-packages (aus flask->-r Anforderungen.txt (Zeile 24)) (2.1.2)
Anforderung bereits erfüllt: Blinker >=1.6.2 in /root/miniconda3/lib/python3.11/site-packages (aus flask->-r require.txt (Zeile 24)) (1.6.2)
Anforderung bereits erfüllt: idna<4,>= 2.5 in /root/miniconda3/lib/python3.11/site-packages (aus request->-r require.txt (Zeile 25)) (3.4)
Anforderung bereits erfüllt: certifi>=2017.4.17 in /root/miniconda3/ lib/python3.11/site-packages (aus request->-r require.txt (Zeile 25)) (2023.7.22)
Anforderung bereits erfüllt: altair<6,>=4.0 in /root/miniconda3/lib/python3. 11/site-packages (aus streamlit->-r require.txt (Zeile 28)) (5.0.1)
Anforderung bereits erfüllt: Cachetools<6,>=4.0 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r Anforderungen.txt (Zeile 28)) (5.3.1)
Anforderung bereits erfüllt: importlib-metadata<7,>=1.4 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r require.txt (Zeile 28)) (6.8.0)
Anforderung bereits erfüllt: Pillow< 10,>=7.1.0 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r require.txt (Zeile 28)) (9.5.0)
Anforderung bereits erfüllt: pyarrow>=6.0 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r require.txt (Zeile 28)) (12.0.1)
Anforderung bereits erfüllt: pympler<2,>=0.9 in /root/ miniconda3/lib/python3.11/site-packages (aus streamlit->-r-Anforderungen.txt (Zeile 28)) (1.0.1)
Anforderung bereits erfüllt: python-dateutil<3,>=2.7.3 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r require.txt (Zeile 28)) (2.8.2)
Anforderung bereits erfüllt: rich<14,>=10.14.0 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r require.txt (Zeile 28)) (13.5.2)
Anforderung bereits erfüllt erfüllt: toml<2,>=0.10.1 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r require.txt (Zeile 28)) (0.10.2)
Anforderung bereits erfüllt: tzlocal<5,>=1.1 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r require.txt (Zeile 28)) (4.3.1)
Anforderung bereits erfüllt: validators<1, >=0,2 in /root/miniconda3/lib/python3.11/site-packages (aus streamlit->-r-Anforderungen.txt (Zeile 28)) (0.21.2)
Requirement already satisfied: gitpython!=3.1.19,<4,>=3.0.7 in /root/miniconda3/lib/python3.11/site-packages (from streamlit->-r requirements.txt (line 28)) (3.1.32)
Requirement already satisfied: pydeck<1,>=0.8 in /root/miniconda3/lib/python3.11/site-packages (from streamlit->-r requirements.txt (line 28)) (0.8.0)
Requirement already satisfied: tornado<7,>=6.0.3 in /root/miniconda3/lib/python3.11/site-packages (from streamlit->-r requirements.txt (line 28)) (6.3.3)
Requirement already satisfied: watchdog>=2.1.5 in /root/miniconda3/lib/python3.11/site-packages (from streamlit->-r requirements.txt (line 28)) (3.0.0)
Requirement already satisfied: htbuilder==0.6.1 in /root/miniconda3/lib/python3.11/site-packages (from Streamlit-extras->-r requirements.txt (line 29)) (0.6.1)
Anforderung bereits erfüllt: markdownlit>=0.0.5 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r Anforderungen.txt (Zeile 29)) (0.0.7)
Anforderung bereits erfüllt : st-annotated-text>=3.0.0 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r require.txt (Zeile 29)) (4.0.0)
Anforderung bereits zufrieden: streamlit-camera-input-live>=0.2.0 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r require.txt (Zeile 29)) (0.2.0 )
Anforderung bereits erfüllt: streamlit-card>=0.0.4 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r require.txt (Zeile 29)) (0.0.61)
Anforderung bereits erfüllt: streamlit-embedcode>=0.1.2 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r Anforderungen.txt (Zeile 29)) (0.1.2)
Anforderung bereits erfüllt: streamlit-faker>=0.0.2 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r require.txt (Zeile 29)) (0.0.2)
Anforderung bereits erfüllt: streamlit-image-coordinates<0.2.0,>=0.1.1 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r require.txt (Zeile 29)) ( 0.1.6)
Anforderung bereits erfüllt: streamlit-keyup>=0.1.9 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r Anforderungen.txt (Zeile 29)) (0.2 .0)
Anforderung bereits erfüllt: streamlit-toggle-switch>=1.0.2 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r require.txt (Zeile 29)) (1.0.2 )
Anforderung bereits erfüllt: streamlit-vertical-slider>=1.0.2 in /root/miniconda3/lib/python3.11/site-packages (aus Streamlit-extras->-r require.txt (Zeile 29)) (1.0. 2)
Anforderung bereits erfüllt: more-itertools in /root/miniconda3/lib/python3.11/site-packages (aus htbuilder==0.6.1->Streamlit-extras->-r Anforderungen.txt (Zeile 29)) ( 10.1.0)
Anforderung bereits erfüllt: et-xmlfile in /root/miniconda3/lib/python3.11/site-packages (aus openpyxl->-r require.txt (Zeile 32)) (1.1.0)
Anforderung bereits erfüllt: attrs>=17.3.0 in /root/miniconda3/lib/python3.11/site-packages (von aiohttp<4.0.0,>=3.8.3->langchain==0.0.191->-r Anforderungen.txt (Zeile 2)) (23.1.0)
Anforderung bereits erfüllt: multidict<7.0,>=4.5 in /root/miniconda3/lib/python3.11/site-packages (von aiohttp<4.0.0,>=3.8 .3->langchain==0.0.191->-r Anforderungen.txt (Zeile 2)) (6.0.4)
Anforderung bereits erfüllt: async-timeout<5.0,>=4.0.0a3 in /root/miniconda3/lib/ python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain==0.0.191->-r require.txt (Zeile 2)) (4.0.3) Anforderung
bereits erfüllt: yarl <2.0,>=1.0 in /root/miniconda3/lib/python3.11/site-packages (von aiohttp<4.0.0,>=3.8.3->langchain==0.0.191->-r require.txt ( Zeile 2)) (1.9.2)
Anforderung bereits erfüllt: Frozenlist>=1.1.1 in /root/miniconda3/lib/python3.11/site-packages (von aiohttp<4.0.0,>=3.8.3->langchain==0.0.191->-r Anforderungen.txt (Zeile 2)) (1.4.0)
Anforderung bereits erfüllt: aiosignal>=1.1.2 in /root/miniconda3/lib/python3.11/site-packages (von aiohttp<4.0.0,>=3.8. 3->langchain==0.0.191->-r Anforderungen.txt (Zeile 2)) (1.3.1)
Anforderung bereits erfüllt: jsonschema>=3.0 in /root/miniconda3/lib/python3.11/site-packages ( von altair<6,>=4.0->streamlit->-r require.txt (Zeile 28)) (4.19.0)
Anforderung bereits erfüllt: toolz in /root/miniconda3/lib/python3.11/site-packages (von altair<6,>=4.0->streamlit->-r require.txt (Zeile 28)) (0.12.0)
Anforderung bereits erfüllt: pytz in /root/miniconda3/lib/python3.11/site-packages (aus clickhouse-connect>=0.5.7->chromadb==0.3.22->-r require.txt (Zeile 3)) (2023.3)
Anforderung bereits erfüllt: zstandard in /root/miniconda3/lib/python3.11/site-packages (von clickhouse-connect>=0.5.7->chromadb==0.3.22->-r require.txt (Zeile 3)) (0.19.0)
Anforderung bereits erfüllt: lz4 in /root/miniconda3/lib/python3.11/site-packages (von clickhouse-connect>=0.5.7->chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (4.3.2)
Anforderung bereits erfüllt: cffi>=1.12 in /root/miniconda3/lib/python3.11/site-packages (von cryptography>=36.0.0->pdfminer.six= =20221105->-r Anforderungen.txt (Zeile 5)) (1.15.1)
Anforderung bereits erfüllt: Marshmallow<4.0.0,>=3.18.0 in /root/miniconda3/lib/python3.11/site-packages (von dataclasses-json<0.6.0,>=0.5.7->langchain== 0.0.191->-r Anforderungen.txt (Zeile 2)) (3.20.1)
Anforderung bereits erfüllt: typing-inspect<1,>=0.4.0 in /root/miniconda3/lib/python3.11/site-packages (aus dataclasses-json<0.6.0,>=0.5.7->langchain==0.0.191->-r require.txt (Zeile 2)) (0.9.0)
Anforderung bereits erfüllt: starlette<0.28.0, >=0.27.0 in /root/miniconda3/lib/python3.11/site-packages (von fastapi>=0.85.1->chromadb==0.3.22->-r require.txt (Zeile 3)) (0.27 .0)
Anforderung bereits erfüllt: gitdb<5,>=4.0.1 in /root/miniconda3/lib/python3.11/site-packages (von gitpython!=3.1.19,<4,>=3.0.7-> streamlit->-r Anforderungen.txt (Zeile 28)) (4.0.10)
Anforderung bereits erfüllt: zipp>=0.5 in /root/miniconda3/lib/python3.11/site-packages (aus importlib-metadata<7,>=1.4->streamlit->-r require.txt (Zeile 28)) ( 3.16.2)
Anforderung bereits erfüllt: MarkupSafe>=2.0 in /root/miniconda3/lib/python3.11/site-packages (aus Jinja2>=3.1.2->flask->-r require.txt (Zeile 24)) (2.1.3)
Anforderung bereits erfüllt: Markdown in /root/miniconda3/lib/python3.11/site-packages (von markdownlit>=0.0.5->Streamlit-extras->-r require.txt (Zeile 29)) (3.4.4)
Anforderung bereits erfüllt: Favicon in /root/miniconda3/lib/python3.11/site-packages (aus markdownlit>=0.0.5->Streamlit-extras->-r require.txt (Zeile 29)) (0.7.0)
Anforderung bereits erfüllt: pymdown-extensions in /root/miniconda3/lib/python3.11/site-packages (von markdownlit>=0.0.5->Streamlit-extras->-r require.txt (Zeile 29)) (10.1)
Anforderung bereits erfüllt: tzdata>=2022.1 in /root/miniconda3/lib/python3.11/site-packages (aus pandas>=1.3->chromadb==0.3.22->-r require.txt (Zeile 3)) ( 2023.3)
Anforderung bereits erfüllt: six>=1.5 in /root/miniconda3/lib/python3.11/site-packages (von posthog>=2.4.0->chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (1.16.0)
Anforderung bereits erfüllt: monotonic>=1.5 in /root/miniconda3/lib/python3.11/site-packages (von posthog>=2.4.0->chromadb==0.3.22->- r Anforderungen.txt (Zeile 3)) (1.6)
Anforderung bereits erfüllt: backoff>=1.10.0 in /root/miniconda3/lib/python3.11/site-packages (von posthog>=2.4.0->chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (2.2.1)
Anforderung bereits erfüllt: markdown-it-py>=2.2.0 in /root/miniconda3/lib/python3.11/site-packages (von rich<14,>=10.14.0-> streamlit->-r require.txt (Zeile 28)) (3.0.0)
Anforderung bereits erfüllt: pygments<3.0.0,>=2.13.0 in /root/miniconda3/lib/python3.11/site-packages (von rich<14,>=10.14.0->streamlit->-r require.txt (Zeile 28)) (2.16.1)
Anforderung bereits erfüllt: greenlet!=0.4.17 in /root/miniconda3/lib/python3.11 /site-packages (aus SQLAlchemy<3,>=1.4->langchain==0.0.191->-r require.txt (Zeile 2)) (2.0.2)
Anforderung bereits erfüllt: faker in /root/miniconda3/lib/python3.11/site-packages (aus streamlit-faker>=0.0.2->Streamlit-extras->-r require.txt (Zeile 29)) (19.3. 0)
Anforderung bereits erfüllt: matplotlib in /root/miniconda3/lib/python3.11/site-packages (aus streamlit-faker>=0.0.2->Streamlit-extras->-r Anforderungen.txt (Zeile 29)) ( 3.7.2)
Anforderung bereits erfüllt: sympy in /root/miniconda3/lib/python3.11/site-packages (von Torch>=1.13.0->auto-gptq==0.2.2->-r Anforderungen.txt ( Zeile 14)) (1.12)
Anforderung bereits erfüllt: networkx in /root/miniconda3/lib/python3.11/site-packages (von Torch>=1.13.0->auto-gptq==0.2.2->-r Anforderungen .txt (Zeile 14)) (3.1)
Anforderung bereits erfüllt: nvidia-cuda-nvrtc-cu11==11.7.99 in /root/miniconda3/lib/python3.11/site-packages (von Torch>=1.13.0->auto-gptq==0.2.2- >-r Anforderungen.txt (Zeile 14)) (11.7.99)
Anforderung bereits erfüllt: nvidia-cuda-runtime-cu11==11.7.99 in /root/miniconda3/lib/python3.11/site-packages (von Torch >=1.13.0->auto-gptq==0.2.2->-r require.txt (Zeile 14)) (11.7.99)
Anforderung bereits erfüllt: nvidia-cuda-cupti-cu11==11.7.101 in / root/miniconda3/lib/python3.11/site-packages (von Torch>=1.13.0->auto-gptq==0.2.2->-r Anforderungen.txt (Zeile 14)) (11.7.101) Anforderung
bereits erfüllt: nvidia-cudnn-cu11==8.5.0.96 in /root/miniconda3/lib/python3.11/site-packages (von Torch>=1.13.0->auto-gptq==0.2.2->-r Anforderungen .txt (Zeile 14)) (8.5.0.96)
Anforderung bereits erfüllt: nvidia-cublas-cu11==11.10.3.66 in /root/miniconda3/lib/python3.11/site-packages (von Torch>=1.13.0->auto-gptq==0.2.2->- r Anforderungen.txt (Zeile 14)) (11.10.3.66)
Anforderung bereits erfüllt: nvidia-cufft-cu11==10.9.0.58 in /root/miniconda3/lib/python3.11/site-packages (von Torch>=1.13. 0->auto-gptq==0.2.2->-r require.txt (Zeile 14)) (10.9.0.58)
Anforderung bereits erfüllt: nvidia-curand-cu11==10.2.10.91 in /root/miniconda3/lib/ python3.11/site-packages (von Torch>=1.13.0->auto-gptq==0.2.2->-r Anforderungen.txt (Zeile 14)) (10.2.10.91) Anforderung
bereits erfüllt: nvidia-cusolver- cu11==11.4.0.1 in /root/miniconda3/lib/python3.11/site-packages (von Torch>=1.13.0->auto-gptq==0.2.2->-r require.txt (Zeile 14) ) (11.4.0.1)
Requirement already satisfied: nvidia-cusparse-cu11==11.7.4.91 in /root/miniconda3/lib/python3.11/site-packages (from torch>=1.13.0->auto-gptq==0.2.2->-r requirements.txt (line 14)) (11.7.4.91)
Requirement already satisfied: nvidia-nccl-cu11==2.14.3 in /root/miniconda3/lib/python3.11/site-packages (from torch>=1.13.0->auto-gptq==0.2.2->-r requirements.txt (line 14)) (2.14.3)
Requirement already satisfied: nvidia-nvtx-cu11==11.7.91 in /root/miniconda3/lib/python3.11/site-packages (from torch>=1.13.0->auto-gptq==0.2.2->-r requirements.txt (line 14)) (11.7.91)
Requirement already satisfied: triton==2.0.0 in /root/miniconda3/lib/python3.11/site-packages (from torch>=1.13.0->auto-gptq==0.2.2->-r requirements.txt (line 14)) (2.0.0)
Voraussetzung bereits erfüllt: setuptools in /root/miniconda3/lib/python3.11/site-packages (von nvidia-cublas-cu11==11.10.3.66->torch>=1.13.0->auto-gptq==0.2.2 ->-r Anforderungen.txt (Zeile 14)) (67.8.0)
Anforderung bereits erfüllt: Rad in /root/miniconda3/lib/python3.11/site-packages (von nvidia-cublas-cu11==11.10.3.66- >torch>=1.13.0->auto-gptq==0.2.2->-r require.txt (Zeile 14)) (0.38.4)
Anforderung bereits erfüllt: cmake in /root/miniconda3/lib/python3.11 /site-packages (from triton==2.0.0->torch>=1.13.0->auto-gptq==0.2.2->-r require.txt (Zeile 14)) (3.27.2) Anforderung bereits
erfüllt : beleuchtet in /root/miniconda3/lib/python3.11/site-packages (von triton==2.0.0->torch>=1.13.0->auto-gptq==0.2.2->-r require.txt (Zeile 14)) (16.0.6)
Anforderung bereits erfüllt: pytz-deprecation-shim in /root/miniconda3/lib/python3.11/site-packages (aus tzlocal<5,>=1.1->streamlit->-r require.txt (Zeile 28)) (0.1 .0.post0)
Anforderung bereits erfüllt: h11>=0.8 in /root/miniconda3/lib/python3.11/site-packages (von uvicorn[standard]>=0.18.3->chromadb==0.3.22->- r Anforderungen.txt (Zeile 3)) (0.14.0)
Anforderung bereits erfüllt: httptools>=0.5.0 in /root/miniconda3/lib/python3.11/site-packages (von uvicorn[standard]>=0.18.3 ->chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (0.6.0)
Anforderung bereits erfüllt: python-dotenv>=0.13 in /root/miniconda3/lib/python3.11/site-packages (aus uvicorn[standard]>=0.18.3->chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (1.0.0)
Anforderung bereits erfüllt: uvloop!=0.15.0,!=0.15.1,>=0.14.0 in /root/miniconda3/lib/python3.11/site-packages (von uvicorn[standard]>=0.18.3-> chromadb==0.3.22->-r require.txt (Zeile 3)) (0.17.0)
Anforderung bereits erfüllt: watchfiles>=0.13 in /root/miniconda3/lib/python3.11/site-packages (von uvicorn[ standard]>=0.18.3->chromadb==0.3.22->-r require.txt (Zeile 3)) (0.19.0)
Anforderung bereits erfüllt: websockets>=10.4 in /root/miniconda3/lib/python3. 11/site-packages (von uvicorn[standard]>=0.18.3->chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (11.0.3) Anforderung bereits
erfüllt: Suppensieb>1.2 in / root/miniconda3/lib/python3.11/site-packages (aus beautifulsoup4->unstructured->-r require.txt (Zeile 16)) (2.4.1)
Requirement already satisfied: dill<0.3.8,>=0.3.0 in /root/miniconda3/lib/python3.11/site-packages (from datasets->auto-gptq==0.2.2->-r requirements.txt (line 14)) (0.3.7)
Requirement already satisfied: xxhash in /root/miniconda3/lib/python3.11/site-packages (from datasets->auto-gptq==0.2.2->-r requirements.txt (line 14)) (3.3.0)
Requirement already satisfied: multiprocess in /root/miniconda3/lib/python3.11/site-packages (from datasets->auto-gptq==0.2.2->-r requirements.txt (line 14)) (0.70.15)
Requirement already satisfied: joblib in /root/miniconda3/lib/python3.11/site-packages (from nltk->sentence-transformers->-r requirements.txt (line 7)) (1.3.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in /root/miniconda3/lib/python3.11/site-packages (from scikit-learn->sentence-transformers->-r requirements.txt (line 7)) (3.2.0)
Requirement already satisfied: pycparser in /root/miniconda3/lib/python3.11/site-packages (from cffi>=1.12->cryptography>=36.0.0->pdfminer.six==20221105->-r requirements.txt (line 5)) (2.21)
Requirement already satisfied: smmap<6,>=3.0.1 in /root/miniconda3/lib/python3.11/site-packages (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit->-r requirements.txt (line 28)) (5.0.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /root/miniconda3/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit->-r requirements.txt (line 28)) (2023.7.1)
Anforderung bereits erfüllt: Referenzierung>=0.28.4 in /root/miniconda3/lib/python3.11/site-packages (von jsonschema>=3.0->altair<6,>=4.0->streamlit->-r Anforderungen.txt (Zeile 28)) (0.30.2)
Anforderung bereits erfüllt: rpds-py>=0.7.1 in /root/miniconda3/lib/python3.11/site-packages (von jsonschema>=3.0->altair<6,> =4.0->streamlit->-r require.txt (Zeile 28)) (0.9.2)
Anforderung bereits erfüllt: mdurl~=0.1 in /root/miniconda3/lib/python3.11/site-packages (von markdown-it -py>=2.2.0->rich<14,>=10.14.0->streamlit->-r Anforderungen.txt (Zeile 28)) (0.1.2)
Anforderung bereits erfüllt: anyio<5,>=3.4. 0 in /root/miniconda3/lib/python3.11/site-packages (von starlette<0.28.0,>=0.27.0->fastapi>=0.85.1->chromadb==0.3.22->-r Anforderungen.txt (Zeile 3)) (3.7.1)
Anforderung bereits erfüllt: mypy-extensions>=0.3.0 in /root/miniconda3/lib/python3.11/site-packages (von typing-inspect<1,>=0.4.0->dataclasses-json<0.6.0, >=0.5.7->langchain==0.0.191->-r Anforderungen.txt (Zeile 2)) (1.0.0)
Anforderung bereits erfüllt: Konturpy>=1.0.1 in /root/miniconda3/lib/python3. 11/site-packages (von matplotlib->streamlit-faker>=0.0.2->Streamlit-extras->-r require.txt (Zeile 29)) (1.1.0) Anforderung bereits erfüllt
: Cycler>=0.10 in / root/miniconda3/lib/python3.11/site-packages (von matplotlib->streamlit-faker>=0.0.2->Streamlit-extras->-r require.txt (Zeile 29)) (0.11.0)
Requirement already satisfied: fonttools>=4.22.0 in /root/miniconda3/lib/python3.11/site-packages (from matplotlib->streamlit-faker>=0.0.2->Streamlit-extras->-r requirements.txt (line 29)) (4.42.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /root/miniconda3/lib/python3.11/site-packages (from matplotlib->streamlit-faker>=0.0.2->Streamlit-extras->-r requirements.txt (line 29)) (1.4.4)
Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /root/miniconda3/lib/python3.11/site-packages (from matplotlib->streamlit-faker>=0.0.2->Streamlit-extras->-r requirements.txt (line 29)) (3.0.9)
Requirement already satisfied: mpmath>=0.19 in /root/miniconda3/lib/python3.11/site-packages (from sympy->torch>=1.13.0->auto-gptq==0.2.2->-r requirements.txt (line 14)) (1.3.0)
Requirement already satisfied: sniffio>=1.1 in /root/miniconda3/lib/python3.11/site-packages (from anyio<5,>=3.4.0->starlette<0.28.0,>=0.27.0->fastapi>=0.85.1->chromadb==0.3.22->-r requirements.txt (line 3)) (1.3.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

5. 添加文档为知识库

5.1 文档目录以及模板文档

可以替换成需要的文档

~localGPT/SOURCE_DOCUMENTS/constitution.pdf

注入前验证下help,如前面提到,建议直接使用Conda绝对路径的python

/root/miniconda3/bin/python ingest.py --help
Usage: ingest.py [OPTIONS]

Options:
  --device_type [cpu|cuda|ipu|xpu|mkldnn|opengl|opencl|ideep|hip|ve|fpga|ort|xla|lazy|vulkan|mps|meta|hpu|mtia]
                                  Device to run on. (Default is cuda)
  --help                          Show this message and exit.

5.2 开始注入文档

默认使用cuda/GPU

/root/miniconda3/bin/python ingest.py

可以指定CPU

/root/miniconda3/bin/python ingest.py --device_type cpu

首次注入时,会下载对应的矢量数据DB,矢量数据DB会存放到  /root/localGPT/DB

首次注入过程

/root/miniconda3/bin/python ingest.py
2023-08-18 09:36:55,389 – INFO – ingest.py:122 – Dokumente werden aus /root/localGPT/SOURCE_DOCUMENTS geladen,
alle Dateien: ['constitution.pdf']
2023 -08-18 09:36:55,398 - INFO - ingest.py:34 - Dokumentstapel wird geladen
2023-08-18 09:36:56,818 - INFO - ingest.py:131 - 1 Dokument aus /root/localGPT/SOURCE_DOCUMENTS geladen
18.08.2023 09:36:56,818 – INFO – ingest.py:132 – In 72 Textblöcke aufgeteilt
18.08.2023 09:36:57,994 – INFO – SentenceTransformer.py:66 – Vortrainierten SentenceTransformer laden: hkunlp/ Instructor-large
Downloading (…)c7233/.gitattributes: 100%|████████████████████████████████ ███ ████████████████████████████████████████ | 1,48k/1,48k [00:00<00:00, 4,13 MB/s]
Herunterladen (…)_Pooling/config.json: 100 %|██████████████████████████████████ ███ ████████████████████████████████████████ ███| 270/270 [00:00<00:00, 915kB/s]
Herunterladen (…)/2_Dense/config.json: 100%|████████████████████ ████████████████████████████████████████ ██████████ ██████████| 116/116 [00:00<00:00, 380kB/s]
pytorch_model.bin wird heruntergeladen: 100%|█████████████████████████ █ ████████████████████████████████████████ ██████████ █████| 3,15 Mio./3,15 Mio. [00:01<00:00, 2,99 MB/s]
Herunterladen (…)9fb15c7233/README.md: 100 %|██████████████████ ████████████████████████████████████████ ██████████ ████████| 66,3k/66,3k [00:00<00:00, 359kB/s]
Herunterladen (…)b15c7233/config.json: 100%|███████████████████ ████████████████████████████████████████ ██████████ ██████| 1,53k/1,53k [00:00<00:00, 5,70 MB/s]
Herunterladen (…)ce_transformers.json: 100%|██████████████████████████████████ █████ ████████████████████████████████████████ █| 122/122 [00:00<00:00, 485kB/s]
pytorch_model.bin wird heruntergeladen: 100%|█████████████████████████ █ ████████████████████████████████████████ ██████████ █████| 1,34G/1,34G [03:15<00:00, 6,86 MB/s]
Herunterladen (…)nce_bert_config.json: 100 %|████████████████████ ████████████████████████████████████████ ██████████ ████████| 53,0/53,0 [00:00<00:00, 109kB/s]
Herunterladen (…)cial_tokens_map.json: 100%|██████████████████████ █ ████████████████████████████████████████ ██████████ ██| 2,20k/2,20k [00:00<00:00, 8,96MB/s]
Download von spiece.model: 100%|███████████████████████ ████████████████████████████████████████ ██████████ ███████████████| 792k/792k [00:00<00:00, 3,46 MB/s]
Herunterladen (…)c7233/tokenizer.json: 100 %|████████████████████████████████ █████ ██████████████████████████████████████| 2,42 Mio./2,42 Mio. [00:00<00:00, 3,01 MB/s]
Herunterladen (…)okenizer_config.json: 100 %|████████████████████ ████████████████████████████████████████ ██████████ █████| 2,41k/2,41k [00:00<00:00, 9,75 MB/s]
Herunterladen (…)15c7233/modules.json: 100 %|██████████████████ ████████████████████████████████████████ ██████████ ███████████| 461/461 [00:00<00:00, 1,92 MB/s]
Load INSTRUCTOR_Transformer
2023-08-18 09:40:26,658 – INFO – instanziator.py:21 – Erstellt ein temporäres Verzeichnis unter /tmp/tmp47gnnhwi
2023-08 -18 09:40:26,658 – INFO – instanziator.py:76 – Schreiben von /tmp/tmp47gnnhwi/_remote_module_non_scriptable.py
max_seq_length 512
2023-08-18 09:40:30,076 - INFO - __init__.py:88 - Running Chroma using direct local API.
2023-08-18 09:40:30,248 - WARNING - __init__.py:43 - Using embedded DuckDB with persistence: data will be stored in: /root/localGPT/DB
2023-08-18 09:40:30,252 - INFO - ctypes.py:22 - Successfully imported ClickHouse Connect C data optimizations
2023-08-18 09:40:30,257 - INFO - json_impl.py:45 - Using python library for writing JSON byte strings
2023-08-18 09:40:30,295 - INFO - duckdb.py:454 - No existing DB found in /root/localGPT/DB, skipping load
2023-08-18 09:40:30,295 - INFO - duckdb.py:466 - No existing DB found in /root/localGPT/DB, skipping load
2023-08-18 09:40:32,800 - INFO - duckdb.py:414 - Persisting DB to disk, putting it in the save folder: /root/localGPT/DB
18.08.2023 09:40:32,813 – INFO – duckdb.py:414 – DB auf der Festplatte speichern und im Speicherordner ablegen: /root/localGPT/DB

Liste der Projektdateien

ls
ACKNOWLEDGEMENT.md  CONTRIBUTING.md  ingest.py   localGPT_UI.py  README.md            run_localGPT.py
constants.py        DB               LICENSE     __pycache__     requirements.txt     SOURCE_DOCUMENTS
constitution.pdf    Dockerfile       localGPTUI  pyproject.toml  run_localGPT_API.py 

6. Führen Sie den Wissensdatenbank-KI-Chatbot aus

Jetzt ist es an der Zeit, ein Gespräch mit Ihrer lokalen Wissensdatenbank zu beginnen!

6.1 Frage, die im Befehlszeilenmodus ausgeführt wird

 Bei der ersten Ausführung wird das entsprechende Standardmodell ~/localGPT/constants.py heruntergeladen. 

# model link: https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML

MODEL_ID = "TheBloke/Llama-2-7B-Chat-GGML"

MODEL_BASENAME = "llama-2-7b-chat.ggmlv3.q4_0.bin"

Das Modell wird nach /root/.cache/huggingface/hub/models--TheBloke--Llama-2-7B-Chat-GGML heruntergeladen

Direkt ausführen

/root/miniconda3/bin/python run_localGPT.py

Dialogeingabe

Unterstützt Englisch, Chinesisch muss mit utf-8 verarbeitet werden

Enter a query:

Gesprächsaufzeichnung

/root/miniconda3/bin/python run_localGPT.py
2023-08-18 09:43:02,433 - INFO - run_localGPT.py:180 - Running on: cuda
2023-08-18 09:43:02,433 - INFO - run_localGPT.py:181 - Display Source Documents set to: False
2023-08-18 09:43:02,676 - INFO - SentenceTransformer.py:66 - Load pretrained SentenceTransformer: hkunlp/instructor-large
load INSTRUCTOR_Transformer
max_seq_length  512
2023-08-18 09:43:05,301 - INFO - __init__.py:88 - Running Chroma using direct local API.
2023-08-18 09:43:05,317 - WARNING - __init__.py:43 - Using embedded DuckDB with persistence: data will be stored in: /root/localGPT/DB
2023-08-18 09:43:05,328 - INFO - ctypes.py:22 - Successfully imported ClickHouse Connect C data optimizations
2023-08-18 09:43:05,336 - INFO - json_impl.py:45 - Using python library for writing JSON byte strings
2023-08-18 09:43:05,402 - INFO - duckdb.py:460 - loaded in 72 embeddings
2023-08-18 09:43:05,405 - INFO - duckdb.py:472 - loaded in 1 collections
2023-08-18 09:43:05,406 - INFO - duckdb.py:89 - collection with name langchain already exists, returning existing collection
2023-08-18 09:43:05,406 - INFO - run_localGPT.py:45 - Loading Model: TheBloke/Llama-2-7B-Chat-GGML, on: cuda
2023-08-18 09:43:05,406 - INFO - run_localGPT.py:46 - This action can take a few minutes!
2023-08-18 09:43:05,406 - INFO - run_localGPT.py:50 - Using Llamacpp for GGML quantized models
Herunterladen (…)chat.ggmlv3.q4_0.bin: 100%|████████████████████████████████ ███ ████████████████████████████████████████ | 3,79G/3,79G [09:53<00:00, 6,39MB/s]
llama.cpp: Modell wird geladen von /root/.cache/huggingface/hub/models--TheBloke--Llama-2-7B-Chat- GGML/snapshots/b616819cd4777514e3a2d9b8be69824aca8f5daf/llama-2-7b-chat.ggmlv3.q4_0.bin
llama_model_load_internal: format = ggjt v3 (neueste)
llama_model_load_internal: n_vocab = 32000
llama_model_load_internal : n_ctx = 2048 llama_model_load_internal
: n_embd = 4096
llama_model_load_internal: n_mult = 256
llama_model_load_internal: n_head = 32
llama_model_load_internal: n_layer = 32
llama_model_load_internal: n_rot = 128
llama_model_load_internal: ftype = 2 (meist Q4_0)
llama_model_load_internal: n_ff = 11008
llama_model_load_internal: n_parts = 1
llama_model_load_internal: Modellgröße = 7B
llama_model_load_internal: ggml ctx size = 0,07 MB
llama_model_load_internal: mem erforderlich = 5407,71 MB (+ 1026,00 MB pro Bundesstaat)
llama_new_context_with_model: kv Selbstgröße = 1024,00 MB
AVX = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |

Geben Sie eine Abfrage ein:

Oder fügen Sie den Parameter --show_sources hinzu , um bei der Beantwortung die Informationen zum Referenzkapitel anzuzeigen.

/root/miniconda3/bin/python run_localGPT.py --show_sources

Gesprächsprotokoll:

/root/miniconda3/bin/python run_localGPT.py --show_sources
18.08.2023 10:03:55,466 - INFO - run_localGPT.py:180 - Läuft am: cuda
18.08.2023 10:03:55,466 - INFO - run_localGPT.py:181 – Quelldokumente anzeigen eingestellt auf: True
2023-08-18 10:03:55,708 – INFO – SentenceTransformer.py:66 – Vortrainierten SentenceTransformer laden: hkunlp/instructor-large
Load INSTRUCTOR_Transformer
max_seq_length 512
2023-08-18 10:03:58,302 – INFO – __init__.py:88 – Chroma mit direkter lokaler API ausführen.
18.08.2023 10:03:58,307 – WARNUNG – __init__.py:43 – Verwendung von eingebetteter DuckDB mit Persistenz: Daten werden gespeichert in: /root/localGPT/DB
18.08.2023 10:03:58,312 – INFO – ctypes.py:22 – ClickHouse Connect C-Datenoptimierungen wurden erfolgreich importiert
18.08.2023 10:03:58,318 – INFO – json_impl.py:45 – Python-Bibliothek zum Schreiben von JSON-Byte-Strings verwenden 18.08.2023 10:
03:58,372 – INFO – duckdb.py:460 – in 72 Einbettungen geladen
18.08.2023 10:03:58,373 – INFO – duckdb.py:472 – geladen in 1 Sammlungen
18.08.2023 10:03:58,373 – INFO – duckdb.py:89 – Sammlung mit dem Namen langchain existiert bereits und wird zurückgegeben bestehende Sammlung
18.08.2023 10:03:58,374 – INFO – run_localGPT.py:45 – Modell wird geladen: TheBloke/Llama-2-7B-Chat-GGML, am: cuda
18.08.2023 10:03:58,374 – INFO - run_localGPT.py:46 - Diese Aktion kann einige Minuten dauern!
18.08.2023 10:03:58,374 - INFO - run_localGPT.py:50 - Verwendung von Llamacpp für quantisierte GGML-Modelle
llama.cpp: Modell wird aus /root/.cache/huggingface/hub/models--TheBloke--Llama-2-7B-Chat-GGML/snapshots/b616819cd4777514e3a2d9b8be69824aca8f5daf/llama-2-7b-chat.ggmlv3.q4_0.bin geladen
llama_model_load_internal: format = ggjt v3 (neueste)
llama_model_load_internal: n_vocab = 32000
llama_model_load_internal: n_ctx = 2048
llama_model_load_internal: n_embd = 4096 llama_model_load_internal:
n_mult = 256
llama_model_load_internal : n_head = 32
llama_model_load_internal: n_layer = 32
llama_model_load_internal: n_rot = 128
llama_model_load_internal: ftype = 2 ( meist Q4_0)
llama_model_load_internal: n_ff = 11008
llama_model_load_internal: n_parts = 1
llama_model_load_internal: model size = 7B
llama_model_load_internal: ggml ctx size =    0.07 MB
llama_model_load_internal: mem required  = 5407.71 MB (+ 1026.00 MB per state)
llama_new_context_with_model: kv self size  = 1024.00 MB
AVX = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |

Enter a query: how many times could president act, and how many years as max?

llama_print_timings:        load time = 19737.32 ms
llama_print_timings:      sample time =   101.14 ms /   169 runs   (    0.60 ms per token,  1671.02 tokens per second)
llama_print_timings: prompt eval time = 19736.91 ms /   925 tokens (   21.34 ms per token,    46.87 tokens per second)
llama_print_timings:        eval time = 36669.35 ms /   168 runs   (  218.27 ms per token,     4.58 tokens per second)
llama_print_timings:       total time = 56849.80 ms


> Question:
how many times could president act, and how many years as max?

> Antwort:
 Die Antwort auf diese Frage finden Sie in Amendment XXII und Amendment XXIII der US-Verfassung. Gemäß diesen Änderungen darf eine Person nicht mehr als zweimal zum Präsidenten gewählt werden, und niemand kann das Amt des Präsidenten länger als zwei Jahre einer Amtszeit innehaben, für die eine andere Person zum Präsidenten gewählt wurde. Wenn der Präsident jedoch aufgrund seiner Amtsunfähigkeit nicht in der Lage ist, seinen Befugnissen und Pflichten nachzukommen, bleibt der Vizepräsident weiterhin Präsident, bis der Kongress über die Angelegenheit entscheidet.
Zusammenfassend lässt sich sagen, dass eine Person höchstens zweimal zum Präsidenten gewählt werden kann und das Amt nicht länger als zwei Jahre einer Amtszeit innehaben kann, für die eine andere Person zum Präsidenten gewählt wurde. Sollte der Präsident nicht in der Lage sein, seine Befugnisse und Pflichten wahrzunehmen, wird der Vizepräsident weiterhin als Präsident fungieren, bis der Kongress eine Entscheidung trifft.
----------------------------------QUELLENDOKUMENTE-------------- -------------

> /root/localGPT/SOURCE_DOCUMENTS/constitution.pdf:
Änderung XXII.

Änderung XXIII.

Verabschiedet vom Kongress am 21. März 1947. Ratifiziert am 27. Februar.

Verabschiedet vom Kongress am 16. Juni 1960. Ratifiziert am 29. März 1961.

951.

ABSCHNITT 1

...

SEKTION 2

....

----------------------------------QUELLENDOKUMENTE-------------- -------------

Geben Sie eine Abfrage ein: Beenden

6.2 Fragen, die im Web-UI-Modus ausgeführt werden

6.2.1 Starten Sie die serverseitige API

Sie können die Web-Benutzeroberfläche verwenden, um die serverseitige API auszuführen und zu starten, um den Dienst auf Port 5110 zu überwachen.

http://127.0.0.1:5110

/root/miniconda3/bin/python run_localGPT_API.py

Wenn während der Ausführung die folgenden Probleme auftreten, liegt dies daran, dass die Python im Code die Python unter Conda PATH nicht verwendet.

/root/miniconda3/bin/python run_localGPT_API.py
lädt INSTRUCTOR_Transformer
max_seq_length 512
Das Verzeichnis existiert nicht
run_langest_commands ['python', 'ingest.py']
Traceback (letzter Aufruf zuletzt):
  Datei „/root/localGPT/run_localGPT_API.py ", Zeile 56, in <module>
    raise FileNotFoundError(
FileNotFoundError: Es wurden keine Dateien in SOURCE_DOCUMENTS gefunden, bitte fügen Sie eine Starterdatei ein, bevor Sie die API starten!

Sie können die Python in ~/localGPT/run_localGPT_API.py auf den Pfad unter Conda ändern

run_langest_commands = ["python", "ingest.py"]

verwandeln sich in

run_langest_commands = ["/root/miniconda3/bin/python", "ingest.py"]

Arbeitsprozess

Wenn Sie INFO:werkzeug: sehen, bedeutet dies, dass der Start erfolgreich war und das Fenster den Platz für Debugzwecke behalten kann.

/root/miniconda3/bin/python run_localGPT_API.py
lädt INSTRUCTOR_Transformer
max_seq_length 512
WARNUNG:chromadb:Eingebettete DuckDB mit Persistenz verwenden: Daten werden gespeichert in: /root/localGPT/DB
llama.cpp: Modell wird aus /root/.cache/ geladen Huggingface/hub/models--TheBloke--Llama-2-7B-Chat-GGML/snapshots/b616819cd4777514e3a2d9b8be69824aca8f5daf/llama-2-7b-chat.ggmlv3.q4_0.bin
llama_model_load_internal: format = ggjt v3 (neueste)
llama_model_load _internal: n_vocab = 32000
llama_model_load_internal: n_ctx = 2048
llama_model_load_internal: n_embd = 4096
llama_model_load_internal: n_mult = 256
llama_model_load_internal: n_head = 32
llama_model_load_internal: n_layer = 32
llama_model_load_internal: n_rot = 128
llama_model_load_internal: ftype = 2 (meistens Q4_0)
llama_model_load_internal: n_ff = 11008
llama_model_load_internal: n_parts = 1
llama_model_load_internal: Modellgröße = 7B llama_model_load_internal
: ggml ctx size = 0,07 MB
llama_model_load_internal: Mem erforderlich = 5407,71 MB (+ 1026,00 MB pro Zustand)
llama_new_context_with_model: kv self size = 1024,00 MB
AVX = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |
 * Stellt die Flask-App „run_localGPT_API“ bereit.
 * Debug-Modus: aktiviert
INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5110
INFO:werkzeug:Press CTRL+C to quit
INFO:werkzeug: * Restarting with watchdog (inotify)

6.2.2 启动服务器端UI

重新打开一个新的命令行终端,运行~/localGPT/localGPTUI/localGPTUI.py,启动服务器端UI在5111端口上进行监听服务

http://127.0.0.1:5111

/root/miniconda3/bin/python localGPTUI.py

如需局域网访问,修改localGPTUI.py,127.0.0.1 -> 0.0.0.0

parser.add_argument("--host", type=str, default="0.0.0.0",
                        help="Host to run the UI on. Defaults to 127.0.0.1. "
                             "Set to 0.0.0.0 to make the UI externally "
                             "accessible from other devices.")

运行记录

/root/miniconda3/bin/python localGPTUI.py 
 * Stellt die Flask-App „localGPTUI“ bereit
 * Debug-Modus: Ein
WARNUNG: Dies ist ein Entwicklungsserver. Verwenden Sie es nicht in einer Produktionsbereitstellung. Verwenden Sie stattdessen einen Produktions-WSGI-Server.
 * Läuft auf allen Adressen (0.0.0.0)
 * Läuft auf http://127.0.0.1:5111
 * Läuft auf http://IP:5111

Portnutzung

netstat -nltp | grep 511
tcp        0      0 127.0.0.1:5110          0.0.0.0:*               LISTEN      57479/python
tcp        0      0 0.0.0.0:5111            0.0.0.0:*               LISTEN      21718/python

6.2.3 Browser, der auf die Web-Benutzeroberfläche zugreift

Diese Maschine:  http://127.0.0.1:5111 

LAN:  http://IP:5111

Sie können auf der Webseite kostenlose Gespräche führen und chinesische Eingaben unterstützen.

Verwenden Sie Screenshots

6.3 Ersetzen Sie lokale Dokumente durch eine Wissensdatenbank

6.3.1 Befehlszeilenmodus

Dokumente direkt zu ~/localGPT/SOURCE_DOCUMENTS/ hinzufügen

Dadurch wird automatisch die Aktualisierung der entsprechenden Datenbank ausgelöst. Nach Abschluss der Aktualisierung kann der Fragedialog normal durchgeführt werden.

6.3.2 Web-UI-Methode

Daten hochladen

1. Um ein Dokument hochzuladen, das die Anwendung als neue Wissensdatenbank aufnehmen soll, klicken Sie auf die Schaltfläche „Hochladen“.

2. Wählen Sie das Dokument aus, das als neue Wissensdatenbank für die Konversation verwendet werden soll.

3. Sie werden dann aufgefordert, das Dokument zur Wissensdatenbank hinzuzufügen, die Wissensdatenbank mit dem gerade ausgewählten Dokument zurückzusetzen oder den Upload abzubrechen.

4. Wenn Dokumente als neue Wissensdatenbank in die Vektordatenbank importiert werden, kommt es zu einer kurzen Wartezeit. 

Einfügen chinesischer Dokumente in die Wissensdatenbank

Antwort generieren

Ergebnis zurückgegeben

7. FAQFehlerbehebung

7.1 Chinesische Dokumenteninjektion

Ändern Sie run_localGPT_API.py

max_ctx_size = 4096

Ändern Sie ingest.py

text_splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=200)

7.2 Nach dem Öffnen der Webseite erfolgt keine Antwort auf die Frage, Response.status_code = 504, 304

Wenn die Umgebung einen Proxy verwendet, entfernen Sie den Proxy, bevor Sie die serverseitige Benutzeroberfläche ausführen.

unset http_proxy
unset https_proxy
unset ftp_proxy
/root/miniconda3/bin/python localGPTUI.py

7.3 Wie locaGPT funktioniert

Wenn Sie die richtigen lokalen Modelle auswählen und die Leistung nutzen,  LangChain können Sie die gesamte Pipeline lokal ausführen, ohne dass Daten Ihre Umgebung verlassen, und das mit angemessener Leistung.

  • ingest.py verwendet  LangChain Tools, um das Dokument zu analysieren und Einbettungen lokal mit zu erstellen  InstructorEmbeddings. Anschließend speichert es das Ergebnis mithilfe des  Chroma Vektorspeichers in einer lokalen Vektordatenbank.
  • run_localGPT.py nutzt ein lokales LLM, um Fragen zu verstehen und Antworten zu erstellen. Der Kontext für die Antworten wird mithilfe einer Ähnlichkeitssuche aus dem lokalen Vektorspeicher extrahiert, um den richtigen Kontext aus den Dokumenten zu finden.
  • Sie können dieses lokale LLM durch jedes andere LLM von HuggingFace ersetzen. Stellen Sie sicher, dass das von Ihnen ausgewählte LLM im HF-Format vorliegt.

7.4 So wählen Sie verschiedene große LLM-Sprachmodelle aus

The following will provide instructions on how you can select a different LLM model to create your response:

  1. Open up constants.py in the editor of your choice.

  2. Change the MODEL_ID and MODEL_BASENAME. If you are using a quantized model (GGMLGPTQ), you will need to provide MODEL_BASENAME. For unquatized models, set MODEL_BASENAME to NONE

  3. There are a number of example models from HuggingFace that have already been tested to be run with the original trained model (ending with HF or have a .bin in its "Files and versions"), and quantized models (ending with GPTQ or have a .no-act-order or .safetensors in its "Files and versions").

  4. For models that end with HF or have a .bin inside its "Files and versions" on its HuggingFace page.

    • Make sure you have a model_id selected. For example -> MODEL_ID = "TheBloke/guanaco-7B-HF"
    • Wenn Sie zum HuggingFace-  Repository gehen  und auf „Dateien und Versionen“ gehen, werden Sie Modelldateien bemerken, die mit der Erweiterung .bin enden.
    • Alle Modelldateien, die die Erweiterung .bin enthalten, werden mit dem folgenden Code ausgeführt, in dem sich der  # load the LLM for generating Natural Language responses Kommentar befindet.
    • MODEL_ID = "TheBloke/guanaco-7B-HF"
  5. Für Modelle, die GPTQ in ihrem Namen enthalten und/oder die eine .no-act-order- oder .safetensors-Erweiterung in ihren „Dateien und Versionen“ auf ihrer HuggingFace-Seite haben.

    • Stellen Sie sicher, dass Sie eine model_id ausgewählt haben. Zum Beispiel -> model_id = "TheBloke/wizardLM-7B-GPTQ"

    • Sie müssen außerdem die Datei mit dem Basisnamen des Modells auswählen. Zum Beispiel -> model_basename = "wizardLM-7B-GPTQ-4bit.compat.no-act-order.safetensors"

    • Wenn Sie zum HuggingFace-  Repository gehen  und auf „Dateien und Versionen“ gehen, werden Sie eine Modelldatei bemerken, die mit der Erweiterung .safetensors endet.

    • Any model files that contain no-act-order or .safetensors extensions will be run with the following code where the # load the LLM for generating Natural Language responses comment is found.

    • MODEL_ID = "TheBloke/WizardLM-7B-uncensored-GPTQ"

      MODEL_BASENAME = "WizardLM-7B-uncensored-GPTQ-4bit-128g.compat.no-act-order.safetensors"

  6. Comment out all other instances of MODEL_ID="other model names"MODEL_BASENAME=other base model names, and llm = load_model(args*)

7.5 更多问题参考

Issues · PromtEngineer/localGPT · GitHub

Supongo que te gusta

Origin blog.csdn.net/holyvslin/article/details/132470978
Recomendado
Clasificación