当前位置: 首页 > news >正文

基于langChain 的privateGPT 文档问答 研究

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

privateGPT可以在断网的情况下,借助GPT和文档进行交互,有利于保护数据隐私。

privateGPT可以有四个用处:
1.增强知识管理:私有LLMs自动化,将大量非结构化数据组织
2.提高用户体验:可以粗粒用户查询请求提供私人的基于上下文相关的恢回复
3.创新
4.提高工作效率

LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序

安装

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 26
    match 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 os
 

from 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 Chroma
 
from 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']

相关文章:

  • 基于langChain 的privateGPT 文档问答 研究
  • 【C++/嵌入式笔试面试八股】一、24.智能指针 | 其他
  • prometheus 部署安装
  • C# 队列(Queue)
  • C语言中的 #ifdef __cplusplus 和 #endif 的作用
  • RK3588-EDGE Ethernet驱动(一)
  • 手持式网络性能测试仪应用于哪些领域及可以完成什么工作?
  • 分享Python采集99个焦点图,总有一款适合您
  • 基于docker容器化的jenkins2.406升级迁移(jdk8升级jdk11)
  • USB xHCI控制器使用总结
  • 如何在 Linux、Windows 和 Mac 上查找 WiFi 密码?
  • 2023年适合在亚马逊开店吗?
  • 介绍 TensorFlow 的基本概念和使用场景。
  • 2023年建议自考还是成考 两者哪个含金量高
  • redis高级篇 缓存双写一致性之更新策略
  • 对于质量保障,前端职能该做些什么?
  • Oracle SQL 性能优化
  • 激活函数(Activation functions)
  • 《地铁上的面试题》--目录
  • 1929-2022年全球站点的逐月平均气温数据
  • 基础数论实际应用场景
  • 【018】C++的指针数组和数组指针
  • git操作流程
  • 《智能新工厂规划白皮书》:新工厂发展趋势一览
  • leetcode 942. 增减字符串匹配
  • Docker应用部署之Nginx
  • JAVA软件测试(贝泽成熟度模型)
  • Benewake(北醒) 快速实现 TF02-Pro-IIC 与电脑通信操作说明
  • Eclipse教程 Ⅴ
  • 【MySQL】主从复制(两台服务器)