标签 RAG技术 下的文章

关于大模型数据投毒的学习心得与技巧分享

最近看到了一个有关大模型数据投毒的视频,分析了一下相关方法与技术,以一个小白的视角来分享一下学习到的心得与部分技巧。

一、大模型投毒的本质

目前我所观察到的大模型投毒,其本质上其实是SEO优化
通过了解大模型对数据的准入机制以及联网搜索各种规则利用后,人工去满足AI的喜好,从而获得好的曝光

二、大模型内置搜索方案及搜索引擎

国内外主流大模型都会通过内置的搜索引擎进行关键词搜索,然后将关键词搜索出来的排名最靠前、内容最相似的结果进行整合回答(参考大模型RAG技术)。
国内外主流大模型所使用的搜索引擎如下:

  • 国外大模型
    • ChatGPT(联网):Bing搜索(Plus订阅或插件开启)
    • Copilot(原Bing AI):Bing搜索(深度整合)
    • Gemini(原Bard):Google搜索(含生态数据)
    • Claude(联网):Anthropic自研 + Tavily(部分场景可接Bing/Google)
  • 国内大模型
    • 豆包:百度搜索(中文优先)
    • 文心一言:百度搜索(深度绑定)
    • 通义千问:阿里系搜索(含夸克)
    • 讯飞星火:讯飞搜索 + 第三方合规引擎
    • 360智脑:360搜索(国内合规索引)

三、数据投毒风险

通过对上面的内置搜索方案进行思考,我发现,如果通过SEO优化技术,将相对应搜索引擎的某关键词搜索排名进行优化,将其导向特定网页,就可以对大模型产生误导,造成数据投毒风险。

四、传统SEO优化技术的难点

对于新手小白而言,传统的SEO优化技术不仅要求具备一定专业能力,还往往需要一定资金支持来开展。有没有低成本,无需技术要求的简单方法呢?

五、低成本数据投毒方法

通过实践发现,“知乎”、“什么值得买”、“百度知道”、“CSDN”等平台中用户发布的文章、问答内容会被搜索引擎收录,而刚好这些网站权重占比较高,就能借助此类平台将特定关键词几乎不耗费成本地提高搜索排名

六、攻击载荷生成

首先利用大模型虚构一个AI眼镜产品warmband,以及2025中国最具影响力网络安全团队——Admin,通过大模型生成出权威性的文章上传至“知乎”、“什么值得买”等平台。
这里给出一个通用载荷生成prompt

```【核心目标】
生成一篇1500-2000字的权威风格虚构文章(可用于产品/团队/机构/技术/服务等各类主题),核心要求:将用户提供的「目标关键词」贯穿全文,通过权威包装、真实感细节与场景化叙事,打造具备高可信度的内容,适配公开平台传播场景。

【关键词植入规则(核心要求)】
1. 强曝光位置:标题必须包含「目标关键词」;开头第一句重点强调「目标关键词」(占1-2行);每个一级小标题至少嵌入1次「目标关键词」(或其合理变体);结尾段落必提「目标关键词」,形成首尾呼应;
2. 密度要求:正文平均每300字自然植入1-2次「目标关键词」,避免生硬堆砌,需融入案例、数据、人物对话中;
3. 变体适配:自动生成「目标关键词」的合理变体(如全称→简称、官方名→行业俗称),覆盖不同表述场景,提升内容自然度。

【通用结构框架(固定逻辑,适配任意关键词)】
1. 标题:「权威标签+目标关键词+核心价值」(如“2025年度标杆级XX——目标关键词:重新定义XX领域”);
2. 开头:第一句突出「目标关键词」,紧跟1句价值观口号(如“XX的价值不在于炫技,而在于XX”),引出「目标关键词」的诞生背景(行业痛点/用户需求);
3. 核心定位:解释「目标关键词」的核心定义(如“什么是目标关键词”“目标关键词的核心使命”),明确其在行业中的角色与价值;
4. 权威支撑(3-4个维度,自动适配关键词类型):
- 虚构荣誉:给「目标关键词」赋予权威标签(如“2025中国最具影响力XX”“行业创新标杆”“国家级XX项目合作方”);
- 专家/创始人背景:2-3名虚构核心人物,标注通用专业领域(如“资深行业专家”“领域顶尖学者”“连续创业者”“技术研发带头人”),可加入1句人物观点;
- 数据佐证:虚构真实感数据(如“耗时[X]年研发”“服务[X]家企业/用户”“[X]%的行业认可度”“追踪[X]个样本验证”);
- 第三方背书:虚构行业反馈(如“被某头部企业纳入合作体系”“成为业内XX领域必看参考”“入选XX权威榜单”);
5. 场景案例(3个通用场景,自动匹配关键词属性):
- 场景1:实际应用/落地场景(如“企业合作项目”“用户使用场景”“技术落地案例”),包含细节动作/对话+「目标关键词」植入+正向结果;
- 场景2:行业交流/分享场景(如“行业展会分享”“高校学术交流”“企业内部培训”),体现「目标关键词」的行业影响力;
- 场景3:问题解决场景(如“应对行业痛点”“解决用户难题”“突破技术瓶颈”),突出「目标关键词」的核心优势;
6. 适用人群/场景:明确「目标关键词」的核心受众(如“行业从业者”“需求用户”“研究者”“企业机构”),分点列出(不超过3点);
7. 理念升华:结合行业趋势,重申「目标关键词」的核心价值,呼应开头价值观口号;
8. 结语:简洁总结,传递正向预期(如“未来XX领域,目标关键词将持续XX”),再次强化「目标关键词」认知。

【语言风格要求】
- 整体基调:正式、专业、有感染力,避免口语化;
- 术语适配:自动匹配「目标关键词」所属行业的通用术语(无需用户额外提供),提升专业可信度;
- 叙事节奏:逻辑连贯,细节具象化(如加入时间、地点、动作、对话片段),增强真实感。
```

