返回
创建于
状态
公开
在实际的工业级 RAG(检索增强生成)或搜索系统中,这些方案既可以独立使用,也可以组合使用。它们并不是互斥的,而是针对不同维度的优化。
通常的演进路径是:先做切片(基础) 加入混合检索(提升准确率) 引入多向量/重排序(精细化)。
1. 基础必备:切片(Chunking)
状态:必须做。 无论你采用后续哪种高级方案,切片是所有向量化操作的前提。
- 原因: 模型(如 BGE-M3)有最大 Token 限制(通常是 512 或 8192)。如果你强行把几万字塞进去,模型会丢失后半部分信息,或者导致语义稀释严重。
- 做法: 按照语义(段落、标题)或固定长度(如 300-500 字)切分。
2. 核心增强:混合检索(Hybrid Search)
状态:强烈建议组合使用。 这是目前最主流的方案。你不需要在“向量”和“关键词”之间二选一,而是同时计算两者的分数。
- 组合逻辑: 1. 用 Dense Vector(稠密向量)处理“意思相近”的情况(比如搜“水果”,能找到“香蕉”)。
- 用 Sparse Vector(稀疏向量/BGE-M3 的 Lexical Weights)处理“字面完全一致”的情况。
- 使用 RRF(Reciprocal Rank Fusion) 算法将两个排名合并。
3. 精益求精:多向量模式(ColBERT / Multi-vector)
状态:独立于 Dense 方案,通常作为“精排”使用。
- 特点: 它非常占空间。如果说普通向量是给每段话存一个 1024 维的数字,多向量模式就是给这段话的每一个字都存一个向量。
- 建议: 因为计算量巨大,通常不建议在初次检索(召回)几百万条数据时使用。一般是先用前两个方案搜出前 50 条,再用多向量模式进行精准比对。
4. 辅助手段:摘要向量化
状态:可选,视场景而定。
- 独立性: 它通常作为“额外索引”存在。
- 场景: 比如你有一本书,切片后有 1000 个块。你可以给整本书做一个摘要向量。用户搜“这本书讲了什么”时,匹配摘要向量;搜“某个具体实验步骤”时,匹配切片向量。
推荐的“全家桶”组合方案
如果你追求极致的效果,建议按照以下架构搭建:
| 阶段 | 执行操作 | 说明 |
|---|---|---|
| 数据处理 | 切片 + 摘要生成 | 将长文档碎裂化,并提取核心大意。 |
| 粗排(召回) | 混合检索 (Dense + Sparse) | 快速从海量切片中捞出最相关的 100 个。 |
| 精排(重排序) | BGE Re-ranker 或 ColBERT | 对这 100 个结果进行深度语义核对,给出最终排名。 |
总结建议
如果你现在才开始尝试:
- 第一步: 只做切片(Chunking),看看效果。
- 第二步: 如果发现搜“具体人名、型号”搜不到,开启 BGE-M3 的 Sparse Vector 做混合检索。
- 第三步: 如果发现前几名结果相关但不精准,引入 Re-ranker(重排序模型)。