项目介绍:ChatWeb
ChatWeb 是一个创新的应用程序,能够从网页上抓取内容或者从 PDF、DOCX 和 TXT 文件中提取文本,并生成嵌入式总结。同时,ChatWeb 可以根据文本内容回答用户的问题。它使用了基于 GPT-3.5 的聊天API和嵌入API,以及一个矢量数据库来实现这一功能。
基本原理
ChatWeb 的工作原理与一些现有项目类似,如 chatPDF 和自动客服 AI。它的工作流程如下:
- 抓取网页内容:首先,它可以抓取任何网页的内容。
- 提取文本:然后,从抓取到的内容中提取文本,或者直接从上传的 PDF、DOCX、TXT 文件中提取文本。
- 生成矢量:使用 GPT-3.5 的嵌入API,为每一段文本生成一个矢量。
- 计算相似度:计算每段文本的矢量与整篇文本的矢量之间的相似度得分,以便生成总结。
- 存储矢量映射:将文本和其对应的向量存储在一个矢量数据库中。
- 关键词生成:根据用户输入的问题生成相关的关键词,并基于这些关键词创建矢量。
- 最近邻搜索:在矢量数据库中执行最近邻搜索,返回与关键词最相似的文本列表。
- 回答问题:使用 GPT-3.5 的聊天API,基于找到的最相似文本回答用户的问题。
这种方法能够从大量文本中提取相关内容,从而回答问题,实现类似于突破 token 限制的效果。此外,ChatWeb 通过基于关键词而不是用户问题生成矢量,提升了搜索相关文本的准确性。
使用指南
手动安装
- 安装 Python3。
- 下载该项目的代码:
git clone https://github.com/SkywalkerDarren/chatWeb.git
- 切换到项目目录:
cd chatWeb
- 复制配置文件模板:
cp config.example.json config.json
并设置 OpenAI API 密钥。 - 安装依赖库:
pip3 install -r requirements.txt
- 启动应用程序:
python3 main.py
使用 Docker
- 构建 Docker 容器:
docker-compose build
- 复制配置文件模板并进行必要的设置。
- 运行容器:
docker-compose up
- 在浏览器中访问应用程序:
http://localhost:7860
设置语言
在 config.json
中,将 language
设置为 English
或其他语言。
模式选择
在 config.json
中,将 mode
设置为 console
、api
或 webui
以选择启动模式。
流式模式
在 config.json
中,将 use_stream
设置为 true
。
设置温度
在 config.json
中,将 temperature
设置为0到1之间的一个值。值越小,响应越保守和稳定;值越大,响应越大胆可能导致“幻觉”。
OpenAI 代理设置
在 config.json
中添加 open_ai_proxy
来设置代理地址。
安装 PostgreSQL(可选)
在 config.json
中,将 use_postgres
设置为 true
。安装 PostgreSQL 并必要时安装 pgvector 插件。
示例
用户可以输入网页链接或者 PDF/TXT/DOCX 文件的路径,程序会加载页面,提取文本并生成相关的嵌入和回答。
待办事项
项目中已实现了对 PDF/TXT/DOCX 文件的支持、内存存储、流式支持、API 支持、代理支持以及其他功能支持。未来计划扩展更多功能。
星标历史
展示了项目的星标趋势图。
ChatWeb 是一个集强大功能于一体的工具,充分利用 GPT-3.5 的潜力来处理和分析大型文本数据,为用户提供智能、快速的文本理解和问题解答服务。