RAG - Chatbot
Fine-tuning vs RAG
核心诉求 - 实时更新知识库,不需要模型去深度探讨问题,使用已有知识经验去解答问题
Fine-tuning
RAG
知识整合
直接把数据融入到模型参数
存储在外部知识库
知识更新
每次更新内容都需要重新训练模型,更新成本高
只需要在外部知识库插入记录,更新成本低
响应速度
很快,直接给出回答
现在外部知识库进行检索,然后再生成
实时更新
很难做到实时更新
外部知识库可以实时更新
人为干预
只能通过 Prompt 干预
可以通过外部知识库的语料和 Prompt 控制
领域定制
可以针对特定领域进行深度定制
依赖通用模型能力
适合使用 Fine-tuning 的场景
特定场景下的高一致性和定制化
数据量充足且稳定
训练 - 拥有高质量的对话原始数据
微调 - 基于现有对话数据做对话助手
强个性化需求
文言文的理解和输出 - 需要使用大量文言文语料微调后,才能满足需求
高速响应
Fine-tuning 能够直接输出有效内容,而 RAG 需要先检索再生成
LLM
LLM 针对输入是有长度限制的,计量单位为 Token ...
RAG - Chunking + Embedding
概述
Chunking
Documents 经过解析后,通过 Chunking 将信息内容划分为适当大小的 Chunks - 能够高效处理和精准检索
Chunk 的本质在于依据一定的逻辑和语义原则,将长文本拆解为更小的单元
Chunking 有多种策略,各有侧重,选择适合特定场景的 Chunking 策略,有助于提升 RAG 召回率
Embedding
Embedding Model 负责将文本数据映射到高维向量空间,将输入的文档片段转换为对应的嵌入向量
嵌入向量捕捉了文本的语义信息,并存储到向量库中,以便于后续检索
Query 同样通过 Embedding Model 的处理生成 Query 的嵌入向量,在向量库中通过向量检索匹配最相似的文档片段
根据不同的场景,评估并选择最优的 Embedding Model,以确保 RAG 的检索性能符合要求
Chunking影响
Documents 包含丰富的上下文信息和复杂的语义结构
通过 Chunking,模型可以更有效地提取关键信息,并减少不相关内容的干扰
Chunking 的目标
确保每个片段在保留核心语义的同时,具备相对独立的语义完整 ...
RAG - Frameworks
Overview
Retrieval-Augmented Generation (RAG) is an AI framework that enhances the capabilities of large language models (LLMs) by incorporating external knowledge sources.
It helps overcome limitations such as knowledge cutoff dates and reduces the risk of hallucinations in LLM outputs.
RAG works by retrieving relevant information from a knowledge base and using it to augment the LLM’s input, allowing the model to generate more accurate, up-to-date, and contextually relevant responses.
Haystack
Haystac ...
RAG - Data Processing
数据存储
LLM 变成生产力,有两个制约因素 - 交互过程中的长文本 + 内容的实时更新
在传统的应用开发中,数据存储在数据库中,保留了应用的全部记忆
在 AI 时代,向量数据库充当了这一角色
在 RAG 系统中,数据被转换为高维向量形式,使得语言模型能够进行高效的语义相似度计算和检索
在向量数据库中,查找变成了计算每条记录的向量近似度,然后按照分值倒序返回结果
RAG 就如何存储向量的方法论,根据不同的实现策略,衍生出了不同的 RAG 技术
利用图结构表示和检索知识的 GraphRAG
结合知识图谱增强生成能力的 KG-RAG - Knowledge Graph Augmented Generation
AI 应用的数据建模强调的是数据的语义表示和关联,以支持更灵活的查询和推理
高质量的数据处理,不仅影响检索的准确性,还直接决定了 LLM 生成内容的质量和可靠性
Embedding
将所有内容转成文本 + 额外数据(用来关联数据)
选择一个 Embedding 模型,把文本转成向量,并存储到向量数据库中
厂商
LLM
Embedding
国产
百度
文心一言
Embedding- ...
RAG - Methodology
场景识别
分析业务流程,找出业务中依赖大量知识和信息处理的环节
复杂决策环节
在需要多维度信息综合分析与判断的业务流程中,RAG 可以为决策者提供实时的信息支持
使用 LLM 从各种来源的信息提炼出关键点,加权求和 - 压缩和整理非格式化信息
重复性内容生成
企业中有大量重复且标准化的内容生成任务
可以用程序去归纳流程,用 LLM 和 RAG 去填充每个环节
用户交互场景
增加自然语言交互
识别问题,找出流程痛点,并识别 LLM 和 RAG 能发挥的作用
信息碎片化 + 难以系统化输出
使用 LLM 和 RAG 能够通过自动化整合固定信息源,定期获取信息
统一整理(或生成)到统一的知识库,将分散的知识转化为结构化输出
人工处理效率低下
通过 LLM 自动化任务,可以更专注于更有创造力的工作
小步快跑 + 快速迭代 - LLM 技术变化极快
MVP
Minimum viable product
数据驱动的迭代优化
持续收集用户行为数据和反馈,通过 A/B 测试等方法,不断优化系统表现
RAG - Document Parsing
文档解析
文档解析的本质 - 将格式各异、版本多样、元素多种的文档数据,转化为阅读顺序正确的字符串信息
Quality in, Quality out 是 LLM 的典型特征
高质量的文档解析能够从各种复杂格式的非结构化数据中提取出高精度信息
对 RAG 系统的最终效果起到决定性作用
RAG 系统的应用场景主要集中在专业领域和企业场景
除了数据库,更多的数据以 PDF、Word 等多种格式存储
PDF 文件有统一的排版和多样化的结构形式,是最为常见的文档数据格式和交换格式
Quality in, Quality out
LangChainDocument Loaders
LangChain 提供了一套功能强大的文档加载器(Document Loaders)
LangChain 定义了 BaseLoader 类和 Document 类
BaseLoader - 定义如何从不同数据源加载文档
Document - 统一描述不同文档类型的元数据
开发者可以基于 BaseLoader 为特定数据源创建自定义加载器,将其内容加载为 Document 对象
Document Loader 模块是封 ...
RAG - LangChain
Practice
LangChain RAG
https://github.com/langchain-ai/rag-from-scratch
RAG 如何随着长期 LLM 而改变
Is RAG Really Dead?
https://www.youtube.com/watch?v=SsHUNfhF32s
自适应 RAG
根据复杂程度动态地将查询路由到不同的 RAG 方法 - Command-R @ LangGraph
Adaptive RAG
https://www.youtube.com/watch?v=04ighIjMcAI
Code
https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_adaptive_rag_cohere.ipynb
Paper
https://arxiv.org/abs/2403.14403
Adaptive RAG
在循环单元测试中自我纠正检索错误,以确定文档相关性并返回到网络搜索
在 LangGraph 中实现 Mistral 7B + Ollam ...
RAG - In Action
技术选型LangChain
LangChain 是专门为开发基于 LLM 应用而设计的全面框架
LangChain 的核心目标是简化开发者的构建流程,使其能够高效地创建 LLM 驱动的应用
索引文档解析
pypdf 专门用于处理 PDF 文档
pypdf 支持 PDF 文档的创建、读取、编辑和转换,能够有效地提取和处理文本、图像及页面内容
文档分块
RecursiveCharacterTextSplitter 是 LangChain 默认的文本分割器
RecursiveCharacterTextSplitter 通过层次化的分隔符(从双换行符到单字符)拆分文本
旨在保持文本的结构和连贯性,优先考虑自然边界(如段落和句子)
索引 + 检索向量化模型
bge-small-zh-v1.5 是由北京智源人工智能研究院(BAAI)开发的开源向量模型
bge-small-zh-v1.5 的模型体积较小,但仍能提供高精度和高效的中文向量检索
bge-small-zh-v1.5 的向量维度为 512,最大输入长度同样为 512
向量库
Faiss - Facebook AI Similarity Search ...
RAG -Principle
LLM 局限
当设计一个 LLM 问答应用,模型需要处理用户的领域问题时,LLM 通常表现出色
但有时提供的答案并不准确,甚至出现错误
当用户需要获取实时信息时,LLM 无法及时提供最新的答案
LLM 在知识、理解和推理方面展现了卓越的能力,在复杂交互场景中表现尤为突出
LLM 存在无法忽略的局限性
LLM 局限
Limitation
Desc
领域知识缺乏
LLM 的知识来源于训练数据,主要为公开数据集,无法覆盖特定领域或高度专业化的内部知识
信息过时
LLM 难以处理实时信息,训练过程耗时且成本高昂,模型一旦训练完成,就难以处理和获取信息
幻觉
模型基于概率生成文本,有时会输出看似合理但实际错误的答案
数据安全
需要在确保数据安全的前提下,使 LLM 有效利用私有数据进行推理和生成
RAG 应运而生
将非参数化的外部知识库和文档与 LLM 结合
RAG 使 LLM 在生成内容之前,能够先检索相关信息
弥补 LLM 在知识专业性和时效性的不足
在确保数据安全的同时,充分利用领域知识和私有数据
选择 RAG 而不是直接将所有知识库数据交给 LLM
LLM ...
RAG - AI 2.0
AI 技术
做 AI 产品的工程研发需充分掌握 AI 技术
AI 产品从 MVP 到 PMF 的演进过程中会面临非常多的挑战
MVP - Minimum Viable Product - 最小可用产品
PMF - Product-Market Fit - 产品市场契合
要实现 AI 产品的 PMF
首先需要充分了解 AI 技术,明确技术边界,找到合适 AI 技术的应用场景
其次,需要深刻理解业务,用户需求决定产品方向,AI 技术是为业务服务的工具
在验证阶段,优先使用最佳 AI 模型以确保产品满足市场需求,确认后再逐步降低模型成本
坚持业务优先、价值至上的原则,避免纯 AI 科研化,脱离实际场景做 AI 技术选型
RAG
LLM 局限 - 幻觉 + 知识实效性 + 领域知识不足 + 数据安全问题
由 OpenAI ChatGPT 引领的 AI 2.0 LLM 时代,见证了 LLM 在知识、逻辑、推理能力上的突破
Scaling Law、压缩产生智能、边际成本为零为理想中的 AGI
尽管 LLM 功能强大,但仍存在幻觉、知识实效性、领域知识不足以及数据安全问题的局限性 - RAG
文档问答类 ...