RAG 问答概览
RAG (Retrieval-Augmented Generation) 是检索增强生成的核心能力,将检索到的知识与大语言模型结合,生成准确、可信的回答。
两种 RAG 模式
Knowledge 服务支持两种 RAG 模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Standard RAG | 固定检索 → 生成流程 | 简单问答、常规检索 |
| Agentic RAG | LLM 自主决定检索时机 | 复杂多轮对话、多步推理 |
对比
| 维度 | Standard RAG | Agentic 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 | 历史拼接已足够 |
| 复杂分析 | Agentic | LLM 可多步检索 |
| 对比类问题 | Agentic | 需多次检索不同知识 |
| 探索类问题 | Agentic | LLM 自主决定策略 |
配置
启用 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下一步
- 深入了解 Standard RAG 的实现细节
- 了解 Agentic RAG 的自主检索机制
- 了解 流式响应协议 的完整规范