当前位置: 首页 > news >正文

RAG技术与应用

RAG技术与应用
如何让大模型的回答更准确?
首先优化提示词,然后补充背景知识RAG,最后是微调SFT

RAG的优势

1 解决指示时效性问题
2 提供参考文献 减少模型幻觉
3 提升专业领域回答质量

RAG的核心原理与流程

Step1 数据预处理
知识库构建:收集并整理文档、网页、数据库等多源数据,构建外部知识库
文档分块:将文档分为适当大小的片段(chunks)可用 300 token, 500 token, 800 token 或1000 token (1个token可以认为是一个字)

向量化处理:使用嵌入模型(如 BGE、M3E、Chinese-Alpaca-2等)将文本转换为向量,并存储在向量数据库中

Step2 检索阶段
查询处理:将用户输入的问题转换为向量,并在向量数据库中进行相似度检索,找到最相关的文本片段
重排序:对检索结果进行相关性排序,选择最相关的片段作为阶段的输入

Step3 生成阶段
上下文组装:将检索到的文本片段与用户问题结合,形成增强的上下文输入
生成回答:大语言模型基于增强的上下文生成最终回答

Embedding模型选择

1 通用文本嵌入模型

BGE-M3(智源研究院):支持100+种语言,适合跨语言长文档检索、高
精度的rag应用,文件大小:2.3G(可运行在个人笔记本上)。

text-embedding-3-large(OpenAI):英文表现优秀,适用英文应用。

Jina-embeddings-vs-small(Jina AI):参数量仅35M,速度快,支持实时推理,适合处理轻量级文本、实时推理任务。

2 中文嵌入模型

xiaobu-embedding-v2:适合中文语义优化,适用中义文本分类、语
义检索。

M3E-Base:针对中文优化的轻量模型,适合本地私有化部署。适用中
文法律、医疗领域检索任务,文件大小 0.4G。

stella-mrl-large-zh-v3.5-1792:处理大规模中文数据能力强,捕
捉细微语义关系,适用中文文本高级语义分析、自然语言处理任务。

3 指令驱动与复杂任务模型

gte-Qwen2-7B-instruct(阿里巴巴);基于Owen大模型微调,支持代
码与文本跨模态检索,适用复杂指令驱动任务、智能问答系统。

E5-mistral-7B(Miscrosoft):基于Mistral架构,Zero-shot任务
表现优异,适用动态调整语义密度的复杂系统。

4 企业级与复杂系统

BGE-M3(智源研究院):适合企业级部署,支持混合检索,适用企业级
语义检索,复杂rag应用。
E5-mistral-7B(Microsoft):适合企业级部署,支持指令微调,适用
需动态调整语义密度的复杂系统。

迪士尼RAG助手

技术选型

1 文档处理库:PyMuPDF(处理PDF),python-docx(处理word),
pytesseract(0CR识别图片中的文字)

2 文本Embedding模型:text-embedding-v4(性能优秀,支持可变
维度)

3 图像Embedding模型:CLIP(由OpenAI开发,能同时理解图片和文
本,是多模态RAG的核心)

4 向量数据库/库:FAISS(作为向量检索引擎的核心,性能极高)
注意:生成环境中,可以使用 Milvus,ChromaDB 或 Elaticssearch,它们提供了完成数据关联服务

5 LLM:Qwen-turbo 用于最终答案的生成

6 流程编排框架:不依赖于 LangChain,直接使用底层API

图像embeding可用的方法

  1. CLIP openai 2021 => 512维向量

2)多模态embedding
如https://modelscope.cn/models/iic/gme-Qwen2-VL-2B-Instruct

  1. Qwen-VL 用大模型进行图像理解
    input是 png图像
    output是 Qwen-VL的理解文字,再把文字embedding

切片策略

知识切片是rag系统的核心环节,直接影响检索质量和回答准确性。

方法1:改进的固定长度切片

