前言

随着AI浪潮的到来,涌现了一大批AI应用,其中结合chatpdf的技术搭建本地知识库的应用尤其多,本文主要将重点梳理并介绍了几个与之相关的项目:

•gpt4-pdf-chatbot-langchain:使用新的GPT-4 api为多个大型PDF文件构建chatGPT聊天机器人。可使用langchain与其他AI模块整合,详见项目:Flowise——通过拖放界面构建定制的LLM流程•ChatGPT-pdf:这是一个Chrome扩展,用于将您的ChatGPT历史记录下载为PNG,PDF或创建可分享的链接。•chatWeb:ChatWeb可以爬取任意网页或PDF,DOCX,TXT文件并提取正文,可以生成嵌入式概要,可以根据正文内容回答你的问题。

另外,之前梳理过的有几个与之相关的热门项目,列举如下:

pdfGPT——通过AI与上传的PDF文件进行聊天

Flowise——通过拖放界面构建定制的LLM流程

Quivr - 你的第二个大脑,由AIGC赋能

一、gpt4-pdf-chatbot-langchain

地址

github地址:https://github.com/mayooear/gpt4-pdf-chatbot-langchain

介绍

GPT-4 & LangChain - 为您的PDF文件创建ChatGPT聊天机器人

使用新的GPT-4 api为多个大型PDF文件构建chatGPT聊天机器人。使用的技术栈包括LangChain、Pinecone、Typescript、Openai和Next.js。LangChain是一个框架,使构建可扩展的AI/LLM应用程序和聊天机器人变得更容易。Pinecone是一个向量存储,用于存储嵌入和您的PDF文本,以便以后检索相似的文档。教程视频 如果您有问题,请加入discord 此仓库和教程的视觉指南位于视觉指南文件夹中。如果您遇到错误,请查看此页面下方的故障排除部分。前奏:请确保您已经在系统上下载了节点,并且版本是18或更高。

开发

1.克隆仓库或下载 ZIP 文件

git clone [github https url]

2.安装依赖包

首先运行 npm install yarn -g 来全局安装 yarn(如果尚未安装)。

然后运行:

yarn install

安装完成后,您应该可以看到一个 node_modules 文件夹。

3.设置 .env 文件

•将 .env.example 复制为 .env。您的 .env 文件应该如下所示:

OPENAI_API_KEY=
PINECONE_API_KEY=PINECONE_ENVIRONMENT=
PINECONE_INDEX_NAME=

•访问 openai[1] 获取 API 密钥并将其插入到您的 .env 文件中。•访问 pinecone[2] 创建和获取 API 密钥,并从仪表板中获取环境和索引名称。•在config文件夹中,将PINECONE_NAME_SPACE替换为您希望在运行npm run ingest时在Pinecone上存储您的嵌入的命名空间。稍后将使用此命名空间进行查询和检索。•在utils/makechain.ts链中更改QA_PROMPT以适应您自己的用例。如果您有访问gpt-4 api的权限,将new OpenAI中的modelName更改为gpt-4。请在此仓库外部验证您是否有访问gpt-4 api的权限,否则应用程序将无法工作。

将您的PDF文件转换为嵌入

•此仓库可以加载多个PDF文件•在docs文件夹中,添加您的pdf文件或包含pdf文件的文件夹。•运行脚本npm run ingest来'摄取'并嵌入您的文档。如果您遇到错误,请在下面进行故障排除。•检查Pinecone仪表板以验证您的命名空间和向量已被添加。

运行应用程序

•一旦您验证了嵌入和内容已成功添加到您的Pinecone,您可以运行应用程序npm run dev来启动本地

二、ChatGPT-pdf

地址

github地址:https://github.com/liady/ChatGPT-pdf

介绍

ChatGPT 导出和分享

这是一个Chrome扩展,用于将您的ChatGPT历史记录下载为PNG,PDF或创建可分享的链接。

为什么我要构建它

当你想分享一些聊天记录时,截取整个聊天记录非常困难。这将增加将其导出为图片,PDF文件或创建可分享链接的功能。

如何安装

安装到Chrome/Edge

