# LLM-Agent **Repository Path**: aiPros_otter/llm-agent ## Basic Information - **Project Name**: LLM-Agent - **Description**: 基于Graph RAG架构的智能医疗问诊机器人,融合知识图谱、向量检索与多智能体技术。采用Neo4j图数据库和Chroma向量库的混合检索策略,通过四个专业智能体协作处理医疗咨询。具备智能实体识别功能,可自动提取疾病、症状、药物实体并生成Cypher查询。基于LangChain框架实现智能路由选择,支持多格式文档处理和多轮对话,为用户提供专业的医疗健康咨询服务。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2026-03-04 - **Last Updated**: 2026-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🏥 智能医疗问诊机器人 - Graph RAG 技术方案 [![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/downloads/) [![LangChain](https://img.shields.io/badge/LangChain-0.1.14-green.svg)](https://python.langchain.com/) [![Gradio](https://img.shields.io/badge/Gradio-3.48.0-orange.svg)](https://gradio.app/) [![Neo4j](https://img.shields.io/badge/Neo4j-Graph%20Database-red.svg)](https://neo4j.com/) > 基于 **Graph RAG** 架构的智能医疗问诊系统,融合了知识图谱、向量检索、大语言模型和多智能体技术,为用户提供专业、准确的医疗健康咨询服务。 ## 🚀 核心技术亮点 ### 1. 📊 混合检索架构(Graph RAG) - **向量检索**:基于 Chroma/FAISS 的语义相似度检索 - **图数据库检索**:使用 Neo4j 进行结构化医疗知识查询 - **Web 搜索补充**:实时获取最新医疗资讯 - **智能路由**:根据问题类型自动选择最佳检索策略 ### 2. 🧠 多智能体协作系统 ```python # 四大智能体分工协作 agents = { 'generic_func': '通用问答智能体', 'retrival_func': '文档检索智能体', 'graph_func': '知识图谱查询智能体', 'search_func': 'Web搜索智能体' } ``` ### 3. 🔍 智能实体识别与查询生成 - **命名实体识别(NER)**:自动提取疾病、症状、药物实体 - **模板匹配**:12种预定义医疗查询模板 - **Cypher 查询自动生成**:将自然语言转换为图数据库查询语句 - **相似度过滤**:基于语义相似度筛选最相关的查询模板 ### 4. 📚 多格式文档处理 支持多种文档格式的自动解析和向量化: ```python supported_formats = { '.pdf': 'PyMuPDFLoader', '.docx': 'UnstructuredWordDocumentLoader', '.txt': 'TextLoader', '.csv': 'CSVLoader' } ``` ### 5. 🎯 上下文感知对话系统 - **对话历史总结**:智能压缩长对话上下文 - **多轮对话支持**:保持会话连贯性 - **动态上下文补全**:自动补充主语等关键信息 ## 🏗️ 系统架构 ```mermaid graph TB A[用户输入] --> B[Service层] B --> C[Agent智能路由] C --> D[工具选择器] D --> E[通用问答] D --> F[向量检索] D --> G[知识图谱查询] D --> H[Web搜索] F --> I[Chroma向量库] G --> J[Neo4j图数据库] G --> K[实体识别NER] K --> L[Cypher查询生成] E --> M[LLM模型] F --> M G --> M H --> M M --> N[结果整合] N --> O[Gradio界面] ``` ## 💾 技术栈 | 技术类别 | 具体技术 | 版本 | 用途 | |---------|---------|------|------| | **大语言模型** | OpenAI GPT | Latest | 核心推理引擎 | | **向量数据库** | Chroma | Latest | 文档向量存储与检索 | | **图数据库** | Neo4j | Latest | 医疗知识图谱存储 | | **AI 框架** | LangChain | 0.1.14 | 智能体编排与工具链 | | **前端界面** | Gradio | 3.48.0 | 交互式Web界面 | | **向量检索** | FAISS | Latest | 高性能向量相似度搜索 | | **文档处理** | PyMuPDF, Unstructured | Latest | 多格式文档解析 | ## 📦 安装部署 ### 环境要求 - Python 3.8+ - Neo4j 数据库 - OpenAI API Key ### 1. 克隆项目 ```bash git clone https://gitee.com/metahe/llm-agent.git ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ### 3. 环境配置 创建 `.env` 文件并配置以下变量: ```env # OpenAI 配置 OPENAI_API_KEY=your_openai_api_key OPENAI_LLM_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=text-embedding-ada-002 # Neo4j 配置 NEO4J_URI=bolt://localhost:7687 NEO4J_USERNAME=neo4j NEO4J_PASSWORD=your_password # 模型配置 LLM_MODEL=openai EMBEDDINGS_MODEL=openai TEMPERATURE=0.3 MAX_TOKENS=1000 VERBOSE=False ``` ### 4. 数据处理 ```bash # 处理文档并构建向量库 python data_process.py ``` ### 5. 启动应用 ```bash python app.py ``` ## 🔧 核心功能模块 ### 智能体路由系统 ```python class Agent: def parse_tools(self, tools, query): # 基于问题内容智能选择最适合的处理工具 # 支持4种不同类型的查询处理策略 ``` ### 知识图谱查询引擎 ```python def graph_func(self, query): # 1. 实体识别:提取疾病、症状、药物 # 2. 模板匹配:匹配12种查询模板 # 3. Cypher生成:自动生成图查询语句 # 4. 相似度过滤:筛选最相关结果 ``` ### 向量检索系统 ```python def retrival_func(self, query): # 1. 语义相似度搜索 # 2. 相关性阈值过滤 (>0.7) # 3. 上下文整合与答案生成 ``` ## 📊 医疗知识图谱模式 系统支持以下医疗实体关系: ```cypher # 疾病相关查询模板 (:Disease)-[:DISEASE_SYMPTOM]->(:Symptom) # 疾病-症状关系 (:Disease)-[:DISEASE_DRUG]->(:Drug) # 疾病-药物关系 (:Disease)-[:DISEASE_DEPARTMENT]->(:Department) # 疾病-科室关系 (:Disease)-[:DISEASE_CHECK]->(:Check) # 疾病-检查关系 (:Disease)-[:DISEASE_CUREWAY]->(:Treatment) # 疾病-治疗关系 ``` 支持12种预定义查询类型: - 疾病定义、病因、症状、治疗方法 - 就诊科室、预防措施、禁忌食物 - 检查项目、治愈率、并发症 - 药物适应症等 ## 🎯 使用示例 ### 基础医疗咨询 ``` 用户:肺性脑病是什么病? 系统:【肺性脑病】的定义:由各种慢性肺部疾病引起的脑功能障碍... ``` ### 症状诊断 ``` 用户:头痛可能是得了什么病? 系统:可能出现【头痛】症状的疾病:感冒、高血压、偏头痛... ``` ### 治疗建议 ``` 用户:得了感冒吃什么药好得快? 系统:【感冒】的治疗方法:多休息、多喝水... 可用药物:感冒灵、板蓝根... ``` ## 🔬 技术创新点 ### 1. 混合检索策略 - 结合向量检索的语义理解能力 - 利用图数据库的结构化查询优势 - 实现互补性的知识获取 ### 2. 智能体协作模式 - 基于问题类型的智能路由 - 多个专业智能体协同工作 - 提高回答的准确性和专业性 ### 3. 动态模板匹配 - 实体驱动的查询模板生成 - 语义相似度引导的模板选择 - 灵活适配不同问题表达方式 ### 4. 上下文感知对话 - 智能对话历史压缩 - 多轮对话语义连贯 - 动态上下文补全机制 ## 📈 性能优化 - **分块处理**:大文档分批向量化,避免内存溢出 - **相关性过滤**:设置0.7阈值,过滤低质量检索结果 - **缓存机制**:向量库持久化存储,提高查询效率 - **异步处理**:支持并发请求处理 ## 🤝 贡献指南 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 开源协议 本项目采用 MIT 协议 - 详见 [LICENSE](LICENSE) 文件 ## 🙏 致谢 - [LangChain](https://python.langchain.com/) - AI应用开发框架 - [Neo4j](https://neo4j.com/) - 图数据库技术支持 - [OpenAI](https://openai.com/) - 大语言模型服务 - [Gradio](https://gradio.app/) - 快速Web界面构建 --- ⭐ 如果这个项目对您有帮助,请给它一个星标!