Skip to content

Repository files navigation

RAG Engine · 多场景知识导航

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,可选)

快速上手

  1. 准备依赖:Go 1.24+、Ollama(需拉取 bge-m3 并可托管推理模型)、Milvus standalone、Redis(开启记忆时使用)、Deepseek API Key(如场景指定云端模型)。

  2. 配置环境:复制 .env.example,补齐 MILVUS_*REDIS_*OLLAMA_HOSTDEEPSEEK_* 等变量;公共参数写在 conf.yaml,场景差异在 profiles/*.yaml

  3. 导入知识库

    go run ./cmd/importer --profile=museum --data-dir=./data-example/museum

    导入器会遍历文件 → 分块 → 批量调用 bge-m3 → 写入 profile.collection_name 对应 Milvus 集合。

  4. 启动服务

    go run ./cmd/server --profiles=museum,game,novel --default=museum

    浏览器访问 http://localhost:8080,即可体验多场景检索增强对话。

Profile 与定制

  • profiles/museum.yaml 展示了文档切片策略、LLM Prompt 模板、RAG Top-K、UI 文案与会话特性开关的完整写法。
  • 新增场景只需复制模板调整 collection_name 和提示词,然后重新导入数据并启动服务。
  • features.enable_ragfeatures.enable_memoryconf.yaml 的全局设置合并,允许对某个场景单独关闭检索或记忆。

Web 体验

  • 前端位于 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、工具调用扩展。

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages