RAG中的Indexing全解析
一、Indexing 到底是什么?
Indexing = 给你的知识库做 “超级目录”
你有一堆文档:
- Word
- 网页
- 笔记
- 表格
- 书籍
不能直接理解文字
不能快速查找
把 “杂乱无章的文字” → 变成 “计算机能快速检索的结构化向量数据”
它是 RAG 的前置基建,没有 Indexing,就没有检索,就没有准确回答。
二、Indexing 的完整 5 步流程(标准 RAG 架构)
所有 RAG 系统的 Indexing 都遵循这 5 步,一步都不能少:
1. 文档加载(Load)
作用:把非结构化文件 → 纯文本
2. 文本清洗(Clean)
去掉没用的东西:
- 多余空格、换行
- 水印、页眉页脚
- 乱码、符号
- 表格乱码
作用:让向量更纯净,避免噪声影响语义
3. 文本分块(Chunk)
- 太长 → 向量无法完整表达语义
- 太长 → 检索不精准
- 太长 → 大模型读不完
切分规则(最关键):
- 按段落
- 按句子
- 按固定长度
- 按语义(最推荐)
- 保留重叠(避免语义切断)
Chunk 质量 = 检索效果 = RAG 回答效果
4. 文本向量化(Embedding)
就是你刚才问的:把文字变成数字向量
1 | [0.23, 0.55, -0.12, ... 768维] |
作用:
- 语义相近 → 向量距离近
- 语义无关 → 向量距离远
5. 建立索引并存储(Index & Store)
把所有向量存到向量数据库,并建立索引结构。
向量数据库包括:
- FAISS(本地轻量)
- Milvus(企业级)
- Pinecone(云服务)
- Chroma(开发常用)
- Elasticsearch(混合检索)
索引结构:
- HNSW(最快最常用)
- IVF
- Flat
用户提问 → 生成问题向量 → 一秒从几万、几十万文档里找出最相关的几段
三、Indexing 的核心作用
1. 让检索从 “几分钟” 变成 “毫秒级”
没有索引:
- 逐字遍历所有文档 → 巨慢
有索引:
- 用向量距离计算 → 瞬间匹配
2. 让大模型不幻觉
因为检索到真实知识 → 模型只能基于事实回答
3. 让知识库可以无限大
几十万文档照样秒查
4. 让私有数据能用在大模型里
企业数据、隐私数据、本地数据 → 全部可检索
四、Indexing 最关键的 4 个技术点
1. 分块策略(最重要)
- 大小:300~800 字符
- 重叠:50~100 字符
- 按语义拆分 > 按字数拆分
2. 向量模型(Embedding Model)
决定语义理解能力:
- 开源:all-MiniLM-L6-v2(最快)、bge-small(最准)
- 商用:OpenAI Embedding、文心 Embedding
3. 向量数据库
决定速度和规模
4. 索引结构
决定检索效率
HNSW 是目前工业界标配。
五、Indexing 完整流程图(文字版)
1 | 原始文档 |
评论