基于LangChain 从 BOS 对非结构化数据加载处理
大模型开发/技术交流
- LLM
- 文心大模型
- 社区上线
2023.11.11522看过
概述
在使用 Langchain 的过程中,通常需要读入的文档都是存放在本地,不便于管理。本文主要介绍如何将存放在BOS 的文档等非结构化数据读入 Langchain 中,用于大模型推理、知识问答等典型场景。
使用指导
话不多说,直接上代码。
版本依赖说明
python >= 3.9
lanchain >= 0.0.331rc1
系统预装
首先需要在本地执行
! pip install langchain! pip install bce-python-sdk
申请 BOS 访问
在使用之前,需要申请 BOS 的访问,需要准备
-
bos访问的 ak、sk
-
bos 服务所在的 endpoint 地址,详见:https://cloud.baidu.com/doc/BOS/s/lk24fdmgt#region
from baidubce.bce_client_configuration import BceClientConfigurationfrom baidubce.auth.bce_credentials import BceCredentials#设置BosClient的EndPoint,Access Key ID和Secret Access Keybos_host = "${BOS_ENDPOINT}"access_key_id = "${AK}"secret_access_key = "${SK}"
加载 BOS 文件并切分
from baidu_bos_directory import BaiduBOSDirectoryLoaderloader = BaiduBOSDirectoryLoader(conf=config, bucket="${BUCKET}", prefix="${PREFIX}")documents = loader.load()from langchain.text_splitter import RecursiveCharacterTextSplittertext_splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=0)split_docs = text_splitter.split_documents(documents)
构建知识问答
# 文本向量化from langchain.embeddings.huggingface import HuggingFaceEmbeddingsimport sentence_transformersembeddings = 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 QianfanLLMEndpointllm = 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 上进行非结构化文档加载、切分、向量化和后续私域知识问答的场景。
评论![用户头像](https://bce.bdstatic.com/wenxin-community/images/topic/avatar_default.png)
![用户头像](https://bce.bdstatic.com/wenxin-community/images/topic/avatar_default.png)