Buster,QA文档聊天机器人!
Buster是一个可以针对任何文档源进行调整的问答聊天机器人。
演示
为了充分了解Buster的功能,你可以体验我们的在线演示。 我们抓取了huggingface 🤗 Transformers的文档,并指导Buster回答与其使用相关的问题。
快速开始
本节旨在帮助你安装和运行Buster的本地版本。 第一步,安装Buster:
注意:Buster需要python>=3.10
pip install buster-doctalk
然后,进入examples文件夹并启动应用。 我们包含了一些来自stackoverflow-ai问题的小型样本数据,你可以用它来测试你的设置:
cd buster/buster/examples
gradio gradio_app.py
这将在本地启动gradio应用。
注意:演示使用chatGPT生成文本和计算嵌入,请确保设置有效的openai API密钥:
export OPENAI_API_KEY=sk-...
生成你自己的嵌入
一旦你的Buster本地版本启动并运行,下一步是导入你自己的数据。
我们将使用buster/examples/
文件夹中的stackoverflow.csv
文件。这与用于生成演示应用嵌入的数据相同。
你首先需要导入文档以准备使用Buster。在这个例子中,我们使用Deeplake的向量存储,但你也可以编写自己的自定义DocumentManager
:
import pandas as pd
from buster.documents_manager import DeepLakeDocumentsManager
# 读取csv
df = pd.read_csv("stackoverflow.csv")
# 为我们的文档生成嵌入并以deeplake格式存储
dm = DeepLakeDocumentsManager(vector_store_path="deeplake_store", overwrite=True)
dm.add(df)
你也可以直接运行脚本:
python generate_embeddings.py --csv stackoverflow.csv
这将生成嵌入并将它们本地保存在deeplake_store
中。
注意:你需要设置有效的openai密钥来计算嵌入:
export OPENAI_API_KEY=sk-...
你只需运行此操作一次。
在.csv文件中,我们期望每行包含["title", "url", "content", "source"]列:
- title:将显示的URL标题
- url:点击标题将重定向到的链接
- source:内容最初的来源(如维基百科、stackoverflow等)
- content:要嵌入的文档纯文本。你有责任适当地分块你的文档。为获得更好的结果,我们建议每块400-600字。
额外配置
适当地提示模型以及调整各种模型参数可能会导致不同的结果。我们使用BusterConfig
对象来跟踪各种Buster配置。在buster/examples/
文件夹中,配置存储在cfg.py
中。修改此配置以更新参数、提示等。
Buster如何工作?
首先,我们将文档解析为片段。对于每个片段,我们使用OpenAI API获得其嵌入。
然后,当用户提出问题时,我们计算其嵌入,并找到与问题余弦相似度最高的文档片段。
最后,我们制作提示:
- 来自文档的最相关片段。
- 工程提示。
- 用户的问题。
我们将提示发送到OpenAI API,并向用户显示答案!
当前可用的模型
- 用于嵌入:"text-embedding-ada-002"
- 用于补全:我们支持"gpt-3.5-turbo"和"gpt-4"
直播
想了解更多信息,你可以观看我们详细解释Buster工作原理的直播!