ChatWeb
ChatWeb 可以抓取任何网页或从 PDF、DOCX、TXT 文件中提取文本,并生成嵌入式摘要。 它还可以根据文本内容回答你的问题。 它使用基于 gpt3.5 的 chatAPI 和 embeddingAPI 以及矢量数据库实现。
基本原理
基本原理类似于现有项目,如 chatPDF 和自动化客服 AI。
抓取网页 提取文本内容 使用 GPT3.5 的嵌入 API 为每个段落生成矢量 计算每个段落矢量和整个文本矢量之间的相似度得分,以生成摘要 将矢量-文本映射存储在矢量数据库中 从用户输入生成关键词 从关键词生成矢量 使用矢量数据库进行最近邻搜索,返回最相似文本的列表 使用 GPT3.5 的 chat API 设计提示,基于列表中最相似的文本回答用户问题 这个想法是从大量文本中提取相关内容,然后根据这些内容回答问题,可以实现类似于突破 token 限制的效果。
改进之处是基于关键词而不是用户问题生成矢量,从而提高搜索相关文本的准确性。
入门指南
手动安装:
- 安装 Python3
- 运行
git clone https://github.com/SkywalkerDarren/chatWeb.git
下载此仓库 - 运行
cd chatWeb
进入目录 - 将
config.example.json
复制为config.json
- 编辑
config.json
并设置open_ai_key
为你的 OpenAI API 密钥 - 运行
pip3 install -r requirements.txt
安装依赖 - 运行
python3 main.py
启动应用
Docker:
如果你喜欢,也可以使用 Docker 运行此项目:
- 使用
docker-compose build
构建容器(仅当你不计划贡献此仓库时需要) - 将
config.example.json
复制为config.json
并设置所有需要的内容。示例配置已经适合在 Docker 中运行,无需更改,如果你没有在环境变量中设置 OPEN_AI_KEY,可以在此处或稍后运行应用时设置。 - 运行容器:
docker-compose up
- 在浏览器中打开应用:
http://localhost:7860
设置语言
- 编辑
config.json
,将language
设置为English
或其他语言
模式选择
- 编辑
config.json
并将mode
设置为console
、api
或webui
以选择启动模式。 - 在
console
模式下,输入/help
查看命令。 - 在
api
模式下,可以向外提供 API 服务。在config.json
中可以设置api_port
和api_host
。 - 在
webui
模式下,可以提供网页用户界面服务。在config.json
中可以设置webui_port
,默认为http://127.0.0.1:7860
。
流模式
- 编辑
config.json
并将use_stream
设置为true
。
设置温度
- 编辑
config.json
并将temperature
设置为 0 到 1 之间的值。 - 值越小,响应越保守和稳定。值越大,响应越大胆,可能会导致“幻觉”。
OpenAI 代理设置
- 编辑
config.json
并添加open_ai_proxy
为你的代理地址,例如:
"open_ai_proxy": {
"http": "socks5://127.0.0.1:1081",
"https": "socks5://127.0.0.1:1081"
}
安装 PostgreSQL(可选)
- 编辑
config.json
并将use_postgres
设置为true
。 - 安装 PostgreSQL。
- 默认 SQL 地址为
postgresql://localhost:5432/mydb
,你也可以在config.json
中设置。
- 默认 SQL 地址为
- 安装 pgvector 插件。
编译并安装扩展(支持 Postgres 11+)。
git clone --branch v0.4.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
make install # 可能需要 sudo
然后在你要使用的数据库中加载它
CREATE EXTENSION vector;
- 使用 pip 安装依赖:
pip3 install psycopg2
示例
请输入文章链接或 PDF/TXT/DOCX 文档的文件路径:https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/hemingwaye-oldmanandthesea-00-e.html
请等待 10 秒钟,直到网页加载完成。
文章已检索到,文本片段数量为:663
...
=====================================
查询片段使用的 tokens:7219,费用:$0.0028876
查询片段使用的 tokens:7250,费用:$0.0029000000000000002
查询片段使用的 tokens:7188,费用:$0.0028752
查询片段使用的 tokens:7177,费用:$0.0028708
查询片段使用的 tokens:2378,费用:$0.0009512000000000001
已创建 663 个嵌入,使用了 31212 个 tokens,费用:$0.0124848
嵌入已保存。
=====================================
请输入你的查询(/help 查看命令):
TODO
- 支持 pdf/txt/docx 文件
- 支持无数据库的内存存储(faiss)
- 支持流
- 支持 API
- 支持代理
- 添加 Colab 支持
- 添加语言支持
- 支持温度
- 支持 webui
- 其他尚未想到的功能