RAG Engine 是一个可配置的检索增强生成引擎,内置“博物馆智能导览”等示例,可通过 Profile 快速扩展到游戏攻略、小说设定等任何垂直知识库。
- 多 Profile 驱动:
profiles/*.yaml描述知识库、提示词和 UI 话术,可同时加载多个场景并在前端一键切换。 - 完整 RAG 流程:从文档分块、bge-m3 向量化、Milvus 检索到 Prompt 组装、LLM 生成全链路打通。
- 流式对话体验:Gin + SSE 实时返回回答,支持会话记忆,可按场景独立开关。
- 灵活 LLM 后端:统一从 Eino Client 调用,可在 Profile 中切换 Deepseek API 或本地 Ollama。
- 工具级导入器:
cmd/importer根据 Profile 配置完成清洗、分块、批量入库 Milvus,适合持续同步知识库。 - 可观察性:Zap 结构化日志吞吐 importer、server、RAG Service,易于排障与运营。
┌──────────┐ go run cmd/importer ┌─────────────┐
│ 文档目录 │───────────────▶│ Document │
└──────────┘ (分块+向量化) │ Processor │
│ └─────┬───────┘
│ ▼
│ ┌─────────────┐
│ │ Milvus 集合 │
│ └─────────────┘
│ (bge-m3 via Ollama)
▼
前端问题 ──▶ Retriever ──▶ Prompt Manager ──▶ Eino/LLM ──▶ SSE 回传
▲ │
└──── Memory (Redis,可选)
-
准备依赖:Go 1.24+、Ollama(需拉取
bge-m3并可托管推理模型)、Milvus standalone、Redis(开启记忆时使用)、Deepseek API Key(如场景指定云端模型)。 -
配置环境:复制
.env.example,补齐MILVUS_*、REDIS_*、OLLAMA_HOST、DEEPSEEK_*等变量;公共参数写在conf.yaml,场景差异在profiles/*.yaml。 -
导入知识库:
go run ./cmd/importer --profile=museum --data-dir=./data-example/museum
导入器会遍历文件 → 分块 → 批量调用 bge-m3 → 写入
profile.collection_name对应 Milvus 集合。 -
启动服务:
go run ./cmd/server --profiles=museum,game,novel --default=museum
浏览器访问
http://localhost:8080,即可体验多场景检索增强对话。
profiles/museum.yaml展示了文档切片策略、LLM Prompt 模板、RAG Top-K、UI 文案与会话特性开关的完整写法。- 新增场景只需复制模板调整
collection_name和提示词,然后重新导入数据并启动服务。 features.enable_rag、features.enable_memory与conf.yaml的全局设置合并,允许对某个场景单独关闭检索或记忆。
- 前端位于
static/index.html,Server 启动时自动注入当前加载的 Profile 列表。 POST /api/chat/stream输出 SSE 流,问题、用户与 Session ID 均由前端携带,便于服务端做多轮记忆或埋点。
cmd/
importer/ # 文档清洗 + 向量导入工具
server/ # HTTP + SSE 服务入口
internal/
api/ # Gin 路由、鉴权与流式输出
rag/ # 检索、Prompt 构建、LLM 调度、会话写入
retriever/ # 向量检索封装(Milvus + bge-m3)
embedding/ # Ollama Embedding 客户端
vectorstore/ # Milvus SDK 包装
prompt/ # 模板与消息组装
memory/ # Redis 会话记忆
profile/ # Profile 加载与缓存
logger/, config/, container/ 等通用模块
profiles/ # 各场景配置
static/ # 前端聊天页
docs/ # 需求与补充说明
- ✅ importer、检索、RAG Service、流式聊天已全部打通,可直接体验“博物馆”“游戏”“小说”三个示例。
- ✅ 支持 Deepseek 与 Ollama 推理后端,Profile 级别可切换模型、提示词与开关。
- 🚧 规划中:知识库监控、在线热更新 Profile、工具调用扩展。
MIT