发票自动化RAG聊天机器人

一个基于RAG技术的聊天机器人,能够从多个发票自动化文档文件中回答问题。

  • by princykumari
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 princykumari/mcp-server

使用说明

发票自动化RAG聊天机器人

一个由RAG驱动的聊天机器人,可以回答多个发票自动化文档文件中的问题。

建筑

Multiple Docs → Indexer → Vector Store → RAG Pipeline → MCP Server → Chat Interface

特性

✅ 多文档支持:自动索引README.md、walkthrough.md和任何其他.md文件 ✅ 智能上下文检索:在所有文档中查找相关信息 ✅ 消息来源:显示用于回答每个问题的文档 ✅ 技术查询支持:了解有关类、模块和函数的问题 ✅ 漂亮的UI:具有源代码徽章和上下文显示的现代聊天界面

快速开始

1.设置

重要:将文档文件复制到数据文件夹:

# Copy README.md
cp /path/to/your/README.md chatbot/data/README.md

# Copy walkthrough.md
cp /path/to/your/walkthrough.md chatbot/data/walkthrough.md

# Copy any other markdown files
cp /path/to/your/docs/*.md chatbot/data/

系统将自动索引所有 .md 文件在 data/ 文件夹!

2.安装依赖项

# Backend
cd backend
pip install -r requirements.txt

# Frontend (in new terminal)
cd frontend
pip install -r requirements.txt

3.运行应用程序

终端1-后端:

cd backend
python app.py

2号航站楼-前端:

cd frontend
streamlit run app.py

4.访问应用程序

  • 前端:http://localhost:8501
  • 后端API:http://localhost:8000
  • API文件:http://localhost:8000/docs

项目结构

chatbot/
├── backend/          # FastAPI backend with RAG pipeline
│   ├── app.py                 # Main API server with multi-doc support
│   ├── rag_pipeline.py        # Enhanced RAG logic
│   ├── document_indexer.py    # Multi-document indexing
│   ├── mcp_server.py          # MCP orchestrator
│   ├── requirements.txt       # Backend dependencies
│   └── config.yaml            # Configuration
├── frontend/         # Streamlit chat interface
│   ├── app.py                 # Enhanced UI with source display
│   └── requirements.txt       # Frontend dependencies
├── data/            # Documentation files (add your .md files here)
│   ├── README.md              # General project documentation
│   ├── walkthrough.md         # Technical documentation
│   └── *.md                   # Any other markdown files
├── .env.example     # Environment variables template
├── .gitignore       # Git ignore rules
└── README.md        # This file

示例问题

来自README.md:

  • “系统架构是什么?”
  • “如何启动API?”
  • “可用的端点是什么?”
  • “如何安装系统?”

从walkthrough.md:

  • “告诉我ProcessInvoice类的情况”
  • “document_intelligence_service的作用是什么?”
  • “数据库层是如何工作的?”
  • “解释供应商配置模块”

跨文档查询:

  • “我如何部署系统,涉及哪些模块?”
  • “主要组成部分及其实施是什么?”

API终点

  • GET /:API信息
  • POST /query:处理问题(返回答案+来源)
  • GET /health:健康检查
  • GET /documents:列出所有索引文档

技术

  • 后端:FastAPI,Python
  • 前端:流光灯
  • RAG 流程:支持多文档的自定义实现
  • 矢量存储:内存中基于关键字的索引

运作原理

  1. 文档加载:全部 .md 文件在 data/ 启动时自动加载
  2. 索引:文档被拆分为块,并由DocumentIndexer进行索引
  3. 查询处理:用户问题与所有文档块匹配
  4. 上下文检索:检索前5个最相关的块(从任何文档中)
  5. 答案生成:RAG管道使用检索到的上下文生成答案
  6. 消息来源:显示用于回答的文档

添加新文档

只需添加任何 .md 文件到 data/ 文件夹并重新启动后端:

cp your_new_doc.md chatbot/data/
cd backend
python app.py

系统将自动为其建立索引!

故障排除

后端无法启动:

  • 确保你在后端目录中
  • 检查是否安装了所有依赖项: pip install -r requirements.txt

前端无法连接:

  • 确保后端在端口8000上运行
  • 检查前端/app.py中的API_URL

无相关答案:

  • 确保将实际文档复制到数据中/
  • 检查文件是否为有效的markdown(.md扩展名)
  • 重新启动后端以重新索引
  • 使用 /documents 端点,查看索引内容

未显示的来源:

  • 如果没有找到相关内容,这是正常的
  • 试着重新表述你的问题
  • 检查您的文档文件是否包含相关内容

未来的增强功能

  • []添加带有嵌入的语义搜索(OpenAI、句子转换器)
  • []与Claude/GPT集成,以更好地生成答案
  • []添加持久矢量数据库(Chroma、Pinecone)
  • []支持PDF和其他文档格式
  • []添加文档版本控制和更改跟踪
  • []实现缓存以获得更快的响应
  • []添加用户身份验证和查询历史记录

许可证

MIT许可证