Skip to content

Anooyman/LLMReader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLMReader

LLMReader 是一个基于大语言模型(LLM)的文档分析与智能问答工具,支持 PDF 和网页内容解析,支持多种 LLM provider(Azure OpenAI、OpenAI、Ollama),可自动提取内容、生成摘要、构建向量数据库并支持多轮智能问答。


功能简介

  • 多格式支持:支持 PDF 文档和网页 URL 内容解析
  • 内容提取:支持将 PDF 按页转为图片并用 LLM 提取内容,通过 MCP 服务获取网页信息
  • 智能切分:根据内容长度自动切分文本,确保最佳处理效果
  • 自动摘要:自动分析并输出基于章节的 summary
  • 向量数据库:构建向量数据库,支持高效内容检索
  • 智能问答:支持基于内容的智能问答,推荐带章节名提问以提升检索效果
  • 多轮对话:支持多轮对话,自动缓存和复用历史检索内容,历史对话上下文自动参与智能问答
  • 多 provider 支持:支持多种 LLM provider(Azure OpenAI、OpenAI、Ollama)
  • 数据导出:自动生成简要摘要(brief_summary)和详细摘要(detail_summary)并导出至 data/output 文件夹
  • 智能记忆系统:基于多代理架构的记忆管理,支持智能存储和检索个人信息
  • 多代理协作:通过计划代理和执行代理实现复杂任务的分解和协调执行

更新日志

  • 2025-09-05

    • 新增智能记忆系统(Memory Agent):支持个人信息的智能存储和检索
    • 实现多代理系统架构:通过计划代理和执行代理实现任务分解和协调执行
    • 支持多维度记忆管理:包括时间、地点、人物、标签等元数据组织
    • 基于LangGraph工作流:实现异步状态图处理和智能路由
  • 2025-07-30

    • 新增 Web Reader 功能,支持通过 URL 解析网页内容
    • Web Reader 支持 PDF Reader 的所有功能,包括内容提取、摘要生成和智能问答
    • 通过 MCP 服务获取网页信息,并根据内容长度自动切分
    • 已知问题: 当 URL 内容特别长时,信息拉取可能会错乱,可以重跑获取正确信息; 部分网站无法抓取。 部分依赖包如未安装会导致部分功能不可用,请确保环境依赖完整。
  • 2025-07-23

    • 新增摘要文件导出功能,支持将简要摘要和详细摘要导出至 data/output 文件夹
    • 支持 Markdown 和 PDF 两种导出格式
    • 新增 save_data_flag 控制参数,默认自动导出

环境与依赖

  • Python 3.12+
  • 推荐使用虚拟环境
  • 安装依赖:
pip install -r requirements.txt

如遇依赖缺失报错(如 ImportError: No module named ...),请检查 requirements.txt 并重新安装所有依赖。


目录结构

LLMReader/
├── data/
│   ├── json_data/         # 自动生成的内容JSON文件
│   ├── output/            # 自动导出的摘要文件(按文档分目录)
│   ├── pdf/               # 存放待处理的PDF文件(需手动创建)
│   ├── pdf_image/         # PDF转图片的缓存
│   └── vector_db/         # 自动生成的向量数据库
├── src/
│   ├── config/            # 配置文件目录
│   │   └── settings.py    # 系统配置(含LLM参数)
│   ├── core/              # 核心功能模块
│   │   ├── llm/           # LLM服务相关
│   │   ├── processing/    # 内容处理
│   │   └── vector_db/     # 向量数据库操作
│   ├── readers/           # 解析器模块
│   │   ├── base.py        # 基础解析器
│   │   ├── pdf.py         # PDF解析器
│   │   └── web.py         # 网页解析器
│   ├── services/          # 外部服务接口
│   │   └── mcp_client.py  # MCP服务客户端
│   ├── chat/              # 多代理系统模块
│   │   ├── chat.py        # 多代理基础架构
│   │   └── memory_agent.py # 智能记忆代理
│   ├── ui/                # 用户界面模块
│   └── utils/             # 工具函数
├── .gitignore
├── README.md
├── main.py                # 程序入口
└── requirements.txt       # 依赖列表

output/ 目录说明:每个文档目录下会生成 brief_summary.mdbrief_summary.pdfdetail_summary.mddetail_summary.pdf 四个文件。


智能记忆系统

