Project Icon

chatpdflike

基于OpenAI大语言模型API的端到端文档问答功能

chatpdflike项目实现了基于OpenAI大语言模型API的端到端文档问答功能。流程包括文本切割、用户提问、向量搜索和gpt-turbo调用。用户需要配置OPENAI_API_KEY并运行代码,项目提供了详细的安装步骤和效果演示。

ChatPDFLike 项目介绍

ChatPDFLike 是一个用于文档问答的全流程应用,借助大语言模型 API,用户可以通过自然语言与 PDF 文档进行交互。需要注意的是,此项目为独立项目,与 ChatPDF 无官方关联。

概述

ChatPDFLike 是一个网络应用,支持用户上传 PDF 文件,通过自然语言进行查询和交互。它利用诸如 OpenAI 的 GPT-3.5 Turbo 等大型语言模型来理解文档内容,并提供简洁准确的答案。此外,应用还能展示生成答案时使用的文档部分作为参考。

功能

  • PDF 文档上传:可以上传本地 PDF 文件或提供 PDF 文件的 URL。
  • 自然语言交互:用户可以通过自然语言询问 PDF 内容的问题。
  • 精准回答:根据文档内容提供简洁的回答。
  • 来源参考:展示生成答案时引用的文档部分。
  • 多语言模型支持:支持 OpenAI 和 Ollama 模型。
  • 网页界面:简单直观的界面,基于 Flask 和 JavaScript 构建。

工作原理

1. 文本提取与处理

  • 使用 PyPDF2 解析 PDF。
  • 从每页提取文本,并分割为可管理的文本块。

2. 生成嵌入

  • 对于每个文本块,使用选择的嵌入模型生成一个嵌入向量。
  • 这些嵌入表示文本块的语义意义,并用于相似度计算。

3. 用户查询处理

  • 用户提问时,使用相同的嵌入模型生成查询的嵌入向量。

4. 相似度搜索

  • 计算查询嵌入与文本块嵌入之间的余弦相似度。
  • 根据最高的相似度选择最相关的文本块。

5. 构建提示

  • 为语言模型创建提示语,包括用户的问题和最相关的文本块。

6. 生成回答

  • 提示语发送至语言模型(如 GPT-3.5 Turbo)。
  • 模型依据提供的上下文生成用户问题的答案。

7. 显示回答

  • 在网页界面中展示答案。
  • 提供文本块来源作为参考。

入门指南

前置要求

  • Python:需要 3.6 版本或更高。
  • API 密钥
    • OpenAI API Key:使用 OpenAI 模型进行嵌入和答案生成所需。
    • Ollama API Key:可选,使用 Ollama 模型时所需。

安装步骤

  1. 克隆项目代码仓库

    git clone https://github.com/Ulov888/chatpdflike.git
    cd chatpdflike
    
  2. 安装依赖包

    使用 pip 安装所需的包:

    pip install -r requirements.txt
    

API 密钥配置

获取 OpenAI 的 API 密钥:

  1. 注册并获取 API 密钥。

  2. 设置 OPENAI_API_KEY 环境变量:

    export OPENAI_API_KEY="your_openai_api_key"
    

获取 Ollama 的 API 密钥(如果需要):

  1. 获取 Ollama API 密钥。

  2. 设置 OLLAMA_API_KEY 环境变量:

    export OLLAMA_API_KEY="your_ollama_api_key"
    

使用方法

  1. 启动应用

    运行 Flask 应用程序:

    python run.py
    

    默认情况下,服务器将在 http://0.0.0.0:8080 运行。

  2. 访问网页界面

    打开浏览器,导航至 http://localhost:8080

  3. 上传 PDF 文档

    可以选择:

    • 点击“上传 PDF”从计算机选择并上传文件。
    • 输入 PDF 文档的 URL 并点击“提交”。
  4. 与 PDF 互动

    • PDF 处理完毕后,可通过屏幕右侧的聊天界面询问其内容。
    • 在输入框输入问题并点击“发送”。
  5. 查看回答

    • 应用的回复将显示在问题下面。
    • 提供文档来源(如页码和摘录)以提供上下文。

自定义功能

提示策略

可以通过修改 generate_embedding.pyChatbot 类的 create_prompt 方法调整语言模型的行为。策略包括:

  • 论文:总结科学论文。
  • 手册:总结金融手册(中文回答)。
  • 合约:理解合同(中文回答)。
  • 默认:通用策略(中文回答)。

通过修改 create_prompt 中的 strategy 参数选择策略。

限制

  • OpenAI API 费用:使用 OpenAI 的 API 将产生使用费用,需要监控以避免意外开销。
  • PDF 解析:使用 PyPDF2 解析,某些复杂 PDF 可能无法完美处理。
  • 嵌入限制:嵌入的最大令牌限制可能会限制文本块大小或提示的最大长度。
  • 模型回答:回答的质量和准确性取决于语言模型的表现和所检索文本块的相关性。

贡献

欢迎贡献!如有任何建议或改进,随时提交问题或拉取请求。

许可

本项目基于 Apache 许可证 授权。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号