目录

一、RAG技术概述

二、文本向量化:从文字到高维向量

1. 什么是向量、维度、固定维度?

2. 文本分块(Chunking)

3. 嵌入过程(Embedding)

三、向量数据库:存储与检索

1. 索引阶段(入库)

2. 查询阶段(检索)

3. 相似度计算方法

4. 近似最近邻(ANN)算法

5. 检索后处理

四、非结构化数据的向量化(图片、音频、视频)

1. 图片向量化

2. 音频向量化

3. 视频向量化

五、多模态嵌入与视频搜索流程

视频搜索(Video-to-Video)完整流程

六、关键概念澄清

1. 嵌入(Embedding) vs 向量化(Vectorization)

2. 结构化数据 vs 非结构化数据

3. 为什么长文本不会变成高维向量?

七、总结

八、网站速查

🧠 核心技术框架

🗄️ 向量数据库

🤖 嵌入模型

🌉 多模态模型

🌐 中文学习社区与教程


一、RAG技术概述

检索增强生成(Retrieval-Augmented Generation, RAG) 是一种为大语言模型(LLM)提供外部知识的技术范式。它通过将公司内部文档、知识库等非结构化数据向量化并存入数据库,在用户提问时检索最相关的信息片段,连同问题一起提交给LLM,从而:

  • 减少幻觉:模型基于提供的真实资料回答,而非依赖自身记忆。

  • 知识可更新:知识库独立更新,无需重新训练模型。

  • 来源可追溯:答案可关联回原始文档。

核心流程分为两个阶段:

  • 索引阶段(离线):文档加载 → 分块 → 向量化 → 存入向量数据库。

  • 查询阶段(在线):用户问题 → 向量化 → 相似度检索 → 增强提示 → LLM生成答案。


二、文本向量化:从文字到高维向量

1. 什么是向量、维度、固定维度?

  • 向量:一组有序的数字列表,例如 [0.5, -1.2, 3.8],代表文本在语义空间中的坐标。

  • 维度:向量中数字的个数,如2维对应平面坐标,384维则是高维空间。维度越高,表达能力越强。

  • 固定维度:同一个嵌入模型对所有输入文本(无论长短)输出的向量长度都相同。例如,all-MiniLM-L6-v2 总是输出384维向量,与输入是“你好”还是长篇小说无关。

关键点:向量维度是模型的固有属性,与文本长度无关。一个5个字的句子不会变成5维向量,而是变成384维或768维等固定高维向量。

2. 文本分块(Chunking)

由于嵌入模型有输入长度限制(上下文窗口,如512、8192个Token),长文档需要先切分成小块。

  • 分块依据

    • 固定长度切分(简单但可能切断句子)

    • 递归分隔符切分(优先按段落、句子、标点)

    • 语义分块(使用NLP模型识别边界)

  • 重叠(Overlap):相邻块之间保留部分重叠(如128个Token),避免边界处的语义丢失。

短文本(如50字)不超过模型限制,则不需要分块,直接向量化。

3. 嵌入过程(Embedding)

嵌入模型(如BERT、BGE、text-embedding-ada-002)是一个经过训练的神经网络,其工作流程:

  1. 分词:将文本切分成Token(子词单元)。

  2. 查表:每个Token映射为初始向量(从嵌入矩阵中取出)。

  3. 上下文编码:通过Transformer层,融合句子中所有Token的上下文信息。

  4. 池化:将所有Token的向量聚合成一个固定长度的句向量(常用平均池化)。

示例
输入 "你好" → 分词 → 查表得到初始向量 → 上下文编码 → 池化 → 输出 [0.123, -0.456, ..., 0.789](共384个数字)。


三、向量数据库:存储与检索

1. 索引阶段(入库)

  • 将每个文本块通过嵌入模型转化为向量。

  • 构建近似最近邻(ANN)索引(如HNSW、IVF),以加速后续检索。

  • 存储向量、原始文本块及元数据(来源、时间等)。

2. 查询阶段(检索)

  • 用户问题通过同一个嵌入模型转化为查询向量。

  • 使用ANN算法快速找到最相似的K个向量。

  • 返回对应的原始文本块及相似度得分。

3. 相似度计算方法

方法 公式 特点 适用场景
余弦相似度 cos(θ) = (A·B)/(||A||·||B||) 只关心方向,不关心长度 文本语义相似度
欧几里得距离 √Σ(A_i - B_i)² 关心绝对位置 数值特征匹配
点积 A·B 受方向和长度影响 推荐系统

4. 近似最近邻(ANN)算法

  • IVF:聚类分组,先找最近簇,再暴力搜索簇内向量。

  • HNSW:多层图结构,类似“高速路”导航,精度高、速度快,但内存占用大。

  • PQ:向量压缩,内存占用极小,精度略有下降。

  • LSH:哈希映射到桶内,速度快。

精确KNN vs ANN:ANN以微小精度损失(召回率从100%降至97%)换取百万倍速度提升,是工业界标配。

5. 检索后处理

  • 混合检索:结合向量语义搜索 + 关键词搜索(BM25),使用RRF融合结果。

  • 重排序:用Cross-Encoder模型对候选结果精细打分,提升首位准确率。

  • MMR:保证结果多样性的同时维持相关性。


四、非结构化数据的向量化(图片、音频、视频)

