Files
AIEC-new/AIEC-server/docs/graph-rag-integration.md
2025-10-17 09:31:28 +08:00

3.4 KiB
Raw Blame History

Graph-RAG-Agent 集成说明

修改概述

本次修改将 yundage-backserver-test 前端从调用原有的 Java 后端localhost:8080改为调用 graph-rag-agent 的 FastAPI 后端localhost:8000使用 naive_search_tool 进行问答。

主要修改

1. chat-service.js 修改

修改文件:/services/api/chat-service.js

基础配置修改

  • 服务地址:从 http://localhost:8080 改为 http://localhost:8000
  • 会话管理添加了会话ID生成功能因为 graph-rag-agent 需要 session_id

API 接口映射

原接口 (Java) 新接口 (graph-rag-agent) 说明
POST /qa/ask POST /chat 同步问答接口
POST /qa/ask/stream POST /chat/stream 流式问答接口
GET /qa/conversations 本地存储 graph-rag-agent 无此接口,改为从 localStorage 读取
GET /qa/conversations/{id}/messages 本地存储 同上

请求参数转换

原请求格式

{
    "mode": "chat",
    "conversationId": null,
    "message": "用户消息"
}

新请求格式

{
    "message": "用户消息",
    "session_id": "生成的会话ID",
    "debug": false,
    "agent_type": "naive_rag_agent",
    "use_deeper_tool": false,
    "show_thinking": false
}

响应格式适配

由于前端期望特定的响应格式,在 sendMessage 方法中进行了格式转换:

// 转换响应格式以适配前端
return {
    code: 200,
    data: {
        conversationId: messageData.conversationId || this.sessionId,
        messageId: Date.now().toString(),
        content: response.answer,
        reference: response.reference,
        kg_data: response.kg_data
    },
    message: '成功'
};

流式响应处理

graph-rag-agent 的流式响应格式与原后端不同,主要修改:

  • 解析 SSE 数据格式从 event: + data: 改为直接解析 data:
  • 处理不同的状态类型:starttokendoneerror
  • 累积完整内容并在完成时返回

2. 新增功能

  • generateSessionId()生成唯一的会话ID
  • clearConversation():调用 graph-rag-agent 的 /clear 接口清除会话历史

3. 本地存储集成

由于 graph-rag-agent 不提供会话列表和历史消息接口,修改为:

  • window.chatManager 读取本地存储的会话数据
  • 保持与原有前端逻辑的兼容性

使用说明

  1. 确保 graph-rag-agent 服务运行在 http://localhost:8000
  2. 确保 Neo4j 数据库已启动并包含必要的数据
  3. 前端会自动使用 naive_rag_agent 进行问答
  4. 会话历史保存在浏览器本地存储中

注意事项

  1. 认证graph-rag-agent 可能不需要 JWT 认证,但代码中保留了 Authorization header 以备后用
  2. 会话管理:每个用户会生成唯一的 session_id格式为 {username}_{timestamp}_{random}
  3. 错误处理:保留了原有的错误处理逻辑,包括认证失败跳转等
  4. 深度搜索:当前配置使用 naive_search_tool如需使用 deep_research_tool可修改 agent_type 参数

后续优化建议

  1. 可以根据用户选择动态切换 agent_typenaive_rag_agent / deep_research_agent
  2. 可以添加配置项控制是否显示思考过程show_thinking
  3. 可以实现真正的会话持久化,而不仅仅依赖浏览器本地存储