基于langchain向量数据库, 为LLM添加最新的领域知识 在我们使用的chatgpt的时候,往往会遇到一些提示:
截止到2021年9月的训练数据。 因此,我不具备在那个时间点之后发生的事件或获取的信息。 如果你有关于2021年9月之后的问题,我可能就无法提供最新的信息。 因此,为了让LLM模型具备实时的领域知识,将实时的信息添加到模型中变得非常必要。接下来,我们将介绍如何通过LangChain和Chroma向量数据库,为ChatGPT添加最新的领域知识。
步骤如下:
训练文档知识,存到本地向量数据库chroma 根据用户prompt去查询向量数据库, 根据相似度获取相似领域知识 包装领域知识到prompt中 LangChain + Chroma 将文档知识嵌入并存储到本地向量数据库Chroma中。 根据用户的提示查询向量数据库,获取相似领域知识。 代码如下, 我们通过 add_text_embedding来解析文本为向量, 通过query来查询相似度的领域知识
from langchain.embeddings import OpenAIEmbeddings from langchain.text_splitter import CharacterTextSplitter from langchain.vectorstores import Chroma class EmbeddingLocalBackend(object): def __init__(self, path='db'): self.path = path self.vectordb = Chroma(persist_directory=self.path, embedding_function=OpenAIEmbeddings(max_retries=9999999999)) def add_text_embedding(self, data, auto_commit=True): text_splitter = CharacterTextSplitter( separator="\n", chunk_size=1000, chunk_overlap=200, length_function=len, is_separator_regex=False, ) documents = text_splitter.create_documents(data) self.vectordb.add_documents(documents) if auto_commit: self._commit() def _commit(self): self.vectordb.persist() def query(self, query): embedding_vector = OpenAIEmbeddings().