1. 图片向量化

  • 预处理:统一缩放、裁剪(如224×224)、归一化像素值。

  • 模型:CNN(ResNet)或CLIP等视觉模型。

  • 输出:固定维度向量(如512、1024维)。

  • 元数据:拍摄时间、尺寸等单独存储用于过滤,不参与向量化。

  • 分块:单张图片通常不需要分块;但PDF等图文混合内容需要提取图文后分块。

2. 音频向量化

  • 预处理:转为单声道、16kHz采样率。

  • 特征提取:转为梅尔频谱图(Mel-spectrogram)或提取MFCC特征。

  • 模型:CNN、Transformer或专用音频模型(CLAP、CLMR)。

  • 输出:固定维度向量(768~3072维)。

  • 分块需要,因为模型对音频时长有限制,长音频按时间片段切分。

3. 视频向量化

视频同时包含视觉流、听觉流和文本流(字幕),处理策略有两种:

  • 多管道并行:分别对视频帧(抽帧)用图像模型向量化,对音频用音频模型向量化,最后融合向量。

  • 端到端多模态模型:使用VideoCLIP、Marengo等模型直接输入视频帧+音频,输出统一向量。

分块绝对需要。长视频按时间或场景切分成视频片段(如10秒一段),每个片段再分别向量化。


五、多模态嵌入与视频搜索流程

多模态嵌入是指将不同模态(图、文、音、视频)映射到同一个向量空间,使得“猫的图片”与“猫的文字”距离很近,支持跨模态检索(以文搜图、以图搜视频)。

视频搜索(Video-to-Video)完整流程

索引阶段

  1. 原始视频库 → 按固定时长(如10秒)分块,相邻块有重叠。

  2. 对每个视频块:

    • 抽取关键帧(如每秒1帧)

    • 提取音轨并转为频谱图

    • 通过ASR将语音转文本

    • 通过OCR识别画面中的文字

  3. 将这些多模态数据输入多模态嵌入模型(如Marengo、CLIP变体),输出一个固定维度的向量。

  4. 向量 + 元数据(时间戳、视频ID等)存入向量数据库。

查询阶段

  1. 用户上传查询视频 → 执行完全相同的分块、特征提取和嵌入。

  2. 得到查询向量后,在数据库中进行ANN相似度搜索。

  3. 返回最相似的Top-K视频片段,并可定位到原始视频中的具体位置。


六、关键概念澄清

1. 嵌入(Embedding) vs 向量化(Vectorization)

  • 向量化:泛指将任何数据转换成数值向量的过程。

  • 嵌入:特指通过学习得到的低维、稠密、语义丰富的向量表示。嵌入是向量化的一种特殊形式,日常可互换使用,但学术语境中“嵌入”强调语义结构。

2. 结构化数据 vs 非结构化数据

结构化数据 非结构化数据
格式 固定行列,强模式 自由格式,无固定模式
例子 Excel表格、SQL表 PDF、图片、音频、视频
处理 直接用SQL 需要NLP/CV/ASR等提取特征

3. 为什么长文本不会变成高维向量?

:文本长度与向量维度无关。无论输入1个字还是1万字,同一个嵌入模型输出维度固定(如384维)。1万字会被先分块成多个小块,每块分别生成384维向量,最后通过均值池化等方法聚合成一个384维向量代表整个文档。


七、总结

今天的学习覆盖了从RAG基础到多模态向量化的完整知识体系:

  • RAG 通过外部知识检索增强LLM,是减少幻觉的有效手段。

  • 向量化 的核心是嵌入模型,它将文本/图片/音频/视频映射到固定维度的语义空间。

  • 向量数据库 利用ANN索引实现毫秒级相似度检索,并支持混合搜索、重排序等优化。

  • 多模态嵌入 打通了不同数据类型的语义隔阂,使得以视频搜视频、以文搜图成为可能。

这些技术共同构成了现代AI应用(如智能问答、推荐系统、多模态搜索)的基石。

八、网站速查

🧠 核心技术框架

🗄️ 向量数据库

  • Chromatrychroma.com - 轻量级、内存式,适合快速原型验证。

  • FAISSgithub.com/facebookresearch/faiss - Meta 开源的高效向量检索引擎,适合本地高性能部署。

  • Milvusmilvus.io - 开源、分布式、云原生,支持大规模高并发场景。

  • Pineconepinecone.io - 全托管的云服务,简化运维,适合快速上线。

  • Qdrantqdrant.tech - 高性能、开源的向量数据库,提供丰富的过滤选项。

🤖 嵌入模型

🌉 多模态模型

  • CLIP (OpenAI)github.com/openai/CLIP - 实现图文对齐的经典模型,支持以文搜图等。

  • Marengo (Twelve Labs)twelvelabs.io - 先进的视频理解模型,支持文搜视频、视频搜视频等任意模态检索。

🌐 中文学习社区与教程

  • 阿里云开发者社区developer.aliyun.com - 大量高质量的中文技术实践文章。

  • 百度开发者社区developer.baidu.com - 提供丰富的 RAG、LangChain 等实战教程。

  • 掘金 (Juejin.cn)juejin.cn - 活跃的中文技术社区,可找到 2026 年的最新实践。

  • 博客园 (Cnblogs.com)cnblogs.com - 开发者个人博客,常有深入的技术笔记和案例分享。

  • GitCode (CSDN)blog.gitcode.com - CSDN 旗下的技术社区,提供系统化的技术指南。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