RAG 检索增强生成

Embedding模型选择

根据MTEB榜单做初步的模型筛选

MTEB是几个全面的评测基准,可以查看不同模型在不同任务类型的表现(重排序,相关性,分类,聚类,检索)

  1. 明确业务场景与评估指标:核心任务是什么?衡量业务成功的指标是什么?
  2. 构建黄金测试集。
  3. 小范围对比测试。

向量数据库特点及选型

  • Faiss:由Meta AI开发。提供最广泛、最前沿的ANN索引算法。支持CPU与GPU。核心算法库,非数据库。
  • Milvus:支持多种ANN索引和丰富的调优参数。开源领导者,功能全面。云原生架构,高度可扩展。
  • Pinecone:全托管的商业先驱,主打severless和易用性,API设计简介,性能稳定,专注于提供极致的低延迟检索。
  • Weaviate:开源,内置数据向量化模块。能够连接各种embedding模型,实现数据的自动向量化,简化了开发流程
  • Qdrant:开源,以性能和安全著称,使用Rust开发,过滤查询能力强大且高效
  • ElasticSearch:通用搜索巨头,扩展向量检索能力。将向量检索KNN作为功能之一。可以无缝结合强大的全文检索,聚合分析能力。

2.性能表现

  • Faiss:纯粹的性能标杆
  • Milvus:在大规模数据集表现优异,吞吐量和延迟控制很好
  • Pinecone:性能出色,低延迟方面有优势
  • Weaviate:性能良好,自动化向量在开发效率上是亮点
  • Qdrant:性能强劲,尤其是过滤条件复杂的混合查询下表现突出,内存使用率高
  • ElasticSearch:向量检索性能弱于专门的向量数据库,但混合检索(关键词+向量)场景下,表现优异

3.适用场景

  • Faiss:算法研究者,需要将向量检索能力深度集成到现有系统中的团队
  • milvus:需要处理海量数据,对性能和扩展性有高要求的企业级应用
  • Pinecone:追求快速上线
  • Weaviate:希望简化ETL的,希望快速构建从数据到向量到检索的全链路应用的开发者
  • Qdrant:对检索性能和资源利用率有极致要求的场景。金融,电商需要复杂的过滤规则的 应用
  • ElasticSearch:业务需求以文本为主,向量搜索为辅。

切块策略

专有名词解释

  • token:AI眼里的字,1个汉字=1~1.5个token。英文大约4个字母=1个token。512token≈300/400个汉字
  • overlap:相邻两块重叠的部分。

方法

  • 固定长度切:500token一切,容易把句子,表格,代码切断。
  • 递归字符切:Langchain的RecursiveCharacterTextSplitter:先试着按段落切,切不动按换行、空格、单字退而求其次。会尽量保住自然边界,零额外成本。通用场景首选。
  • 结构感知切:按Md标题,合同条款好、PDF页面切。技术文档、法律合同、财报最适用
  • 语义切:靠embedding算相邻句子的相似度,语义断裂处吓到。成本高,容易切的太岁。
  • 代码感知切:语法树按照函数或者类切,保证代码块完整,代码库专用

权衡

1.语义完整性vs检索精度

块太小 块太大
检索 很准 看起来相关但说不清
生成答案 信息被切断,AI答不全 上下文完整但夹杂无用内容
成本 向量多,存储和检索变贵 向量少但是给LLM的内容长

经验表明:极端值通常不行,512~1024token切通常效果不错。事实问答篇小块,复杂分析偏大。

2.召回率vs噪声

切得细。召回高,但容易召回到重复的。切的粗召回低,但信息量大

overlap

一般10%~20% 法律条款和医疗参数这类高密度参数可以25%~30%

只要用overlap必须开启去重和多样性控制。

overlap不是越大越好,会导致向量数量多,索引重建时间变长。费用高。topk出现近亲,重排序负载大。改overlap导致缓存失效。

向量检索 · 关键词检索 · 混合检索 · Rerank

  1. BM25:基于词频(TF)逆文档频率IDF+长度归一化打分。适合精确匹配
  2. 向量检索:做余弦相似度计算排序返回。适合理解语义
  3. 重排序:embedding是Bi-encoder。query与文档独立编码。检索只需要矩阵运算。Rerank是cros-encoder。把query-doc拼一起,让子注意力逐字逐词交互,直接输出相关性得分,慢但是判断深,,复杂度高,适用于小规模数据集。
  4. 如何混合。向量检索额结果0~1.bm25结果分布不确定,没有固定范围。加权融合需要归一化,随着数据集语料变化就要调权重。RRF只看名次,k不敏感。

