什么是 稀疏检索(Sparse Retrieval)?
稀疏检索(Sparse Retrieval)是一族第一阶段搜索方法,它用只有少量非零坐标的高维向量表示查询和文档,再根据重叠坐标及其权重排序候选。
工作原理
经典稀疏与学习型稀疏信号
经典稀疏检索通常使用可观察词项、语料统计和倒排索引;BM25 是其中的重要成员,而不是整个类别的定义。学习型稀疏模型把文本映射到模型词表,并学习非负词项权重或扩展词。[SPLADE 论文](https://arxiv.org/abs/2107.05720)将显式稀疏正则与 Log-saturation 权重结合,形成效果与效率的权衡。学习型扩展可以缓解 Vocabulary Mismatch,但激活词仍是模型输出,不是经过人工批准的同义词。
索引与查询如何执行
倒排索引把每个激活坐标映射到 Posting,记录 Document ID、权重以及可选字段或位置信息。查询时,引擎遍历活跃查询坐标的 Posting,累计加权贡献并保留 Top Candidate。WAND 风格上界和其他剪枝可减少工作量,字段与访问控制必须在不泄露未授权文档存在性的前提下生效。向量数据库的 SPARSE_FLOAT_VECTOR 与文本引擎 Posting 可能暴露相似数学接口,但 Tokenization、更新、过滤和分数契约并不相同。
把稀疏性作为系统权衡评测
同时测量 Recall@K、MRR 或 nDCG、查询 p95、索引字节数、非零坐标、访问 Posting 数、更新滞后和权限过滤行为,并单独切分精确标识符、改写、多语言、否定与域外文本。[BEIR](https://arxiv.org/abs/2104.08663)显示,词法、学习型稀疏、稠密、Late Interaction 与 Reranking 在不同任务上具有不同鲁棒性和计算代价,没有一个家族通吃所有工作负载。对学习型稀疏检索,还要审查 Expansion Drift 与看似无关的激活词,再决定能否把它作为解释。
主要特点
- 在大坐标空间中仅激活相对少量数值
- 既可以使用语料统计得到的词法权重,也可以使用学习型编码器权重
- 可借助 Posting List 与动态剪枝高效生成候选
- 保留坐标级证据,但不保证学习型扩展符合直觉
- 依赖 Analyzer 或 Tokenizer、词表、模型、字段、索引与剪枝版本
- 必须联合评测质量、延迟、索引大小、更新与访问控制
常见用途
- 查找精确标识符、名称、法律短语和领域术语
- 在保留倒排索引执行的同时加入学习型词表扩展
- 为混合检索提供与稠密候选互补的稀疏分支
- 为 RAG 检索实验建立可解释的第一阶段基线
- 服务需要观察索引更新和权限行为的高频变更语料
示例
Loading code...常见问题
稀疏检索就是关键词搜索吗?
不完全是。经典稀疏系统通常为 Analyzer 产生的词法词项赋权;学习型稀疏编码器还可能激活输入中未出现的模型词表词项。两者都只有少量活跃坐标,但证据来源与失败模式不同。
BM25 是稀疏 Embedding 模型吗?
BM25 可以写成稀疏词项坐标上的评分,但多数搜索引擎直接在 Posting 与语料统计上执行,并不会生成一个可跨系统搬运的 Embedding。把它称为稀疏向量时,不能隐藏 Analyzer、字段和实现依赖。
稀疏检索能保证召回精确字符串吗?
不能。Tokenizer、词干化、Unicode 归一化、停用词、词表限制、字段选择、剪枝与权限都可能移除或改变证据。应单独评测精确标识符切片并检查分析后的词项。
学习型稀疏检索与稠密检索有什么区别?
学习型稀疏检索在大型词表形状的空间中计算重叠,可使用倒排索引;稠密检索比较紧凑向量,通常通过最近邻搜索执行。两者都是学习型信号,谁都不保证普遍更准确或更可解释。
稀疏检索索引需要版本化哪些内容?
应版本化源语料、Chunk 与字段 Schema、Analyzer 或 Tokenizer、词表、模型权重、评分函数、剪枝设置、权限过滤和索引构建。任何一项变化都可能在查询文本不变时改变候选结果。