AIGC

行业资讯

AIGC 进阶实战指南(2)

  • 发布时间
  • 点击次数

一、RAG 要解决什么问题?

大模型有两个硬伤:

  1. 知识截止:训练数据有截止日期,不知道最新信息

  1. 幻觉:生成看似合理但完全编造的信息

RAG(Retrieval-Augmented Generation,检索增强生成)的思路很直接:先检索,再生成。给模型一本"参考书",让它只基于检索到的内容回答。

二、RAG 完整流程


三、核心组件深度解析

3.1 Embedding 模型

Embedding 是把文本转成固定长度的向量,向量距离越近,语义相关性越强。

维度

说明

输入

一段文本(词/句/段落)

输出

固定维度数组(如 768 维、1536 维)

核心原理

语义相近的文本,向量空间中距离也近

常用模型

text-embedding-ada-002、bge-large-zh、m3e-base

3.2 文档分块(Chunking)

这是 RAG 最容易被忽视但影响最大的环节。

常见策略

策略

方式

优缺点

固定长度切分

按字数/Token 数切

简单,但可能截断语义

段落切分

按自然段落切

保留语义,但段落长度不一

符号切分

按句号/换行切

平衡,但无语义感知

语义切分

用模型判断语义边界

效果最好,成本最高

经典陷阱——指代丢失

原文:"那头猪是佩奇,那头猪爱玩泥巴。"

按句号切分后变成:

  • Chunk 1:"那头猪是佩奇"

  • Chunk 2:"那头猪爱玩泥巴"

问题:当用户问"佩奇爱干什么"时,Chunk 2 中的"那头猪"已失去与"佩奇"的关联,检索可能失败。

解法:使用滑动窗口 + 重叠区域,或用语义切分模型保留指代关系。

3.3 向量数据库

数据库

特点

Chroma

轻量级,适合原型开发

Milvus

分布式,适合大规模生产

Qdrant

高性能,支持过滤

Pinecone

全托管 SaaS

Weaviate

内置多种模块

选型核心指标:写入吞吐、查询延迟、过滤能力、可扩展性

3.4 检索优化

基础检索:Top-K 最近邻搜索,简单但噪声多(约 15% 无关信息被引入)。

进阶优化

技术手段

说明

Top-N 调参

K 太小漏召回,太大噪声多,需实验调优

意图模型

先判断用户意图,再定向检索

Re-ranking 重排

用 Cross-Encoder 对初检结果精排

混合检索

关键词检索 + 向量检索融合

多路召回

不同分块策略并行检索

四、RAG 的已知局限

问题

说明

缺乏全局视角

"文章中有多少个'我'字"——每个 chunk 都沾边但都不精确

指代关系断裂

分块导致代词与所指对象分离

长文档截断

上下文超 2048 Token 时性能下降

检索噪声

无关文档被召回,干扰生成

更新延迟

知识库更新后,向量索引需重建

五、关系型数据库的另类"RAG"

并非所有场景都适合向量检索。当任务本质是精准匹配而非语义相似时,关系型数据库可能更优。

场景:Agent 执行多个网页子任务,每个子任务有不同的流程、格式和 examples。按子任务关键词查表,比把子任务信息塞进向量库更精准、更可控。

实现思路

  1. 定义表结构:task_id, keywords, workflow, examples, output_format

  2. 用户提问 → 关键词匹配 → 查表获取完整配置

  3. 将配置注入 Prompt 执行


    JK小助手
    转人工 ×