使用说明
代理型RAG MCP(注:RAG可能指某种特定技术或系统,MCP可能指管理控制平台或类似概念,具体含义需根据上下文确定,此处为直译)
一个模块化的检索增强生成(RAG)系统,具备先进的分块处理、多源大型语言模型(LLMs)、强大的数据库集成能力以及多语言问答(英文/阿拉伯文)功能。
特点/功能
- 混合文档分块处理: Docling(支持Markdown格式)在无法处理时自动回退到NLTK,以生成细粒度且适合RAG(检索增强生成)的片段。
- PDF内容提取与问答处理: 对任何PDF文件提问,享受透明分块预览功能。
- 多源大型语言模型(LLM)支持: 本地模型(如Ollama:Mistral、Llama2等)、OpenAI GPT备用方案,以及Transformers(支持英语和阿拉伯语)。
- 网页搜索备用方案: 当大型语言模型/PDF缺少信息时,使用DuckDuckGo、Wikipedia和Serper API获取真实世界的答案。
- 数据库集成: 将问答数据存储在SQL(SQLite)、NoSQL(MongoDB)和Neo4j图数据库中,并提供清晰的来源追踪(例如,“WebSearchAgent - Serper”)。
- 节点链接: 在Neo4j中,问答交互被链接起来以进行会话/序列分析。
- 验证: 基于规则和基于大型语言模型(LLM)的答案验证,特别是针对时间/日期和银行业务相关问题。
- 多语言问答: 自动选择阿拉伯语模型来回答阿拉伯语问题。
- 可扩展的、生产就绪的代码库: 模块化设计,便于添加功能。
快速入门
-
克隆仓库并安装依赖项:
pip install -r requirements.txt -
(可选)安装Ollama以用于本地大型语言模型:
- 从 https://ollama.com/download 下载并运行一个模型:
ollama run mistral
- 从 https://ollama.com/download 下载并运行一个模型:
-
准备您的PDF文件:
- 将您的PDF文件放在
files/目录(例如。,files/questions_english.pdf)。 - 更新文件名中的
main.py或者在需要时通过命令行界面(CLI)进行。
- 将您的PDF文件放在
-
运行应用程序:
python main.py- 当系统提示时,请输入您的问题。
- 该系统将显示数据块预览、答案来源以及验证状态。
- 所有问答内容均保存在SQL、MongoDB和Neo4j中。
-
检查您的数据:
- 使用Neo4j浏览器、SQLite工具或MongoDB Compass来查看问答记录及其关系。
配置
- 编辑
config.yaml对于数据库统一资源标识符(DB URIs)、分块方法以及网络代理设置。 .gitignore排除数据文件(例如。,rag.db), 模型,以及秘密。
要求
- Python 3.9及以上版本
- 见
requirements.txt对于所有依赖项
笔记
- 为了获得最佳的本地大型语言模型(LLM)效果,请使用Ollama并搭配支持的模型(如Mistral、Llama2等)。
- 对于阿拉伯语问答,如果问题为阿拉伯语,系统会自动选择一个阿拉伯语模型。
- 所有答案来源(大型语言模型、网络搜索代理)均被追踪并存储。
- Neo4j节点被链接起来用于会话/序列分析。
- 如果Docling分块处理仅生成一个分块,则会自动使用NLTK分块处理。
高级用法
- 使用CLI选项运行以自定义PDF、配置或显示所有问答:
python main.py --pdf files/questions_english.pdf --show-sql python main.py --show-nosql - 跨数据库导出或比较问答记录以进行分析。
故障排除
- 如果分块处理失败,请检查Docling的安装/版本;自动回退到使用NLTK。
- 对于OpenAI配额错误,请使用Ollama或Transformers。
- 对于缺失的记录,请检查日志中的SQL错误或使用导出脚本进行数据库比较。
如需提出功能请求或寻求帮助,请打开一个议题或联系维护者。