Skip to content

一个基于 LangChain 和 LangGraph 构建的智能问答助手,专为做题辅导场景设计。它能够从题库和教材中检索相关信息,并结合对话历史,为用户提供专业、准确的解答。

Notifications You must be signed in to change notification settings

masterlyj/QA_Knowledge_Agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QA-Knowledge_Agent

一个基于 LangChain 和 LangGraph 构建的智能问答助手,专为做题辅导场景设计。它能够从题库和教材中检索相关信息,并结合对话历史,为用户提供专业、准确的解答。

功能特点

  • 智能检索: 结合题库和对话历史,提供最相关的参考资料。
  • 专业解答: 基于检索到的内容,生成通俗易懂的专业解答。
  • 对话记忆: 维护对话历史,支持上下文相关的问答。
  • 多模型支持: 支持多种大语言模型和文本嵌入模型。
  • 用户友好: 提供基于 Gradio 的直观用户界面。

技术栈

  • LangChain: 用于构建大语言模型应用的核心框架。
  • LangGraph: 用于构建复杂的多步骤工作流程。
  • Gradio: 提供用户界面。
  • Faiss: 用于高效的向量存储和检索。
  • 支持的大语言模型: Google Gemini, DeepSeek
  • 支持的嵌入模型: HuggingFace, Ollama, vLLM

项目结构

QA-Knowledge_Agent/
├── src/
│   ├── agent.py          # 核心问答代理类
│   ├── app.py            # Gradio 应用入口
│   ├── embedding_factory.py  # 文本嵌入模型工厂
│   ├── graph.py          # LangGraph 工作流定义
│   ├── llm.py            # 大语言模型初始化
│   ├── state.py          # 状态定义
│   └── mineru_analysis.py  # 文档分析工具
├── data/
│   ├── inputs/           # 输入文档
│   └── outputs/          # 输出文档
├── pyproject.toml        # 项目配置
└── README.md

安装与运行

  1. 克隆项目:

    git clone <repository-url>
    cd QA-Knowledge_Agent
  2. 安装依赖:

    uv sync
  3. 配置环境变量: 在项目根目录创建 .env 文件,并添加以下内容之一:

    # 使用 Google Gemini
    GOOGLE_API_KEY=your_google_api_key
    
    # 或使用 DeepSeek
    DEEPSEEK_API_KEY=your_deepseek_api_key
  4. 准备数据: 将题库和教材文档放置在 data/inputs/ 目录下。

  5. 运行应用:

    python src/app.py

    应用将在 http://127.0.0.1:7860 启动。

配置说明

嵌入模型配置

src/app.py 中,你可以通过 EMBEDDING_CONFIG 字典来配置嵌入模型:

EMBEDDING_CONFIG = {
    "type": "ollama",
    "model": "qwen3-embedding:0.6b",
    "base_url": "http://localhost:11434"
}

支持的嵌入模型类型:

  • ollama: 使用 Ollama 本地模型
  • hf: 使用 HuggingFace 模型
  • vllm: 使用 vLLM 服务

文档路径配置

src/app.py 中,通过 DOC_PATHS 列表来指定要加载的文档:

DOC_PATHS = [
    "data/outputs/第十届复赛样卷试题解析.md",
    # "data/textbook.md"   # 教材(可选)
]

使用说明

  1. 启动应用: 运行 python src/app.py 后,在浏览器中打开 http://127.0.0.1:7860

  2. 提问: 在输入框中输入你的问题,例如:

    • "为什么这个题目的答案是CD?"
    • "什么是边际违约率?"
    • "看跌期权的执行价格怎么理解?"
  3. 查看回答: 系统会基于题库和对话历史,为你提供专业的解答。

  4. 清空历史: 点击"清空历史"按钮可以清除对话记录。

开发说明

核心组件

  • QuestionAgent: 核心问答代理类,负责初始化模型、管理状态和处理用户问题。
  • LangGraph 工作流: 定义了从检索到生成回答的完整流程。
  • 状态管理: 通过 QuestionState 类型来管理对话状态和历史。

扩展功能

  • 用户画像: 系统支持记录用户的错题和薄弱知识点(见 state.py 中的 mistake_logweak_topics)。
  • 多模型支持: 可以轻松添加新的大语言模型或嵌入模型。

贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目。

About

一个基于 LangChain 和 LangGraph 构建的智能问答助手,专为做题辅导场景设计。它能够从题库和教材中检索相关信息,并结合对话历史,为用户提供专业、准确的解答。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages