项目介绍:ChatPDF
ChatPDF 是一个基于本地语言模型(LLM)实现检索知识问答的开源项目,着重于简化用户与各种文档格式的互动。通过与文档自然对话的方式,用户能够快速从中获取有用的信息。项目采用轻量版的 GraphRAG 架构,支持灵活的模型部署和数据交互,是信息查询和管理的创新工具。
项目特点
-
轻量级GraphRAG实现
ChatPDF 提供local
模式支持的关系图检索和文档问答功能。同时,它兼容多个 API,包括 Openai API、Deepseek API 和 Ollama API,并可扩展支持更多 LLM。项目支持多种嵌入技术,如 openai、text2vec、huggingface 和 sentence-transformers 等,优化了检索和回答的速度和准确性。 -
多样化的模型与格式支持
ChatPDF 支持多种开源 LLM 模型,包括 ChatGLM3-6b、Chinese-LLaMA-Alpaca-2、Baichuan 和 YI 等。同时,它可以处理多种文件格式,如 PDF、docx、markdown 和 txt,极大提高了项目的实用性和兼容性。 -
RAG 精度优化
为提升检索问答的准确率,项目对 RAG 的多个方面进行了优化,包括对于中文和英文混合文档的分块优化、采用 text2vec 中的句子嵌入技术来提升匹配精度,以及使用 rank_BM25 和 reranker 模块进行检索候选集的排序和筛选,从而提升检索结果的准确性。 -
Gradio 对话页面
项目基于 Gradio 开发了 RAG 对话页面,用户可以通过简单的页面流式地与文档进行对话,体验便捷的信息获取过程。
使用指南
安装依赖
用户可以通过运行以下命令来安装项目所需要的依赖:
pip install -r requirements.txt
建议 Windows 用户通过 WSL 在 Linux 上进行安装,以提高性能。
示例运行
可以使用以下命令运行 RAG 示例:
CUDA_VISIBLE_DEVICES=0 python rag.py
启动 Gradio Web 服务
通过运行以下命令来启动 Gradio 的 Web 服务,让用户在浏览器中进行交互:
CUDA_VISIBLE_DEVICES=0 python webui.py --corpus_files data/sample.pdf --share
用户可以在浏览器中访问 http://localhost:7860 来查看并使用 ChatPDF。
GraphRAG 示例
在运行 GraphRAG 示例之前,请设置 OpenAI 的 API 密钥:
export OPENAI_API_KEY="sk-..."
接着通过以下命令启动示例:
python graphrag_demo.py
联系方式
如有建议或改进意见,可通过 GitHub Issues 或邮箱与开发团队联系。此外,开发者还可通过微信加群参与讨论和贡献。
- GitHub Issue:
- 邮件: xuming: xuming624@qq.com
- 微信: 加我微信号:xuming624, 备注:姓名-公司-NLP 进NLP交流群。
授权协议
ChatPDF 在 Apache License 2.0 许可协议下发布,可用于商业用途。使用时请注明项目链接和授权信息。
贡献与关联项目
ChatPDF 项目欢迎社区的贡献和优化。有关医学领域的 GPT 模型训练,可以参考关联项目 MedicalGPT。
ChatPDF 是一个致力于提升文档交互便捷性和信息检索准确性的工具,适合各类需要高效文档处理的用户。