content-chatbot 项目介绍
content-chatbot 是一个令人瞩目的项目,它曾于2023年3月22日登上了知名网站 Hacker News 的首页。此项目专注于将网站内容转化为能够回答问题的聊天机器人,并可以引用文档来源,提供准确的信息。这项技术是通过一个名为 langchain 的工具实现的,该工具使用了 OpenAI API。
项目功能概述
content-chatbot 的核心功能是将网站内容变成一个可互动的聊天机器人,或者一个能够进行问答的代理。通过使用该工具,用户可以将自己的网页内容嵌入到一个问答系统中,这种方式会引用原始的文档来源以增加回答的可靠性。即使是简单的一个代码库,也能展示如何在自己的网站内容上应用这项技术。
主要组件及其功能
content-chatbot 项目包含三个主要的脚本,每个脚本都有其特定的功能:
-
create_embeddings.py:这是整个项目的核心脚本。它通过遍历您网站的
sitemap.xml
文件,来创建内容的嵌入数据。嵌入数据实际上是表达数据语义的向量表示。 -
ask_question.py:在成功创建嵌入文件后(文件名为
faiss_store.pkl
),可以使用这个脚本直接提出问题。脚本会生成问题的回答,并指出对应的网页来源。 -
start_chat_app.py:这个脚本启动一个简单的聊天界面,用户可以在这里提出问题,并根据回答进行跟踪。如果机器人不确定答案,它会做出相应指示。此外,用户还可以根据自己的内容调整查询的相关性。
使用指南
安装项目依赖非常简单,只需通过命令 pip install -r requirements.txt
即可完成。
创建嵌入
当您准备好 OpenAI 的 API 密钥后,您可以使用以下命令来创建嵌入:python create_embeddings.py --sitemap https://path/to/your/sitemap.xml --filter https://path/to/your/blog/posts
。这个操作会生成一个名为 faiss_store.pkl
的文件,用于存储嵌入数据。用户需指定网站的 sitemap.xml
文件路径,还可通过过滤器选项选择开始的 URL 范围。
有关详细的实施步骤,请参阅 这篇博客文章。
解答问题并获取答案来源
准备好嵌入后,可以通过以下方式提问:python ask_question.py "How to detect objects in images?"
。然后会产生一个回答,并给出使用的网址来源。
启动内容聊天机器人
在获得嵌入数据后,可以通过运行 python start_chat_app.py
来启动聊天机器人。此时,您可以提出问题并追问。
Zendesk 内容嵌入功能
content-chatbot 还对 LangChain 聊天机器人项目进行了增强,加入了为 Zendesk 内容创建嵌入的功能。此功能利用了 Zendesk API,从而能够检索网站内容,并构建一个 Faiss 知识库,以改善聊天机器人的响应效果。
工作原理
create_embeddings
脚本的大致流程如下:
- Zendesk API 集成:使用 Zendesk API 获取文章。
- 文本清理:解析 HTML 内容,提取并清理文本以用于嵌入。
- 文本分割:将文本内容分割为较小的块,以提高嵌入处理效率。
- 嵌入创建:利用 OpenAI 的嵌入工具为文本块创建嵌入。
- 构建 Faiss 知识库:用生成的嵌入构建一个 Faiss 存储,方便高效的相似性搜索。
使用方法
用户需要获取并配置 Zendesk API 凭据,以便从 Zendesk 内容创建一个 Faiss 知识库。
运行脚本
可以通过以下命令运行 create_embeddings.py
脚本来生成 Faiss 存储:
python create_embeddings.py -m zendesk -z "https://your.zendesk.api/" #请替换链接
通过这个项目,用户可以轻松地将其网站转化为一个强大的问答系统,支持来源引用并提升用户体验。