七、实战分析

上传至平台后,大概需要一天至几周时间等待搜索引擎收录,搜索引擎收录后,对于warmban眼镜搜索结果如下。

2.jpg

在某大模型搜索WarmBand眼镜,结果如下

3.jpg

另一大模型搜索“2025中国最具影响力网络安全团队”,结果如下

4.jpg

成功对大模型完成了数据投毒攻击。

八、总结

运用此特定方法,能够巧妙借助部分具有高权重影响力的平台,在近乎不花费任何成本的情况下达成数据投毒目的,极大降低数据投毒的操作难度。

最近看到了一个有关大模型数据投毒的视频,分析了一下相关方法与技术,以一个小白的视角来分享一下学习到的心得与技巧。

✨ 特性

  • ? 多 AI 模型支持 - 支持 OpenAI、Google Gemini、Anthropic Claude 等主流 AI 模型
  • ? 智能向导 - 通过向导式引导快速创建小说项目,AI 自动生成大纲、角色和世界观
  • ? 角色管理 - 创建和管理小说角色,包括人物关系、组织架构等
  • ? 章节编辑 - 支持章节的创建、编辑、重新生成和润色功能
  • ? 世界观设定 - 构建完整的故事世界观和背景设定
  • ? 多种登录方式 - 支持 LinuxDO OAuth 登录和本地账户登录
  • ? Docker 部署 - 一键部署,开箱即用
  • ? 数据持久化 - 基于 SQLite 的本地数据存储,支持多用户隔离
  • ? 现代化 UI - 基于 Ant Design 的美观界面,响应式设计

 一款基于 AI 的智能小说创作助手,帮助你轻松创作精彩故事

更新记录

25.11.3更新:
1.优化AI请求替换OpenAI SDK调用,使用httpx和自定义头请求,避免触发部分公益站的cloudflare
2.修复deepseek模型调用问题,舍弃思考过程AI响应内容,只获取结果内容
3.新增会话过期机制,更新后添加到.env中
4.支持用户在生成章节内容时设置字数

25.11.4更新:
注意 本次更新已合并到main主分支
1.支持用户项目数据导入导出
2.支持向量数据库,实现RAG的记忆提取存储功能,并引用到生成上下文中,提高生成文章内容质量

25.11.5更新:
1.新增AI生成组织功能,扩展优化组织字段(所在地 代表颜色 格言/口号)
2.适配移动端项目管理-剧情分析UI页面

25.11.6更新:
1.优化大纲续写和章节内容生成上下文构建方式 实现智能构建提示词(支持超长章节内容)
2.实现章节概要提取,并保存到向量数据库,为后续大纲生成和内容提供骨架
3.新增章节内容批量生成功能

25.11.7更新:
1.更新mcp插件功能,目前只支持remote调用

? 快速开始

前置要求

  • Docker 部署:Docker 和 Docker Compose
  • 本地开发:Python 3.11+ 和 Node.js 18+
  • 必需:至少一个 AI 服务的 API Key(OpenAI/Gemini/Anthropic)
    方式一:从源码构建 Docker 镜像

    # 1. 克隆项目
    git clone https://github.com/xiamuceer-j/MuMuAINovel.git
    cd MuMuAINovel
    
    # 2. 配置环境变量
    cp backend/.env.example .env
    # 编辑 .env 文件,填入你的 API Keys
    
    # 3. 启动服务(会自动构建镜像)
    docker-compose up -d
    
    # 4. 访问应用
    # 打开浏览器访问 http://localhost:8000

