# 加载文档做处理文档的准备工作
loader = UnstructuredFileLoader("test.txt")
# 调用load发开始进行预处理的过程
data = loader.load()
langchain.text_splitter.RecursiveCharacterTextSplitter
RecursiveCharacterTextSplitter
将使用UnstructuredFileLoader
加载之后的样本进行切分,利于对长文本的精细化处理。
其中的两个主要参数chunk_size
和chunk_overlap
的作用如下
chunk_size
:切割的最长长度,该长度的单位是字符不是token长度
chunk_overlap
:切割的重叠长度
以上两个参数均没有默认值需要手动设置
# 初始化加载器
text_splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=0)
# 切割加载的 document
split_docs = text_splitter.split_documents(data)
2.读取本地Embedding模型
考虑到使用在线OpenAI 的Embedding模型消耗的Token过高,决定使用HuggingFaceEmbeddings
加载离线的Embedding模型,代码如下。
from langchain_community.embeddings import HuggingFaceEmbeddings
model_name = r"bce-embedding-vase\_v1"
model_kwargs = {'device': 'cpu'}
encode_kwargs = {'normalize\_embeddings': False}
hf = HuggingFaceEmbeddings(
model_name=model_name,
model_kwargs=model_kwargs,
encode_kwargs=encode_kwargs
)
其中model_name
指代的不是模型名称,是包含训练好的模型在内的配置文件夹名称,在配置文件夹下面包含各类配置文件,且目前需要使用官方支持的模型,如果官方的不支持该模型,虽然在指定路径下存在着模型文件pytorch_model.bin
,会出现以下警告信息,虽然程序没有报错,但是其没有成功加载模型,会提示找不到模型文件然后用平均策略创造了一个新的模型。还有可能出现找不到配置文件等错误,后续评估不同Embedding模型的效果。
No sentence-transformers model found with name ernie-3.0-xbase-zh. Creating a new one with MEAN pooling.
在可用其中使用最多的是bce-embedding-vase_v1
模型,其