4. RAG概述
提高大语言模型(LLM)回答的准确性和一致性通常有三种方式:
- prompt优化:prompt优化可以在文本生成和行为控制上提供初步帮助。
- RAG(检索增强生成):RAG侧重补充训练数据中没有的或过时的信息
- fine-tuning(微调):fine-tuning则主要调整模型的行为模式,如语气、回答一致性和语言风格。
OpenAl 这个图就把优化上下文信息内容和LLM 行为优化分两个轴,一个针对 what the model needs to know ,一个针对 how the model needs to act
黑色方块和箭头指的是常见优化LLM accuracy和保持consistent behavior的常规步骤:
1、初始提示 (Prompt):首先从一个基础提示(Prompt)开始。提示是你提供给模型的问题或输入,模型会根据这个提示生成结果
2、添加静态的 Few-Shot示例:Few-shot学习是指在提示中添加几个示例,这些示例展示了你期望的输入-输出关系。通过静态地添加这些示例,你可以提高模型生成结果的一致性。同时可以evals评估测试
3、加入动态检索步骤:通过检索机制,模型可以动态地根据问题获取与之相关的 Few-shot 示例。这有助于提高模型的性能,因为它可以在每次生成时获取到更相关的上下文。
4、准备数据集并进行微调:为了提高模型的一致性,你需要准备一个包含 50 个以上示例的数据集,并在这个数据集上对模型进行微调
5、优化检索和加入事实检查步骤::索机制帮助模型找到更相关的上下文,而事实检査步骤可以帮助检测模型生成的错误(也称为“幻觉”),以确保模型生成的内容更加准确。
6、再次训练模型:在加入了新的检索机制和事实检査步骤后,你可以用增强的输入数据重新训练模型,以进一步提高性能
RAG技术本质
4.1 RAG 是什么
RAG(Retrieval-Augmented Generation)是一种结合了信息检索(Retrieval)与生成式模型(Generation)的 AI 技术框架。
它的核心思想是:
在生成回答之前,先从外部知识库中检索到相关信息,再将这些信息与用户问题一同输入大语言模型,让模型“带着事实”回答问题。
这样,模型的回答不仅更加准确、可解释、实时更新,还能避免模型“幻觉”(hallucination)。
4.2 RAG 的基本流程
RAG 通常分为两个阶段:
1️⃣ 检索阶段(Retrieval)
- 用户输入一个查询(query)。
- 系统通过向量检索(如 FAISS、Milvus、Elasticsearch)在知识库中寻找最相关的文档片段。
- 输出若干条与问题相关的文本内容(通常称为context或evidence)。
2️⃣ 生成阶段(Generation)
- 将检索到的上下文与用户问题一起输入到大语言模型(如 GPT、Llama、Claude)。
- 模型在这些上下文的辅助下生成答案。
4.3 RAG 架构示意
用户问题 ↓ [检索模块] → 检索外部知识库(向量数据库) ↓ 返回相关文档 [生成模块] ← 将问题 + 检索结果输入大模型 ↓ 生成增强回答4.4 RAG 的关键组件
| 组件 | 作用 | 常见实现 |
|---|---|---|
| 文档预处理 | 将知识源(PDF、网页、数据库)拆分成段落块(chunks) | LangChain、LlamaIndex |
| 向量化(Embedding) | 把文本转成向量用于相似度检索 | OpenAI Embeddings、Sentence-BERT、bge-large-zh |
| 向量数据库 | 存储并检索文本向量 | FAISS、Milvus、Pinecone、Chroma |
| 检索策略 | 根据相似度、BM25、RRF 等算法选出上下文 | similarity search、hybrid search |
| 生成模型 | 根据检索结果生成回答 | GPT-4、Llama3、Claude、Qwen |
| Prompt 模板 | 控制生成阶段的上下文格式 | “Context + Question + Instruction” 模板 |