返回
创建于
状态
公开

在实际的工业级 RAG(检索增强生成)或搜索系统中,这些方案既可以独立使用,也可以组合使用。它们并不是互斥的,而是针对不同维度的优化。

通常的演进路径是:先做切片(基础) \rightarrow 加入混合检索(提升准确率) \rightarrow 引入多向量/重排序(精细化)。


1. 基础必备:切片(Chunking)

状态:必须做。 无论你采用后续哪种高级方案,切片是所有向量化操作的前提

  • 原因: 模型(如 BGE-M3)有最大 Token 限制(通常是 512 或 8192)。如果你强行把几万字塞进去,模型会丢失后半部分信息,或者导致语义稀释严重。
  • 做法: 按照语义(段落、标题)或固定长度(如 300-500 字)切分。

2. 核心增强:混合检索(Hybrid Search)

状态:强烈建议组合使用。 这是目前最主流的方案。你不需要在“向量”和“关键词”之间二选一,而是同时计算两者的分数

  • 组合逻辑: 1. 用 Dense Vector(稠密向量)处理“意思相近”的情况(比如搜“水果”,能找到“香蕉”)。
  1. Sparse Vector(稀疏向量/BGE-M3 的 Lexical Weights)处理“字面完全一致”的情况。
  2. 使用 RRF(Reciprocal Rank Fusion) 算法将两个排名合并。

3. 精益求精:多向量模式(ColBERT / Multi-vector)

状态:独立于 Dense 方案,通常作为“精排”使用。

  • 特点: 它非常占空间。如果说普通向量是给每段话存一个 1024 维的数字,多向量模式就是给这段话的每一个字都存一个向量。
  • 建议: 因为计算量巨大,通常不建议在初次检索(召回)几百万条数据时使用。一般是先用前两个方案搜出前 50 条,再用多向量模式进行精准比对。

4. 辅助手段:摘要向量化

状态:可选,视场景而定。

  • 独立性: 它通常作为“额外索引”存在。
  • 场景: 比如你有一本书,切片后有 1000 个块。你可以给整本书做一个摘要向量。用户搜“这本书讲了什么”时,匹配摘要向量;搜“某个具体实验步骤”时,匹配切片向量。

推荐的“全家桶”组合方案

如果你追求极致的效果,建议按照以下架构搭建:

阶段执行操作说明
数据处理切片 + 摘要生成将长文档碎裂化,并提取核心大意。
粗排(召回)混合检索 (Dense + Sparse)快速从海量切片中捞出最相关的 100 个。
精排(重排序)BGE Re-rankerColBERT对这 100 个结果进行深度语义核对,给出最终排名。

总结建议

如果你现在才开始尝试:

  1. 第一步: 只做切片(Chunking),看看效果。
  2. 第二步: 如果发现搜“具体人名、型号”搜不到,开启 BGE-M3 的 Sparse Vector 做混合检索。
  3. 第三步: 如果发现前几名结果相关但不精准,引入 Re-ranker(重排序模型)