privateGPT centos7环境下部署和研究

news/2024/11/15 4:07:19/

参考:gihtub代码 https://github.com/imartinez/privateGPT

安装

llama-cpp-python-0.1.48安装报错

 Could not build wheels for llama-cpp-python, , which is required to install pyproject.toml-based projects

搜索(结果较少):
从文章: 升级gcc解决编译llama-cpp-python错误发现是gcc/g++版本过低所致,但是博主环境是ubuntu.

搜索到文章 centos:安装gcc g++知道默认centos7 yum安装的是4.8.5

总结:

解决方案centos gcc/g++升级到11
参考:centos7 升级gcc到11.2.0

注意:编译安装耗时较久

执行

python ingest.py 报错version `GLIBCXX_3.4.29‘ not found的问题


OSError: xxxx/lib/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by xxxx/python3.9/site-packages/llama_cpp/libllama.so)

如何解决version `GLIBCXX_3.4.29‘ not found的问题

默认路径下的libstdc++.so.6缺少GLIBCXX_3.4.29

发现是

版本低了

ll  /xxx/lib/libstdc++.so.6

在这里插入图片描述
改为指向6.0.29

提取数据:
python ingest.py

在这里插入图片描述

python privateGPT.py执行查询

语法错误

  File "/data1/Projects/privateGPT/privateGPT.py", line 26match model_type:^
SyntaxError: invalid syntax

是python3.10语法

参考:https://github.com/imartinez/privateGPT/issues/89

修改代码为:

if model_type == "LlamaCpp":llm = LlamaCpp(model_path=model_path, n_ctx=model_n_ctx, callbacks=callbacks, verbose=False)
elif model_type == "GPT4All":llm = GPT4All(model=model_path, n_ctx=model_n_ctx, backend='gptj', callbacks=callbacks, verbose=False)
else:print(f"Model {model_type} not supported!")exit;

query报错:
unknown token 忽视掉 https://github.com/imartinez/privateGPT/issues/77

输出乱码
在这里插入图片描述
拉取最新代码后解决

总结

缺点:
1.模型比较局限,只能选择 GPT4All-J 类型的模型,性能高的开源模型暂时无法兼容在这里插入图片描述 https://gpt4all.io/index.html在这里插入图片描述

2.中文文档
embedding模型用中文向量,但是问答结果要还是英文,要么是没有意义的文字

shibing624/text2vec-base-chinese

参考:https://zhuanlan.zhihu.com/p/630223486
在这里插入图片描述

在这里插入图片描述

3.内存管理有问题,第xx个问题报错内存不足,待解决
ggml_new_tensor_impl: not enough space in the context’s memory pool (needed 8355506480, available 8342642000)

4.仅使用cpu
。。。待解决

完整代码

不持久化文档,完整代码:

import osfrom langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from langchain.llms import GPT4All, LlamaCpp
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.document_loaders import TextLoader
loader = TextLoader('./source_documents/xxx.txt',encoding='utf-8')from langchain.indexes import VectorstoreIndexCreator
from langchain.chains import RetrievalQA
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chromafrom langchain.document_loaders import UnstructuredFileLoader
from langchain.chains.question_answering import load_qa_chain
model_path = 'xxx/ggml-gpt4all-j-v1.3-groovy.bin'
callbacks = [StreamingStdOutCallbackHandler()]
llm = GPT4All(model=model_path, backend='gptj', callbacks=callbacks, verbose=False)
chain = load_qa_chain(llm, chain_type="stuff")chunk_size = 500
chunk_overlap = 50
text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)documents =  loader.load()
texts = text_splitter.split_documents(documents)embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2" )db = Chroma.from_documents(texts, embeddings)
retriever = db.as_retriever()qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)
query = "what is tame?"
res = qa(query)
answer, docs = res['result'], res['source_documents']

http://www.ppmy.cn/news/74981.html

相关文章

Mysql常见的索引模型

目录 有序数组哈希表二叉搜索树B-TreeBTree 有序数组 我们指定一个列为索引,然后按照这个列的值排序,以有序数据存放入数据表中,如下所示 这样,我们在查找数据的时候,就可以通过id这个列,在数据表中进行二…

【深度学习】注意力机制

注意力机制 一、注意力机制是什么二、注意力机制的原理是什么三、注意力机制的分类1、点积注意力2、加性注意力3、自注意力 一、注意力机制是什么 注意力机制(Attention Mechanism)是一种在计算机科学和机器学习中常用的技术,可以使模型在处…

【Linux】进程控制 — 进程终止 + 进程等待

文章目录 📖 前言1. 再次理解fork()函数1.1 fork()之后子进程代码和数据问题:1.2 fork()之后操作系统做了什么:1.3 为什么要写时拷贝?? 2. 进程终止2.1 main函数的返回值:2.2 exit() 和 _exit()&#xff1a…

小航助学2023年3月GESP_C++二级试卷(含题库答题软件账号)

GESP在线模拟训练系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)在线答题_程序猿下山的博客-CSDN博客_小航答题助手 答案:D 第1题以下存储器中的数据不会受到附近强磁场干扰的是( )。 A、硬盘B、U 盘C…

RHCE第五次作业

1.总结变量的类型及含义? 2.实现课堂案例计算长方形面积?(6种方式) 3.定义变量urlhttps://blog.csdn.net/weixin_45029822/article/details/103568815(通过多种方法实现) 1)截取网站访问的协议 …

求爷爷告奶奶,阿里大佬才甩出这份Spark+Hadoop+中台实战pdf

Spark大数据分析实战 1、Spark简介 初识Spark Sp ark生态系统BDAS Sp ark架构与运行逻辑 弹性分布式数据集 2、Spark开发与环境配置 Spark应用开发环境2置 使用Intelli i开发Spark 远程调试Spark程序 Spark编译 配置Spark源码阅读环境 3、BDAS简介 SQL on Spark S…

Swing简述

一、Swing概述 GUI(图形用户界面)为程序提供图形界面,它最初的设计目的是为程序员构建一个通用的GUI,使其能够在所有的平台上运行,但Java 1.0中基础类AWT(抽象窗口工具箱)并没有达到这个要求&a…

【C++】 排列与组合算法详解(进阶篇)

文章目录 写在前面算法1:朴素算法思路缺点 算法2:递推预处理思路时间复杂度: O ( n 2 ) O(n^2) O(n2) 算法3:阶乘逆元思路时间复杂度: O ( n log ⁡ n ) O(n \log n) O(nlogn)思考:读者也可以尝试写 O ( n…