RAG -Principle
LLM 局限
- 当设计一个 LLM 问答应用,模型需要处理用户的领域问题时,LLM 通常表现出色
- 但有时提供的答案并不准确,甚至出现错误
- 当用户需要获取实时信息时,LLM 无法及时提供最新的答案
- LLM 在知识、理解和推理方面展现了卓越的能力,在复杂交互场景中表现尤为突出
- LLM 存在无法忽略的局限性
LLM 局限
Limitation | Desc |
---|---|
领域知识缺乏 | LLM 的知识来源于训练数据,主要为公开数据集,无法覆盖特定领域或高度专业化的内部知识 |
信息过时 | LLM 难以处理实时信息,训练过程耗时且成本高昂,模型一旦训练完成,就难以处理和获取信息 |
幻觉 | 模型基于概率生成文本,有时会输出看似合理但实际错误的答案 |
数据安全 | 需要在确保数据安全的前提下,使 LLM 有效利用私有数据进行推理和生成 |
RAG 应运而生
- 将非参数化的外部知识库和文档与 LLM 结合
- RAG 使 LLM 在生成内容之前,能够先检索相关信息
- 弥补 LLM 在知识专业性和时效性的不足
- 在确保数据安全的同时,充分利用领域知识和私有数据
选择 RAG 而不是直接将所有知识库数据交给 LLM
- LLM 能够处理的 Token 数有限,输入过多的 Token 会增加成本
- 提供少量相关的关键信息能够带来更优质的回答
将相关的实时信息转化为知识库内容,并通过检索模块检索到与用户查询高度相关的文档片段,提供更有价值的回答
RAG 定义
- RAG 是一种结合检索和生成的 NLP 模型架构
- RAG 由 Facebook AI 于 2022 提出,主要是为了提升生成式模型在处理开放域问答、对话生成等复杂任务中的性能
- RAG 通过引入外部知识库
- 利用检索模块(Retriever)从大量文档中提取相关信息
- 然后将这些信息传递给生成模块(Generator),从而生成更准确且有用的回答
- 核心思想 - 通过检索与生成的有机结合,弥补 LLM 在处理领域问题和实时任务时的不足
- 传统的生成模型在面对复杂问题时,由于知识储备不足,会生成出错误或无关的回答
- RAG 通过 Retriever 获取相关的背景信息,使 Generator 能够参考这些信息,生成更具可信度和准确性的答案
- 增强了生成内容的准确性,提高了 LLM 在应对特定领域知识和动态信息的适应能力
RAG 应用
RAG 的应用有效优化了 LLM 的固有缺陷,为 LLM 应用提供了更高的可靠性和场景可落地性
- RAG 结合了检索和生成,满足了 LLM 在实时性、高准确性和领域专有知识获取的需求
- 企业或领域的知识管理与问答系统
- RAG 能实时从企业或领域的私有知识库中检索相关信息
- 确保生成的回答不仅准确且符合企业内部的最新动态,解决了 LLM 在处理特定领域知识时的局限性
- 客户支持与智能客服系统
- RAG 可以动态地将用户的询问与最新的产品信息、客服知识等外部数据相结合
- 生成的回答更加贴合用户的实际需求,且满足企业需求
- 医疗 + 金融
- 对数据准确性和时效性有极高的要求,RAG 通过实时检索最新的研究成果、市场动态或文档资料
- RAG 确保生成的内容不仅基于最新信息,同时具备领域专有知识的深度分析能力
RAG 流程
实现了检索和生成的有机结合,显著提升了 LLM 在领域任务中的准确性和实时性
Indexing
将外部文档转化为可检索的向量,支撑后续的检索和生成环节
- 将各类数据源及其格式统一解析为纯文本格式
- 根据文本的语义或结构,将文档分割成为小而语义完整的文本块(chunk)
- 确保系统能够高效检索和利用 chunk 中包含的信息
- 然后,使用文本嵌入模型(embedding model),将这些 chunk 进行向量化
- 生成高维稠密向量,转换为计算机能够理解的语义表示
- 最后,将这些向量存储在向量数据库(vector database)中,并构建索引,完成知识库的构建
Retrieval
连接用户查询和知识库
- 将用户查询(query)通过同样的文本嵌入模型(embedding model)转换为向量表示
- 将查询(query)映射到知识库内容相同的向量空间中
- 通过相似度度量方法,Retriever 从向量数据库中筛选出与 query 最相关的前 K 个 chunk
- 通过相似性搜索,Retriever 有效获取了与 query 切实相关的外部知识
- 为生成阶段提供了精确且有意义的上下文支持
- 这些 chunk 将作为生成阶段输入的一部分
Generation
具备领域知识和私有信息的精确内容生成
- 检索到的文本块(chunk)与原始查询(query)共同构成增强提示词(prompt),输入到 LLM
- LLM 生成精确且具备上下文关联的回答
- 符合用户的查询意图 + 充分利用检索到的上下文信息
RAG vs Fine-tuning
- 在 LLM 专业领域场景的应用中,RAG(外部知识) 和 Fine-tuning(领域能力) 都是可行的选择
- RAG - 外部知识 - 动态响应 - 频繁更新
- 场景 - 频繁处理实时信息、回答复杂且依赖外部知识的问题、回答需具备可解释性
- RAG 通过结合检索系统和生成模型,能够实时利用最新信息,生成上下文相关且准确的答案
- Fine-tuning - 领域能力 - 深度优化推理
- 场景 - 需求稳定、领域知识固定、不需要频繁更新知识库的场景
- 通过使用特定领域的数据对模型进行深度优化
- Fine-tuning 可以提升模型在特定任务或领域中的推理能力,确保输出内容的专业性和一致性
如果即需要利用最新的外部知识,又需要保持高水平的领域推理能力,可以结合 RAG 和 Fine-tuning,以实现最佳的性能和效果
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.