多模态Embedding

主要处理办法

  1. OCR:便宜且快,但布局颜色丢失
  2. 描述化:VLM生成文字描述,再走文本RAG。自然语言检索增强,复用现有文本线。缺点是贵且慢。丢失关键数据
  3. 视觉向量化:CLIP/SigLIP/统一多模态直接出向量。以图搜图,跨模态检索,版面信息部分保留。但全局池化后逻辑关系被平均掉。

为什么选统一多模态:补充1,2的盲区。OCR丢布局,描述丢精度且不稳定。但代价是存储和延迟更大、纯文本检索能力弱于专用文本模型。

企业级落地默认混合检索:1+2做语义向量,同时保留3的视觉向量,三路召回后再融合。

图片的处理

图片与文字不能分开储存。以视觉元素为中心、当前追溯标题、向后绝壑解释段落,打包成图文共生chunk。

  • 表格必须使用Mineru/unstructured/LlamaParse转换为Markdown或者HTML,保住行列关系。
  • 分层索引(表粒度、行粒度)
  • 表头字段单独建倒排索引(BM25),数字字段建范围索引。

视频处理

三层漏斗索引

层级 粒度 内容 作用
视频级 整个视频 VLM 生成的整体摘要,或全局特征池化 快速粗筛,先把候选视频从 1 万部压到 10 部
片段级 10--60 秒(按场景/语义切) 片段摘要 + ASR 转写文本 + 时序特征 定位时间区间,主力检索层
关键帧级 片段内 1--3 帧 视觉向量(CLIP 类) 只在问题涉及具体画面时触发,做最终确认

检索时不必三层全部搜索。现在视频层召回Top-k。再做片段级精排。只有当query明显指向具体画面,才触发关键帧验证。

统一多模态还是分离多路索引

统一多模态 embedding 分离多路索引
代表 Qwen3-VL-Embedding(2B/8B,2048/4096 维,支持图文视频,MMEB-v2 上 8B 得 77.8)、Gemini Embedding 2(文本/图像/视频/音频/PDF 统一空间,3072 维默认、MRL 可截断到 768,视频≤120s、音频≤80s、图≤6 张、PDF≤6 页)、EmbeddingGemma 2(7.4 亿参数、Apache 2.0、全模态量化后约 567MB 内存,可端侧离线) 文本走 BGE/BM25,图片走 CLIP/Chinese-CLIP,音频走 ASR→文本
优点 一个模型、一个索引、一条查询,跨模态搜索天然成立,不用自己写融合层,还能一次传入图文组合拿联合语义 各模态用各自最强的模型;文本检索能力不打折;可独立升级某一路;成本低、可控、可私有化
缺点 纯文本检索能力略逊于同规模专用文本模型(评测报告普遍提到这点);维度大、推理贵;换模型要重算全库 要自己处理融合(RRF/加权)、要保证多路 document_id 对齐、工程复杂度高
建议 语料规模中等、团队不想维护多条管线、或需要端侧/离线隐私场景 大多数企业知识库的默认选择
相关推荐
猛犸象限44 分钟前
【CJMP Grok Bot实践】用 CJMP 搬游戏时碰到的三个缺口,和我们的绕法
人工智能·grok
文谦南宁AI普工1 小时前
RAG 检索全对,回答全错?用位置扫描 10 分钟定位 Lost in the Middle
人工智能·aigc
alonglong1 小时前
183 行 llmctl:把 4 个启动脚本收成一个 CLI,总控该管什么、不该管什么
人工智能
野生码农AI实战1 小时前
一句追问查出停滞 50 天的口径烂账,我把团队规则的锚换到了数字团队花名册
人工智能
宇擎智脑科技1 小时前
Sirchmunk 深度解析(一):一个无需向量数据库的自进化搜索引擎架构设计
人工智能·rag·sirchmunk
小魚8841 小时前
豆包工作的核心能力有哪些
人工智能
用户287043906161 小时前
给一个终端编码代理装上一颗确定性情绪内核:Persisto Mate 的实现记录
人工智能
用户202252215061 小时前
实现变便宜了,品味才是稀缺:一个 AI 产品经理的 Vibe Coding 复盘
人工智能
雪雪爱冲浪1 小时前
AI 智能体如何通过 auth.md 注册 Bright Date:完整实操指南
大数据·人工智能