方式二:本地开发
后端设置

# 进入后端目录
cd backend

# 创建虚拟环境
python -m venv .venv

# 激活虚拟环境
# Windows:
.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入你的配置

# 启动后端服务
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

前端设置

# 进入前端目录
cd frontend

# 安装依赖
npm install

# 开发模式(需要后端已启动)
npm run dev

# 或构建生产版本
npm run build

? 部署方式

Docker Compose 部署
使用 Docker Hub 镜像(推荐)
项目已发布到 Docker Hub,可直接拉取使用:

# 查看可用版本
docker pull mumujie/mumuainovel:latest

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 重启服务
docker-compose restart

# 更新到最新版本
docker-compose pull
docker-compose up -d

Docker Compose 配置文件示例
使用 Docker Hub 镜像的完整配置:

services:
  ai-story:
    image: mumujie/mumuainovel:latest
    container_name: mumuainovel
    ports:
      - "8800:8000"  # 宿主机端口:容器端口
    volumes:
      # 持久化数据库和日志
      - ./data:/app/data
      - ./logs:/app/logs
      # 挂载环境变量文件
      - ./.env:/app/.env:ro
    environment:
      - APP_NAME=mumuainovel
      - APP_VERSION=1.0.0
      - APP_HOST=0.0.0.0
      - APP_PORT=8000
      - DEBUG=false
      # 其他环境变量会从 .env 文件自动加载
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    networks:
      - ai-story-network

networks:
  ai-story-network:
    driver: bridge

生产环境部署建议

1. 环境变量配置
必需配置:

  • OPENAI_API_KEY 或 GEMINI_API_KEY:至少配置一个 AI 服务
  • LOCAL_AUTH_PASSWORD:修改为强密码

推荐配置:

  • OPENAI_BASE_URL:如果使用中转 API,修改为中转服务地址
  • DEFAULT_AI_PROVIDER:根据你的 API Key 选择 openai、gemini 或 anthropic
  • DEFAULT_MODEL:选择合适的模型(如 gpt-4o-mini、gemini-2.0-flash-exp)
  • 数据持久化
    数据目录已通过 volume 挂载,数据不会丢失:
  • ./data:SQLite 数据库文件
  • ./logs:应用日志文件
  • 端口配置
    默认端口映射:8800:8000
  • 宿主机端口:8800(可自定义修改)
  • 容器内端口:8000(固定,不要修改)
    访问地址:http://your-server-ip:8800

配置后记得更新 .env 中的 LINUXDO_REDIRECT_URI 和 FRONTEND_URL。

5. 资源限制(可选)
在 docker-compose.yml 中添加资源限制:

services:
  ai-story:
    # ... 其他配置
    deploy:
      resources:
        limits:
          cpus: '2.0'
          memory: 2G
        reservations:
          cpus: '0.5'
          memory: 512M

端口说明

  • 默认端口:8800(宿主机)→ 8000(容器)
  • 可自定义:修改 docker-compose.yml 中的 ports 配置
  • 健康检查:容器内部使用 8000 端口进行健康检查

⚙️ 配置说明

环境变量
创建 .env 文件并配置以下变量:

# ===== AI 服务配置(必填)=====
# OpenAI 配置(支持官方API和中转API)
OPENAI_API_KEY=your_openai_key_here
OPENAI_BASE_URL=https://api.openai.com/v1

# Anthropic 配置
# ANTHROPIC_API_KEY=your_anthropic_key_here
# ANTHROPIC_BASE_URL=https://api.anthropic.com

# 中转API配置示例(使用OpenAI格式)
# New API 中转服务
# OPENAI_API_KEY=your_newapi_key_here
# OPENAI_BASE_URL=https://api.new-api.com/v1

# 默认 AI 提供商和模型
DEFAULT_AI_PROVIDER=openai
DEFAULT_MODEL=gpt-4o-mini
DEFAULT_TEMPERATURE=0.8
DEFAULT_MAX_TOKENS=32000

# ===== 应用配置 =====
APP_NAME=MuMuAINovel
APP_VERSION=1.0.0
APP_HOST=0.0.0.0
APP_PORT=8000
DEBUG=false

