构建本地知识库问答机器人
在这个例子中,我们会介绍如何从我们本地读取多个文档构建知识库,并且使用 Openai API 在知识库中进行搜索并给出答案。
这个是个很有用的教程,比如可以很方便的做一个可以介绍公司业务的机器人,或是介绍一个产品的机器人。
from langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.text_splitter import CharacterTextSplitterfrom langchain import OpenAIfrom langchain.document_loaders import DirectoryLoaderfrom langchain.chains import RetrievalQA# 加载文件夹中的所有txt类型的文件loader = DirectoryLoader('/content/sample_data/data/', glob='**/*.txt')# 将数据转成 document 对象,每个文件会作为一个 documentdocuments = loader.load()# 初始化加载器text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0)# 切割加载的 documentsplit_docs = text_splitter.split_documents(documents)# 初始化 openai 的 embeddings 对象embeddings = OpenAIEmbeddings()# 将 document 通过 openai 的 embeddings 对象计算 embedding 向量信息并临时存入 Chroma 向量数据库,用于后续匹配查询docsearch = Chroma.from_documents(split_docs, embeddings)# 创建问答对象qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=docsearch.as_retriever(), return_source_documents=True)# 进行问答result = qa({"query": "科大讯飞今年第一季度收入是多少?"})print(result)

我们可以通过结果看到,他成功的从我们的给到的数据中获取了正确的答案。
关于 Openai embeddings 详细资料可以参看这个连接: https://platform.openai.com/docs/guides/embeddings
当前内容版权归 liaokongVFX 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 liaokongVFX .