•从发布页面的最新版本中下载chrome-chatgpt-share.zip。•解压下载的文件以提取扩展文件。•在Chrome/Edge中转到扩展页面(chrome://extensions 或 edge://extensions)。•通过点击页面右上角的切换开关启用开发者模式。•点击“加载未打包的”按钮,并选择你解压扩展文件的目录。•ChatGPT Export现在应该已经安装并在ChatGPT网站(https://chat.openai.com/chat)上激活。

安装到Firefox

•从发布页面的最新版本中下载firefox-chatgpt-share.zip。•转到about:debugging,点击侧边栏上的“This Firefox”。•点击“加载临时插件”按钮,然后选择压缩文件。•ChatGPT Export现在应该已经安装并在ChatGPT网站(https://chat.openai.com/chat)上激活。

如何使用

在与ChatGPT聊天后,你会在页面底部(在“Try Again”旁边)注意到新的按钮:

在页面底部寻找它们:

点击它们可以生成PNG,下载PDF或创建整个聊天的HTML:

路线图

•支持Firefox•允许选择分辨率/文件大小•允许分割为较小的部分图像(例如,用于Twitter)

贡献

感谢adrianmarinwork修复问题。

欢迎PR!

三、chatWeb

地址

github地址:https://github.com/SkywalkerDarren/chatWeb

介绍

ChatWeb

[3]

ChatWeb可以爬取任意网页或PDF,DOCX,TXT文件并提取正文,可以生成嵌入式概要,可以根据正文内容回答你的问题。基于gpt3.5的chatAPI和embeddingAPI,以及向量数据库实现。

基本原理

基本类似于现有的chatPDF,自动化客服AI等项目的原理。

1.爬取网页2.提取正文3.对于每一段落,使用gpt3.5的embeddingAPI生成向量4.每一段落的向量和全文向量做计算,生成概要5.将向量和文本对应关系存入向量数据库6.对于用户输入,生成关键词7.对关键词生成向量8.使用向量数据库进行最近邻搜索,返回最相似的文本列表9.使用gpt3.5的chatAPI,设计prompt,使其基于最相似的文本列表进行回答

新增的使用关键词生成向量相比直接使用问题生成向量,提高了对相关文本的搜索准确度

就是先把大量文本中提取相关内容,再进行回答,最终可以达到类似突破token限制的效果

准备开始

•安装python3•下载本仓库git clone https://github.com/SkywalkerDarren/chatWeb.git•进入目录cd chatWeb•复制config.example.jsonconfig.json•编辑config.json, 设置open_ai_key为你的openai的api key•安装依赖

pip3 install -r requirements.txt

•运行

python3 main.py

模式选择

•编辑config.json, 设置modeconsoleapiwebui作为选择启动模式。•console模式下,输入/help查看指令•api模式下,可对外提供api服务,在config.json中可设置api_portapi_hostwebui模式下,可提供webui服务,在config.json中可设置webui_port,默认为http://127.0.0.1:7860

Stream模式

•编辑config.json, 设置use_streamtrue

temperature设置

•编辑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_postgrestrue•安装postgresql•默认的sql地址: postgresql://localhost:5432/mydb或在config.json中设置•安装pgvector插件

编译并安装扩展(支持Postgres 11+)

git clone --branch v0.4.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
make install # may need sudo

然后在您要使用它的数据库中加载它

CREATE EXTENSION vector;

•pip安装依赖pip3 install psycopg2

Example

Please enter the link to the article or the file path of the PDF/TXT/DOCX document: https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/hemingwaye-oldmanandthesea-00-e.html
Please wait for 10 seconds until the webpage finishes loading.
The article has been retrieved, and the number of text fragments is: 663
...
=====================================
Query fragments used tokens: 7219, cost: $0.0028876
Query fragments used tokens: 7250, cost: $0.0029000000000000002
Query fragments used tokens: 7188, cost: $0.0028752
Query fragments used tokens: 7177, cost: $0.0028708
Query fragments used tokens: 2378, cost: $0.0009512000000000001
Embeddings have been created with 663 embeddings, using 31212 tokens, costing $0.0124848
The embeddings have been saved.
=====================================
Please enter your query (/help to view commands):

TODO

• 支持pdf/txt/docx文件
• 支持免数据库纯内存(faiss)
• 支持Stream
• 支持API
• 支持代理
• 添加colab
• 添加语言支持
• 支持temperature
• 支持webui
• 其他还没想到的

References

[1] openai: https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key
[2] pinecone: https://pinecone.io/
[3] : https://colab.research.google.com/github/SkywalkerDarren/chatWeb/blob/master/example.ipynb