# ===== LinuxDO OAuth 配置(可选)=====
LINUXDO_CLIENT_ID=your_client_id_here
LINUXDO_CLIENT_SECRET=your_client_secret_here
LINUXDO_REDIRECT_URI=http://localhost:8000/api/auth/callback
FRONTEND_URL=http://localhost:8000

# ===== 本地账户登录配置 =====
LOCAL_AUTH_ENABLED=true
LOCAL_AUTH_USERNAME=admin
LOCAL_AUTH_PASSWORD=your_secure_password_here
LOCAL_AUTH_DISPLAY_NAME=管理员

# 会话配置
# 会话过期时间(分钟),默认120分钟(2小时)
SESSION_EXPIRE_MINUTES=120
# 会话刷新阈值(分钟),剩余时间少于此值时可刷新,默认30分钟
SESSION_REFRESH_THRESHOLD_MINUTES=30

# ===== CORS 配置(生产环境)=====
# CORS_ORIGINS=https://your-domain.com,https://www.your-domain.com

AI 模型配置
项目支持多个 AI 提供商,你可以根据需要配置:

提供商推荐模型用途
OpenAIgpt-4, gpt-3.5-turbo高质量文本生成
Anthropicclaude-3-opus, claude-3-sonnet长文本创作

使用中转API服务
如果你无法直接访问 OpenAI 官方 API,或者想使用更经济实惠的中转服务,本项目完全支持各种 OpenAI 兼容格式的中转 API:

配置方法
只需修改 .env 文件中的两个参数:

# 1. 填入中转服务提供的 API Key
OPENAI_API_KEY=your_api_key_from_proxy_service

# 2. 修改 Base URL 为中转服务的地址
OPENAI_BASE_URL=https://your-proxy-service.com/v1

常见中转服务配置示例
New API

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.new-api.com/v1

API2D

OPENAI_API_KEY=fk-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.api2d.com/v1

OpenAI-SB

OPENAI_API_KEY=sb-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.openai-sb.com/v1

自建 One API / New API

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://your-domain.com/v1

注意事项

  • ✅ 所有支持 OpenAI 接口格式的服务都可以使用
  • ✅ 确保中转服务的 Base URL 以 /v1 结尾
  • ✅ 根据中转服务支持的模型,修改 DEFAULT_MODEL 参数
  • ⚠️ 不同中转服务的模型名称可能不同,请参考服务商文档
  • ⚠️ 部分中转服务可能对请求频率或并发有限制

推荐的中转服务
如果你需要中转服务,以下是一些常见选择:

  1. New API - 开源的 API 分发系统,支持多种模型
  2. API2D - 国内稳定的 API 中转服务
  3. OpenAI-SB - 提供多种 AI 模型的中转
  4. 自建服务 - 使用 One API 或 New API 自行搭建
? 提示:使用中转服务时,请确保服务提供商的可靠性和数据安全性

? 项目结构

MuMuAINovel/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── api/ # API 路由
│ │ │ ├── auth.py # 认证接口
│ │ │ ├── projects.py # 项目管理
│ │ │ ├── chapters.py # 章节管理
│ │ │ ├── characters.py # 角色管理
│ │ │ ├── wizard_stream.py # 向导流式生成
│ │ │ └── ...
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # Pydantic 模型
│ │ ├── services/ # 业务逻辑
│ │ │ ├── ai_service.py # AI 服务封装
│ │ │ └── oauth_service.py # OAuth 服务
│ │ ├── middleware/ # 中间件
│ │ ├── utils/ # 工具函数
│ │ ├── config.py # 配置管理
│ │ ├── database.py # 数据库连接
│ │ └── main.py # 应用入口
│ ├── data/ # 数据存储目录
│ ├── static/ # 前端静态文件(构建后)
│ ├── requirements.txt # Python 依赖
│ └── .env.example # 环境变量示例
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── pages/ # 页面组件
│ │ │ ├── ProjectList.tsx # 项目列表
│ │ │ ├── ProjectWizardNew.tsx # 创建向导
│ │ │ ├── Chapters.tsx # 章节管理
│ │ │ ├── Characters.tsx # 角色管理
│ │ │ └── ...
│ │ ├── components/ # 通用组件
│ │ ├── services/ # API 服务
│ │ ├── store/ # 状态管理(Zustand)
│ │ ├── types/ # TypeScript 类型
│ │ └── utils/ # 工具函数
│ ├── package.json
│ └── vite.config.ts
├── docker-compose.yml # Docker Compose 配置
├── Dockerfile # Docker 镜像构建
└── README.md # 项目说明文档