混合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:模板引擎
______________________________________________________________________
🎯 核心工作流
- 意图分析:LLM分析用户查询并选择所需工具
- 并行运行:同时运行选定的工具
- 计分:评估每个结果的相关性、可信度和速度
- 自适应集成:根据复杂程度以不同的方式整合结果
- 简单查询:直接返回 - 复杂查询:集成到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 복잡도 >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请参考。
