logo
1

基于LangChain 从 BOS 对非结构化数据加载处理

概述

在使用 Langchain 的过程中,通常需要读入的文档都是存放在本地,不便于管理。本文主要介绍如何将存放在BOS 的文档等非结构化数据读入 Langchain 中,用于大模型推理、知识问答等典型场景。

使用指导

话不多说,直接上代码。
版本依赖说明
python >= 3.9
lanchain >= 0.0.331rc1
系统预装
首先需要在本地执行
  
  
  
  
  
  
! pip install langchain
! pip install bce-python-sdk
申请 BOS 访问
在使用之前,需要申请 BOS 的访问,需要准备
  1. bos访问的 ak、sk
  2. bos 服务所在的 endpoint 地址,详见:https://cloud.baidu.com/doc/BOS/s/lk24fdmgt#region
  
  
  
  
  
  
from baidubce.bce_client_configuration import BceClientConfiguration
from baidubce.auth.bce_credentials import BceCredentials
#设置BosClient的EndPoint,Access Key ID和Secret Access Key
bos_host = "${BOS_ENDPOINT}"
access_key_id = "${AK}"
secret_access_key = "${SK}"
加载 BOS 文件并切分
  
  
  
  
  
  
from baidu_bos_directory import BaiduBOSDirectoryLoader
loader = BaiduBOSDirectoryLoader(conf=config, bucket="${BUCKET}", prefix="${PREFIX}")
documents = loader.load()
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=0)
split_docs = text_splitter.split_documents(documents)
构建知识问答
  
  
  
  
  
  
# 文本向量化
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
import sentence_transformers
embeddings = HuggingFaceEmbeddings(model_name="shibing624/text2vec-base-chinese")
embeddings.client = sentence_transformers.SentenceTransformer(embeddings.model_name)
# 向量存储
db = Chroma.from_documents(split_docs, embeddings, persist_directory="./test")
# 持久化
db.persist()
retriever = db.as_retriever()
# 构建知识问答召回
from langchain.llms.baidu_qianfan_endpoint import QianfanLLMEndpoint
llm = QianfanLLMEndpoint(model="ERNIE-Bot", qianfan_ak="${QIANFAN_AK}", qianfan_sk="${QIANFAN_SK}")
qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)
query = "xxxxxxx"
print(qa.run(query))
效果展示
在本文的案例中,上传BOS的文档格式是 pdf 文档,主要内容是对国内AI 大模型领域做了一个完整综述(原文:https://www.jos.org.cn/jos/article/abstract/6121?st=search)
问题和回答描述如下:
  
  
  
  
  
  
问题:OpenAI什么时候发布的ChatGPT?
回答:OpenAI在2022年11月发布了ChatGPT。

总结

本文介绍了基于 LangChain 实现从 BOS 上进行非结构化文档加载、切分、向量化和后续私域知识问答的场景。
评论
用户头像