混合RAG编排器

基于ReAct模式的智能查询处理系统,通过LLM分析用户意图并并行执行多工具,根据可信度和复杂度提供最优回答。

  • by attackmood
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 attackmood/hybrid-rag-orchestrator

使用说明

混合RAG编排器

📋 项目概述

混合RAG编排器是基于ReAct模式的智能查询处理系统,LLM将对用户的查询进行意图分析,并行运行适当的工具,并根据可信度和复杂度提供最佳答案。

主要功能

  • 🧠 基于LLM的意图分析:通过ReAct自动分析用户查询的意图
  • ⚡ 运行并行工具:同时运行多个工具以优化性能
  • 🔄 自适应工作流:根据复杂度应用不同的答案生成策略
  • 🔗 多源集成:将天气、股票、网络搜索和RAG系统集成在一起

🔧 可用工具

  • 🌤️ 天气:基于MCP的天气信息查询
  • 📈 股票信息:基于MCP的股票信息查询
  • 🔍 网页搜索:谷歌搜索API
  • 📚 知识库:基于RAG的文档搜索
  • 🧮 计算器:数学计算
  • 🤔 推理:基于LLM的逻辑推理

🔧 技术堆栈详细信息

后端框架

  • 快速API:异步Web框架
  • Uvicorn:ASGI服务器
  • 派丹蒂克:数据验证和设置管理

LLM和AI框架

  • LangChain:LLM链和提示管理
  • LangGraph:基于StateGraph的工作流编排
  • 奥拉玛:本地LLM服务器(llama 3.1:8b)

矢量数据库和嵌入

  • 色度数据库:向量存储库(余弦相似度)
  • 句子转换:韩文嵌入模型(jhgan/ko-sbert-nli)
  • PyMuPDF:提取PDF文本

外部服务

  • 谷歌自定义搜索API:Web搜索
  • MCP(模型上下文协议):天气/股票API集成
  • WebSockets:MCP服务器通信

开发与监控

  • 洛古鲁:结构化日志记录
  • Python dotenv:管理环境变量
  • Jinja2:模板引擎

🎯 核心工作流

  1. 意图分析:LLM分析用户查询并选择所需工具
  2. 并行运行:同时运行选定的工具
  3. 计分:评估每个结果的相关性、可信度和速度
  4. 自适应集成:根据复杂程度以不同的方式整合结果
    • 简单查询:直接返回
    • 复杂查询:集成到LLM
sequenceDiagram
    participant U as User
    participant API as FastAPI
    participant HR as HybridRouter
    participant LLM as Ollama LLM
    participant TR as ToolsRegistry
    participant T as Tools
    
    U->>API: POST /api/chat/query
    API->>HR: process_query(query)
    
    Note over HR: 1. 쿼리 분석 단계
    HR->>HR: _calculate_complexity()
    HR->>LLM: _llm_intent_analysis()
    LLM-->>HR: intent_analysis JSON
    
    Note over HR: 2. 도구 선택 단계
    HR->>HR: _select_tools_with_llm()
    HR->>TR: get_tools()
    
    Note over HR: 3. 병렬 실행 단계
    HR->>T: parallel_execution()
    par Tool 1
        T->>T: weather_tool()
    and Tool 2
        T->>T: web_search_tool()
    and Tool 3
        T->>T: knowledge_base_tool()
    end
    
    Note over HR: 4. 점수 부여 단계
    HR->>HR: _score_results()
    
    Note over HR: 5. 결과 통합 단계
    HR->>HR: _integrate_results()
    alt 복잡도 < 0.3
        HR->>HR: 직접 답변 반환
    else 복잡도 > 0.5
        HR->>LLM: _integrate_with_llm()
        LLM-->>HR: 통합된 답변
    else 중간 복잡도
        HR->>HR: 점수 기반 나열
    end
    
    HR-->>API: final_answer
    API-->>U: ChatResponse

💡 技术挑战和解决方案

挑战1:并行处理体系结构设计

  • 问题:一开始只是以同时运行多个工具的结构开始的。
  • 发现:在开发过程中学习ReAct模式和意图分析的重要性
  • 解决:在保留现有并行结构的同时添加基于LLM的意图分析步骤
  • 结果:完成兼具性能和准确性的混合系统

挑战2:实战应用学习内容

  • 问题:学习了ReAct理论,但考虑如何与现有并行结构集成
  • 发现:将目的分析放在最前面,因此并行运行的模式非常有效
  • 解决:通过在LangGraph StateGraph中添加目的分析节点来扩展工作流
  • 结果:实现理论与实践相结合的实用系统

挑战2:动态工具选择的可靠性

  • 问题:LLM可能会选择错误的工具
  • 解决:基于可靠性的备份逻辑+关键字匹配
  • 结果:工具选择准确率达到85%

挑战3:结果整合的复杂性

  • 问题:如何整合多个工具的结果
  • 发现:对所有查询应用相同的集成方法效率低下
  • 解决:基于复杂度的自适应集成策略
  • 结果:直接返回简单查询,集成LLM复杂查询

预览

  • 🌤️ 天气:基于MCP的天气信息查询
  • 📚 知识库:基于RAG的文档搜索

该项目是在AI开发学习过程中创建的玩具项目。 更多详细信息 服务_建筑.md哇 实施_ GIDE.md请参考。