LLMReader 集成了先进的智能记忆管理系统,为用户提供个人信息的智能存储、检索和管理服务。

核心功能

🧠 智能记忆管理

  • 自动意图识别:智能判断用户输入是存储请求还是检索请求
  • 多维度标记:支持时间、地点、人物、标签等元数据自动提取和组织
  • 语义检索:基于内容语义进行精确的记忆检索,而非简单关键词匹配
  • 上下文增强:结合知识图谱提供丰富的关联信息

技术特性

  • 异步处理:全流程异步执行,支持高并发操作
  • 错误恢复:多层次异常处理和自动恢复机制
  • 状态管理:基于LangGraph的状态图管理,确保数据一致性
  • 扩展性强:模块化设计,支持新代理类型的轻松集成

使用方法

1. 准备 PDF 文件

  • 将 PDF 文件放入 data/pdf/ 目录(首次使用需手动创建该目录)。
  • 如需解析网页,准备好目标 URL

输入 PDF 文件名时无需包含路径,仅需文件名(如 1018686.pdf)。

2. 运行主程序

  • 在项目根目录下运行:
python main.py
  • 程序默认处理预设 PDF 文件(可在代码中修改默认配置)
  • 可根据提示输入 PDF 文件名(无需包含路径)或网页 URL
  • 自动生成简要摘要(brief_summary)和详细摘要(detail_summary)导出至 data/output 文件夹。 每个文档目录下会生成 brief_summary.md、brief_summary.pdf、detail_summary.md、detail_summary.pdf 四个文件。

3. 交互问答

  • 程序自动提取内容并生成章节摘要

  • 建议提问时带上章节名,如:"请解释 Introduction 章节内容"

  • 输入 退出再见byeexitquit 可结束对话。

  • 最好在阅读过已有的总结内容再进行提问对话,会大致理解文章的框架。


LLM Provider 支持

  • 支持 Azure OpenAI、OpenAI、Ollama 三种 LLM provider。
  • 可在 PDFReader 初始化时通过 provider 参数指定(默认 azure)。
  • 相关 API key、endpoint、模型等配置请在 src/config/settings.py 中修改,或通过环境变量设置(如 CHAT_API_KEYCHAT_MODEL_NAME 等)。

缓存与数据存储说明

  • 图片缓存data/pdf_image/,每个 PDF 会生成对应的图片文件夹。
  • 内容缓存data/json_data/,每个 PDF/URL 会生成对应的内容 JSON 文件。
  • 向量数据库data/vector_db/,每个 PDF/URL 会生成对应的向量数据库文件夹。
  • 缓存机制:已处理过的 PDF/URL 会自动复用缓存,加速后续访问。

进阶说明

  • 多轮对话:每轮对话会自动复用历史检索内容,提升上下文连贯性和效率。
  • 章节检索:每次 summary 输出后,建议后续提问时直接引用 summary 中的章节标题,检索更精准。
  • 自定义参数:如需调整分块大小、缓存路径等,可在 config.pypdf.py 构造参数中修改。
  • 异常处理:如遇部分图片内容提取失败,会有详细日志提示,可手动补充 JSON 数据。

常见问题

  • Q: PDF 文件未被识别?
    • 请确保 PDF 文件已放入 data/pdf/ 目录,文件名输入正确。
  • Q: LLM API 报错?
    • 请检查 config.py 中的 API key、endpoint、模型等配置是否正确。
  • Q: 依赖缺失导致 ImportError?
    • 请检查 requirements.txt 是否已完整安装所有依赖。可重新运行 pip install -r requirements.txt
  • Q: 处理速度慢?
    • 首次处理大文件时会较慢,后续会自动复用缓存。
  • Q: 如何切换 LLM provider?
    • PDFReader 初始化时传入 provider 参数,如 PDFReader(provider="openai")
  • Q: 如何使用智能记忆系统?
    • 直接使用自然语言进行存储:"请记录我今天的活动"
    • 使用问句进行检索:"我昨天做了什么?"
    • 系统会自动识别意图并执行相应操作
  • Q: 记忆数据存储在哪里?
    • 向量数据存储在 data/vector_db/ 目录下
    • 元数据信息存储在 data/memory/ 目录下
    • 知识图谱数据通过MCP服务器管理

许可协议

MIT

About

Used to read PDF/URL

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages