Skip to content

核心组件

RAG系统由多个核心组件组成,每个组件都承担着重要的功能。了解这些组件的工作原理,对于构建高性能的RAG系统至关重要。

1. 数据处理模块

文本分块

将长文本分割成合适大小的片段,是RAG系统的第一步。

分块策略

  • 固定长度分块:按固定字符数或句子数分割
  • 语义分块:基于段落、章节等语义边界分割
  • 递归分块:先大后小的分层分块策略

分块大小选择

分块大小适用场景优缺点
小(100-500 tokens)精准检索上下文不完整
中(500-1000 tokens)平衡方案通用性强
大(1000+ tokens)上下文丰富检索精度降低

文本清洗

  • 去除噪声和无关信息
  • 标准化文本格式
  • 处理特殊字符和格式

2. 嵌入模块

嵌入模型

将文本转换为向量表示,用于后续的相似度计算。

主流模型

  • OpenAI Embeddings:性能优异,API调用
  • Sentence-BERT:开源,适合本地部署
  • Hugging Face模型:种类丰富,可定制

嵌入维度

  • 768维:平衡性能和精度
  • 1024维:更高精度,计算成本增加
  • 384维:轻量级,适合资源受限场景

3. 检索模块

检索算法

  • 稀疏检索:基于关键词匹配(如TF-IDF、BM25)
  • 密集检索:基于向量相似度(如余弦相似度)
  • 混合检索:结合稀疏和密集检索的优势

检索策略

  • Top-K检索:返回最相似的K个结果
  • 阈值检索:返回相似度超过阈值的结果
  • 多路召回:使用多种检索方法并行检索

4. 生成模块

大语言模型

  • OpenAI GPT:GPT-3.5、GPT-4等
  • 开源模型:LLaMA、ChatGLM等
  • 本地部署:适合数据敏感场景

提示工程

  • 系统提示:定义模型角色和行为
  • 上下文构建:将检索结果组织成上下文
  • 输出格式:指定回答的格式和风格

5. 评估模块

评估指标

  • 检索准确性:Precision、Recall、MRR
  • 生成质量:BLEU、ROUGE、人工评估
  • 端到端性能:回答准确性、响应时间

评估方法

  • 离线评估:使用标注数据集评估
  • 在线评估:A/B测试、用户反馈
  • 持续监控:生产环境性能监控

组件交互流程

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ 文档输入    │────>│ 数据处理    │────>│ 文本分块    │
└─────────────┘     └─────────────┘     └─────────────┘


┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ 向量存储    │<────│ 嵌入模块    │<────│ 文本块      │
└─────────────┘     └─────────────┘     └─────────────┘


┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ 检索结果    │────>│ 上下文构建  │────>│ LLM生成     │
└─────────────┘     └─────────────┘     └─────────────┘


                                         ┌─────────────┐
                                         │ 最终回答    │
                                         └─────────────┘

技术选型建议

轻量级方案

  • 嵌入模型:all-MiniLM-L6-v2
  • 向量数据库:Chroma
  • LLM:GPT-3.5-turbo

企业级方案

  • 嵌入模型:text-embedding-ada-002
  • 向量数据库:Pinecone/Weaviate
  • LLM:GPT-4

开源方案

  • 嵌入模型:Sentence-BERT
  • 向量数据库:Milvus
  • LLM:LLaMA-2/ChatGLM