RAG项目第二集:知识图谱embedding到向量数据库

1,097 阅读2分钟

网上很多文章都是讲把数据集嵌入到向量数据库后,直接在页面查询,虽然可以作为学习使用,但是不符合应用场景,用户都知道答案了,为啥还需要问大模型啊。所以笔者认为,应该是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大模型类的构建