Skip to content

ChenyangEngr/RAG_chatbot_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

📚 Local RAG QA Chatbot (本地文档问答机器人)

这是一个基于 RAG (检索增强生成) 技术的本地问答机器人项目。它可以读取本地文件夹中的 PDF 文档,将其转化为向量索引,并利用 OpenAI 的 GPT 模型根据文档内容回答用户的问题。

项目包含一个基于 Gradio 的可视化网页界面,支持多语言问答(系统会自动优化检索词)。

✨ 功能特性

  • 本地文档加载:自动扫描 docs/ 文件夹下的所有 PDF 文件。
  • 向量化存储:使用 OpenAI Embeddings 将文本向量化,并持久化存储在本地 chroma_db/ 中(重启无需重新索引)。
  • 智能检索:使用 LangChain 的 RetrievalQA 链查找最相关的文档片段。
  • 跨语言智能检索 (Cross-Lingual RAG):内置翻译逻辑,将用户问题转化为英文进行检索以提高准确率,最终用用户原语言回答。
  • 可视化界面:提供简洁的 Gradio 聊天窗口。

📂 项目结构

根据截图与代码逻辑,项目文件结构如下:

R/
├── .gradio/                 # Gradio 缓存目录(自动生成)
├── chroma_db/               # 向量数据库持久化目录(自动生成,存储索引数据)
├── docs/                    # 存放PDF 文档(如简历、论文等)
├── my_env/                  # Python 虚拟环境
├── .env                     # 配置文件(存放 API Key)
├── QAchatbot.ipynb          # 主程序代码(Jupyter Notebook)
└── README.md                # 项目说明文档

🛠️ 环境准备

  1. 前置要求 Python 3.8 或更高版本

有效的 OpenAI API Key

  1. 安装依赖 建议在 my_env 虚拟环境中运行。请确保安装以下核心库:
pip install langchain langchain-openai langchain-community langchain-chroma gradio python-dotenv pypdf
  1. 配置 API Key 在项目根目录下创建一个名为 .env 的文件(如果不存在),并添加 OpenAI Key:
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

🚀 快速开始

  1. 准备数据: 将您想要问答的 PDF 文件(例如简历、技术文档、论文)放入 docs/ 文件夹中。

    截图示例中包含:A_Comprehensive_Review...pdf, Henrietta Mitchell resume.pdf 等。

  2. 运行程序: 打开 QAchatbot_updated.ipynb,按顺序执行所有单元格(Cells)。

  3. 初始化索引

    • 首次运行:程序会自动读取 docs/ 中的 PDF,切分文本并构建向量数据库。这可能需要几分钟(取决于文档大小)。

    • 后续运行:程序会检测到 chroma_db 文件夹存在,直接加载已有索引,速度很快。

  4. 开始对话: 代码运行到底部会启动 Gradio 界面(通常地址为 http://0.0.0.0:7860http://localhost:7860)。 在输入框中输入问题,例如:

    • "Henrietta Mitchell 的主要技能是什么?"

    • "总结一下那篇关于 LoRA 的论文。"

⚙️ 核心配置 (在代码中修改)

如果需要调整配置,请在 Notebook 中找到以下变量:

  • DOCS_DIR: 文档存放路径(默认为 "docs")。

  • PERSIST_DIRECTORY: 向量库存储路径(默认为 "chroma_db")。

  • llm: 默认使用 gpt-4o-mini,可根据需要更改模型。

  • chunk_size: 文本切分大小(默认为 1000 字符)。

核心工作流 (Workflow)

为了解决中文提问匹配英文文档准确率低的问题,本项目采用了以下处理逻辑:

  1. Input: 用户输入中文问题(例如:“LoRA 的原理是什么?”)。
  2. Translation: LLM 自动将问题翻译为英文("What is the principle of LoRA?")。
  3. Search: 使用英文问题在向量数据库中检索最相关的文档片段(Chunk)。
  4. Generation: 将 [英文文档片段 + 原始中文问题] 喂给 GPT-4o。
  5. Output: GPT-4o 基于英文资料,用中文生成最终答案。

常见问题

Q: 我添加了新的 PDF,为什么机器人不知道?

A: 如果添加了新文件,目前最简单的方法是删除 chroma_db 文件夹,然后重新运行代码。程序会重新扫描 docs 目录并重建索引。

Q: 启动时报错 ValueError: 请在 .env 文件中设置 OPENAI_API_KEY?

A: 请确保根目录下有 .env 文件,且格式正确(不要有空格或引号包裹 Key)。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published