SVCG 开发者文档SVCG 开发者文档
首页
快速开始
  • 前端开发
  • 后端开发
  • API 文档
部署运维
更新日志
GitHub
首页
快速开始
  • 前端开发
  • 后端开发
  • API 文档
部署运维
更新日志
GitHub

RAG系统概述

简介

RAG(检索增强生成)系统是柒世纪视频组AI助手的核心,通过向量化技术和语义搜索为n8n提供精准的知识库上下文,实现更准确的AI回复。

系统架构

┌─────────────────┐
│   用户查询      │
└────────┬────────┘
         │
         ▼
┌─────────────────────────────┐
│  RAG处理层                  │
│ ┌────────────────────────┐ │
│ │ 1. 语义压缩 (输入)     │ │
│ │ 2. Embedding生成       │ │
│ │ 3. 相似度计算          │ │
│ │ 4. 上下文构建          │ │
│ │ 5. 语义压缩 (输出)     │ │
│ └────────────────────────┘ │
└────────┬────────────────────┘
         │
         ▼
┌─────────────────────────────┐
│  知识库                     │
│ ┌────────────────────────┐ │
│ │ SQLite数据库          │ │
│ │ - documents           │ │
│ │ - document_chunks     │ │
│ └────────────────────────┘ │
└──────────────────────────────┘
         │
         ▼
┌─────────────────────────────┐
│  n8n AI处理                 │
│ ┌────────────────────────┐ │
│ │ - 系统提示词注入       │ │
│ │ - 人设约束应用         │ │
│ │ │ - 语义压缩要求       │ │
│ └────────────────────────┘ │
└────────┬────────────────────┘
         │
         ▼
┌─────────────────┐
│   AI回复        │
└─────────────────┘

核心特性

1. 智能文档检索

  • 向量化存储:文档以1024维向量形式存储在SQLite中
  • 余弦相似度:计算查询和文档的语义相似度
  • 分块处理:长文档自动分块(≤1500字符)以提高检索精度

2. 自适应回退机制

  • Deepseek Embedding API:优先使用Deepseek的embedding模型
  • 本地特征向量:当API不可用时自动回退到本地向量生成
  • 无缝切换:用户无需感知API状态变化

3. 语义压缩优化

  • 输入压缩:减少embedding API调用的token消耗
  • 输出压缩:适度压缩最终响应,保留关键信息
  • 成本控制:降低API调用费用

4. 人设约束系统

  • 助理身份:明确定义为"视小姬" - 社团AI小助理
  • 分工管理:严格区分MAD和MMD创作线
  • 版权合规:自动提醒版权政策
  • 学习导向:鼓励用户持续学习和创作

5. 热更新支持

  • 文档动态加载:无需重启即可更新知识库
  • 成员同步:自动将新增成员信息写入markdown
  • 实时刷新:支持API触发的热刷新

工作流程

查询处理流程

1. 用户提交查询
   │
   ▼
2. 验证用户权限和输入
   │
   ▼
3. 检查FAQ精确匹配
   ├─ 如果匹配 → 返回标准答案
   └─ 如果不匹配 → 继续
   │
   ▼
4. 生成查询向量
   ├─ 尝试: Deepseek Embedding API
   └─ 失败: 本地特征向量
   │
   ▼
5. 余弦相似度计算
   │
   ▼
6. 检索Top-K相似文档块
   │
   ▼
7. 构建系统提示词
   ├─ 人设信息
   ├─ 压缩要求
   ├─ 分工约束
   └─ 输出格式指南
   │
   ▼
8. 添加检索上下文
   ├─ 相关文档内容
   └─ 相似度指示
   │
   ▼
9. 发送给n8n处理
   │
   ▼
10. 接收并展示AI回复

性能指标

指标值说明
向量维度1024维与Deepseek保持一致
响应时间~27ms使用本地向量
文档块总数53+可根据知识库增长
单块大小≤1500字符保证检索精度
相似度阈值0.0-1.0无硬性阈值,返回Top-K

配置信息

环境变量 (.env)

# Deepseek API
DEEPSEEK_API_KEY=sk-ebd9b6eaf5144b4489be23b22f103808
DEEPSEEK_EMBEDDING_MODEL=deepseek-chat
DEEPSEEK_API_BASE=https://api.deepseek.com

# RAG配置
RAG_EMBEDDING_DIMENSION=1024
RAG_TOP_K=5

知识库位置

  • 主知识库:backend/AI-data-source/scvg.md
  • 成员信息:backend/AI-data-source/社团成员信息.md
  • 自定义知识:可在AI-data-source目录中添加.md文件

API端点

查询接口

1. RAG查询 (仅检索)

POST /api/rag/query
Content-Type: application/json

{
  "query": "如何保证节奏同步感?",
  "top_k": 5,
  "category": ""
}

响应包含:

  • query: 原始查询
  • relevant_chunks: 匹配到的文档块数组
  • enhanced_query: 增强后的查询(包含上下文)
  • processing_time: 处理时间

2. RAG聊天 (检索+n8n)

POST /api/rag/chat
Content-Type: application/json

{
  "query": "如何保证节奏同步感?",
  "top_k": 5,
  "category": ""
}

响应包含:

  • 所有RAG查询的信息
  • n8n_response: n8n处理后的AI回复

3. 知识库刷新

POST /api/rag/refresh

功能:热加载知识库,无需重启服务

4. 成员信息同步

POST /api/rag/sync-members

功能:将数据库中的新成员信息同步到markdown

5. 知识库状态

GET /api/rag/status

响应:

{
  "status": "healthy",
  "documents_count": 2,
  "chunks_count": 53,
  "last_refresh": "2025-10-16T10:40:39Z"
}

常见问题

Q: 如何添加新的知识库内容?

A: 在backend/AI-data-source/目录中添加.md文件,然后调用/api/rag/refresh刷新。

Q: Embedding API费用是多少?

A: 具体取决于Deepseek的定价。系统已内置压缩机制以减少API调用。

Q: 本地向量和Deepseek向量有什么区别?

A: 精度不同,但系统设计确保两者都能正常工作。本地向量是应急回退。

Q: 如何修改AI助手的人设?

A: 编辑rag_controller.go中的buildSystemPrompt()函数。

Q: 能否自定义压缩参数?

A: 可以,修改rag_service.go中的compressSemanticContent和compressOutput函数。

下一步规划

  • [ ] 支持多语言检索
  • [ ] 接入向量数据库(如Milvus)以支持大规模知识库
  • [ ] 实现对话历史管理
  • [ ] 添加用户反馈评分机制
  • [ ] 支持自定义提示词模板
在 GitHub 上编辑此页
上次更新: 2025/10/16 11:45
贡献者: NingBye