在固定长度的基础上,优先在句子边界进行切分,通过重叠机制确保上下文连续性,同时保持长度可控。
实现简单,处理速度快,长度比较统(如chunk size=1000的话,基
本要么是1000要么是800 或900)
适用需要统一处理长度的场景,批量处理大量文档。

方法2:语义切片

按句子、段落等语义单位进行切分。保持语义完整性,避免在句子中间断开。无重叠,按语义边界切分。
语义保持好,检索准确性高,但长度不均匀。
适用自然语言文本,需保持语义完整性的场景。

方法3:LLM语义切片

利用LLM的语义理解能力,在保持语义完整性的同时实现精确的长度控制。
语义理解能力强,分割点选择智能,但依赖GPU,成本较高。
适用高质量要求的场景,复杂语义结构,有预算支持的项目。

方法4:层次切片

基于文档的层次结构(标题 章节 段落)进行切分。便于理解文档的逻
辑关系。
保持文档结构,支持层次化查询,但依赖文档格式。
适用结构化文档(手册、规范),多级标题的文档。

方法5:滑动窗口切片

适用固定大小的窗口(如200行或2000 token)在文本上滑动,产生重
叠的切片。通过重叠机制确保上下文的连续性,减少信息丢失,提高检索召回率。
保持了上下文连续性,减少信息丢失,但产生大量重叠内容。
适用场景:需重叠信息的场景,长文档处理,需保持上下文的场景。

rag常见问题

1 数据准备阶段:
数据质量差
多模态信息
识别过时信息
要进行数据清洗

2 知识检索阶段
内容缺失
top-k的k值如何设定

QA

1 Embedding:对原文进行压缩(embedding_size=1024),方便后续
来进行数据计算,计算两个embedding之间像不像

2 LangChain:是一个框架,封装了很多工具
如 qa chain,在LangChain中专门回答问题的,封装了一些chain type

3 多模态检索:文本检索 图像检索
把用户的query => clip embedding,和图像的clip embedding进
行相似度计算

4 切片策略
文档知识的颗粒度 chunk_size

5 召回
从海量的知识中,快速粗略地找到相关的(比如用关键词),再重排(用rerank模型)

http://www.lryc.cn/news/615965.html

相关文章:

  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘optuna’问题
  • Linux环境下实现简单TCP通信(c)
  • TypeScript 中的as const是什么?
  • Shell脚本-变量的分类
  • 从零到精通:嵌入式BLE开发实战指南
  • Spring Boot 全局异常处理与日志监控实战
  • go加速配置(下载第三方库)
  • 元数据管理与数据治理平台:Apache Atlas 通知和业务元数据 Notifications And Business Metadata
  • 《Go小技巧易错点100例》第三十七篇
  • 元数据管理与数据治理平台:Apache Atlas 分类传播 Classification Propagation
  • SQL(结构化查询语言)的四大核心分类
  • 【机器学习深度学习】Embedding 模型详解:从基础原理到实际应用场景
  • MySQL 处理重复数据详细说明
  • 【软件测试】性能测试 —— 工具篇 JMeter 介绍与使用
  • 联合理解生成的关键拼图?腾讯发布X-Omni:强化学习让离散自回归生成方法重焕生机,轻松渲染长文本图像
  • 如何部署图床系统 完整教程
  • ESP32安装于配置
  • Oracle 19C 查看卡慢的解决思路
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年8月10日第159弹
  • Spring Boot 注解详解:@RequestMapping 的多种用法
  • 第4章 程序段的反复执行4 多重循环练习(题及答案)
  • RAGFlow 拉取 Docker 镜像失败
  • 压力测试等工具源码包编译及使用方法
  • 基于python高校固定资产管理系统
  • 【银行测试】保险项目测试点+测试流程详情(二)
  • scanpy单细胞转录组python教程(一):不同形式数据读取
  • java报错“ NoSuchMethodError:com.test.Service.doRoomList(Ljava/lang/String;)V解决方案
  • Gin 框架错误处理机制详解
  • 线性代数1000题学习笔记
  • 如何将PDF文档进行高效编辑处理!