Skip to content

RAG 问答概览

RAG (Retrieval-Augmented Generation) 是检索增强生成的核心能力,将检索到的知识与大语言模型结合,生成准确、可信的回答。

两种 RAG 模式

Knowledge 服务支持两种 RAG 模式:

模式说明适用场景
Standard RAG固定检索 → 生成流程简单问答、常规检索
Agentic RAGLLM 自主决定检索时机复杂多轮对话、多步推理

对比

维度Standard RAGAgentic RAG
检索时机固定: 收到问题立即检索动态: LLM 自主决定
查询构建历史问题拼接LLM 改写查询词
检索次数1 次多次 (最多 max-tool-calls)
系统提示词固定 RAG 模板Agent 系统提示 + 工具说明
延迟中 (可能多次检索)
灵活性

Standard RAG 流程

详见 Standard RAG


Agentic RAG 流程

详见 Agentic RAG


核心能力

多轮对话

支持历史问题组合检索,保持上下文连贯:

用户: 什么是分布式锁?
助手: 分布式锁是一种...

用户: 它有哪些实现方式?  ← "它"指代"分布式锁"
助手: 分布式锁的实现方式包括...

检索查询: "分布式锁 什么是 分布式锁 它有哪些实现方式"

流式响应

基于 SSE (Server-Sent Events) 的实时流式输出:

data: {"type":"content","content":"分布式锁是"}
data: {"type":"content","content":"分布式系统中用于"}
data: {"type":"content","content":"协调多个节点..."}

深度思考

支持展示模型的推理过程:

【思考过程】
用户问的是分布式锁的高可用,我需要从以下几个方面分析:
1. 单点故障问题
2. 主从切换时的锁丢失
3. Redlock 算法的解决方案...

【回答内容】
分布式锁保证高可用需要考虑以下关键点...

引用溯源

回答关联原始文档,支持原文高亮:

json
{
  "type": "referenced_docs",
  "content": "[{\"documentId\": 1, \"title\": \"分布式锁指南\", \"score\": 0.85}]"
}

模式选择建议

场景推荐模式原因
简单问答Standard延迟低,流程简单
多轮对话 (概念递进)Standard历史拼接已足够
复杂分析AgenticLLM 可多步检索
对比类问题Agentic需多次检索不同知识
探索类问题AgenticLLM 自主决定策略

配置

启用 Agent 模式

Agent 模式由前端请求的 mode 参数控制,无需配置文件启用:

bash
curl -X POST http://localhost:8080/kl/rag/chat \
  -H "Content-Type: application/json" \
  -d '{
    "message": "对比 Redis 和 ZooKeeper",
    "libraryIds": [1],
    "mode": "agent"
  }'

配置文件仅用于调整 Agent 的行为参数:

yaml
molandev:
  rag:
    agent:
      max-tool-calls: 5  # 最大工具调用次数
      enable-query-rewrite: true  # 查询改写
      enable-metadata-extraction: true  # 元数据提取

聊天配置

yaml
molandev:
  ai:
    chat:
      # 最大上下文 Token 数
      max-context-tokens: 32768
      # 最大消息数量
      max-message-count: 20

下一步