人人都会AI编程

数据采集 → 文档解析 → 清洗分块 → 向量化 → 向量库存储

更新时间:2026-07-12

索引构建流程:数据采集 → 文档解析 → 清洗分块 → 向量化 → 向量库存储

在 RAG 系统中,知识库的质量决定了回答的上限。索引构建就是把企业散落在各处的文档,加工成可供检索的“知识片段”。整个流程从左到右依次为五个核心步骤:

1. 数据采集

采集的目的是将所有可能被问到的知识资料汇聚到一起。常见的来源包括:

  • 内部文档:Word、PDF 格式的制度文件、产品手册、技术白皮书。
  • 网页内容:公司内网 Wiki、公告页面,可通过爬取或导出获取。
  • 非结构化数据:客服对话记录、工单、会议纪要(通常以 TXT、Excel 形式)。
  • 数据库记录:FAQ 列表、标准化问答对。

实用建议:

  • 尽量采集“原始最全版本”,比如 PDF 比截图扫描版更容易解析。
  • 对敏感信息提前打码或脱敏,避免入库后泄露。
  • 建立文档清单和版本号,方便后期追溯哪些信息已在库中,哪些已过时需要替换。

2. 文档解析

不同格式的文档需要转换成统一的纯文本,才能进行后续切分和向量化。

  • PDF 解析:需要区分是文字型 PDF 还是扫描版。文字型可用 PyMuPDF、pdfplumber 直接提取文字;扫描版则需要 OCR 引擎(如 Tesseract)识别。
  • Word / Markdown:相对规范,提取纯文本较容易,可使用 python‑docx、markdown 解析库。
  • HTML 网页:先用 BeautifulSoup、lxml 去除标签和脚本,只保留正文。
  • 表格和列表:注意保留结构信息。例如将表格转为“列名:值”的键值对文本,以便检索时能匹配到具体字段。

真实痛点:

  • 扫描件 OCR 错误率高,尤其是中英文混排、水印干扰。需重点对关键页人工抽查。
  • PDF 中常见双栏排版、页眉页脚乱入正文,解析后可能出现句子断裂、顺序混乱。建议解析后做一次文本顺序的合理性检查。

3. 清洗与分块

清洗是让文本“干净”,避免垃圾信息占用向量空间;分块是将长文档切割成大小合适的语义片段,提升检索粒度。

清洗常做的事:

  • 删除无意义字符:多余空格、换行符、特殊符号、页码水印残留。
  • 统一格式:全角/半角转换、数字格式归一化、统一日期表达。
  • 去除隐私内容:手机号、身份证号等敏感字段替换为占位符。
  • 过滤过短或过长的段落:短于 10 字符的片段通常不包含有效信息,可直接丢弃;超过 2000 字符的片段可能导致检索时跨度过大,语义混淆。

分块策略:
分块是索引质量的关键。常用方法:

  • 固定长度切分:按字符数或 Token 数(如 512 tokens)切分,实现简单,但可能把一句话切在两段。
  • 基于分隔符切分:以段落、句子或章节标题作为自然边界,保留语义完整。
  • 重叠切分:相邻块之间重叠一部分文字(如 10%–20%),防止关键信息正好落在边界被割裂。

实用经验:

  • 最佳 chunk 大小与领域相关。技术手册类可稍大(800–1000 tokens),FAQ 类可更小(200–300 tokens)。
  • 为每个 chunk 添加元数据,如来源文档名、章节标题、页码、更新时间,这在溯源和筛选时极其有用。
  • 清洗后可以人工抽检 20–30 个 chunk,确认没有切割错误、乱码。

4. 向量化

向量化是将清洗好的文本块转成固定长度的数字向量,使语义相近的文本在向量空间中距离更近。

操作步骤:

  1. 选择一个嵌入模型,如 OpenAI text‑embedding‑ada‑002、通义千问 embedding、或开源的 bge‑large‑zh 等。
  2. 批量调用嵌入模型的接口,将每个 chunk 文本编码为向量(通常 1024 维或 768 维)。
  3. 记录下每个 chunk 的向量与其对应的原文和元数据,准备写入向量库。

注意事项:

  • 嵌入模型需与后续检索阶段用到的模型保持一致,否则相似度计算会出现偏差。
  • 大规模文本可分批并行处理,注意 API 调用频率限制和成本。
  • 向量化是 CPU/内存密集型操作,本地部署嵌入模型需预留足够资源。

5. 向量库存储

最后一步是把向量和对应的元数据存储到向量数据库,以便快速检索。常见的选项包括 Milvus、Pinecone、Weaviate、Chroma、Qdrant 等。

存储时需要做好的事:

  • 每个向量条目附带完整元数据:文本原文、文档名称、章节、页码、版本、入库时间等。
  • 为向量字段建立索引(如 HNSW、IVF 索引),以支持近似最近邻搜索。
  • 设定合理的度量方式(余弦相似度或欧氏距离),与嵌入模型训练时的相似度定义保持一致。

生产环境建议:

  • 对于频繁更新的知识库,选择支持实时增删改的向量库,避免全量重建。
  • 定期对向量库做健康检查,比如测试几个典型问题的检索结果,确保召回质量不衰减。
  • 如果知识库很大,考虑分区存储(按文档类型、业务线等),既提升检索速度,也便于后期按需更新部分知识。

小结:这五个步骤构成了一条从原始文档到可检索知识的完整管道。每个环节都有“沟坎”,但每一步的优化都会直接反映在最终回答的准确性和可靠性上。在实际项目中,建议先用小批量数据走通全流程,确认各参数合理后,再扩大规模。