6个步骤快速构建一个本地知识库AI问答应用

超级欧派课程 2024-04-29 05:54:43

在这篇文章中,我会向大家演示如何使用Python的Streamlit和Embedchain库来构建一个可以让你上传PDF文件,并基于这个文件进行提问的Web应用。底层的AI接口我们选择的是OpenAI,但事实上,你可以根据自己的需要去选择其他的接口。

步骤 1:了解需要用的核心库

导入必要的库

首先,我们需要导入一些必要的库:

• 使用Streamlit来构建Web应用。• 使用Embedchain来实现RAG(Retrieval-Augmented Generation)功能。• 使用tempfile来创建临时文件和目录。

步骤 2:选择合适的 AI接口

接下来,我们需要为Embedchain应用程序选择合适的AI接口。在这次的展示中,我选择了LLM和嵌入供应商为OpenAI。当然,你也可以选择cohere、anthropic或者任何你选择的其他供应商。

我们用到的向量数据库是开源的Chroma DB,但如果你有其他的需求或者个人喜好,其实可以选择任何你喜欢的向量数据库。

选择向量数据库为开源的chroma db(你可以自由选择任何你选择的其他向量数据库)。

步骤 3:设置Streamlit应用程序

Streamlit是一个可以让你仅用Python代码就可以创建用户界面的库,对于这个应用程序,我们将这样做:

• 使用'st.title()'添加一个应用程序的标题。• 使用'st.text_input()'创建一个文本输入框,让用户输入他们的OpenAI API密钥。

步骤 4:初始化Embedchain应用程序

一旦用户输入了OpenAI API密钥,我们就可以开始初始化Embedchain应用程序了。

首先,我们使用'tempfile.mkdtemp()'创建一个向量数据库的临时目录。然后,我们使用'embedchain_bot'函数来初始化Embedchain应用程序。

步骤 5:从用户界面上传PDF文件并将其添加到知识库

我们接下来要做的,是让用户可以上传PDF文件到我们的应用程序,并将它添加到知识库。

这时候,我们要用到'st.file_uploader()'这个函数,它可以创建一个PDF文件的上传器。当用户上传了PDF文件后,我们就创建一个临时文件,并将上传文件的内容写入其中。

步骤6:关于PDF提问并展示答案

最后一个步骤,我们再为用户创建一个输入问题的文本框。

用户输入问题后,我们就可以从Embedchain应用获取答案,并使用'st.write()'来展示得到的答案。

至此,你已经成功创建了一个基于Streamlit和Embedchain的查询应用程序,你可以在这个应用程序中上传自己的PDF文档,并对文档中的内容进行提问,获取答案。

最后:完整代码

我希望这篇文章能对你有所帮助!如果你有任何疑问,或者想要更深入地了解这个应用程序的实现,欢迎参阅我们的完整代码。

如果您对我分享的各种 python 知识点感兴趣,想了解当前 python 社区的动态,python 生产环境最佳实践的知识点,可以关注我的专栏《python 实用技巧》来获取各种技术资料,python 最佳实践的内容。

0 阅读:62

超级欧派课程

简介:感谢大家的关注