网上很多文章都是讲把数据集嵌入到向量数据库后,直接在页面查询,虽然可以作为学习使用,但是不符合应用场景,用户都知道答案了,为啥还需要问大模型啊。所以笔者认为,应该是it或者业务部门构建企业的数据集后,先embdding到向量数据库内,在给大模型的提示中,写明,让大模型根据检索数据回答。
第一步:构建数据集
根据企业自身情况,构建高质量数据集,格式不限,网上有多种,如果是作为智能客服使用,推荐用instruction input output这个类型数据格式。
第二步:编写python代码
1
我们使用langchain架构,所以首先import相关包文件,如下
from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.embeddings.sentence_transformer import (
SentenceTransformerEmbeddings,
)
from langchain.vectorstores import Chroma
本项目我们使用SentenceTransformerEmbeddings和Chroma轻量级向量数据库
2
加载数据集
filepath = '/***' #你本地文件及地址
loader = TextLoader(filepath, encoding='utf-8')
text = loader.load()
3
分割数据集
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=100,
chunk_overlap=0,
separators=["},\n"],
length_function=len
)
split_docs = text_splitter.split_documents(text)
4
嵌入数据集并永久存储到本地
embedding_function = SentenceTransformerEmbeddings(model_name="shibing624/text2vec-base-chinese")
vectorstore = Chroma.from_documents(split_docs, embedding_function, persist_directory="/") # 本地存储到向量数据库的地址,换成你自己的
vectorstore.persist()
第三步:测试
# 测试是否嵌入成功
query = "你是谁?" #测试问句
doc = vectorstore.similarity_search(query)
print(doc[0].page_content)
如果测试和回答没有问题,说明数据集已经成功embedding到向量数据库了,可以生成一个后缀名为.py的文件,后续数据集如果需要更新,可直接python *.py 执行即可。
这个项目代码我已经开源到GitHub上了,可以点这个链接,直接下载整个项目代码:github.com/davidhandso… 里面的Embeddings.py,就是以上的代码
接下来,第三集:自定义LLM大模型类的构建