附录 术语表与速查
本附录收录全教程的术语解释、过滤表达式速查和索引选型决策表,供你随时翻阅。
附录 A 术语表
| 术语 |
英文 |
释义 |
详见 |
| 进程内/嵌入式 |
in-process / embedded |
以库形式嵌入应用进程,无独立服务 |
第 0、2 章 |
| RAG |
Retrieval-Augmented Generation |
检索增强生成,先用检索捞知识再喂 LLM |
第 0、9 章 |
| Embedding |
Embedding |
把文本/图像映射为向量的模型 |
第 3 章 |
| 向量 |
Vector |
Embedding 模型输出的数值表示 |
第 3 章 |
| 稠密向量 |
Dense Vector |
固定长度、几乎每维非零的向量(语义) |
第 3 章 |
| 稀疏向量 |
Sparse Vector |
极高维、仅少数维度非零的向量(关键词权重) |
第 3、7 章 |
| 维度 |
Dimension |
稠密向量的长度,由模型决定 |
第 3 章 |
| 相似度度量 |
Metric |
衡量向量相似度的尺子:COSINE/L2/IP |
第 3 章 |
| ANN |
Approximate Nearest Neighbor |
近似最近邻算法族 |
第 5 章 |
| Flat |
Flat |
暴力检索基线,精确但慢 |
第 5 章 |
| HNSW |
Hierarchical Navigable Small World |
分层小世界图索引,生产首选 |
第 5 章 |
| IVF |
Inverted File |
聚类倒排桶索引 |
第 5 章 |
| DiskANN |
DiskANN |
磁盘图 + PQ,面向十亿级 |
第 5 章 |
| RaBitQ |
RaBitQ |
一种量化方法,配合 HNSW 省内存 |
第 5 章 |
| 量化 |
Quantization |
FP32→FP16/INT8/INT4 的有损压缩 |
第 5 章 |
| 乘积量化 |
PQ / Product Quantization |
子空间量化,DiskANN 用于距离估计 |
第 5 章 |
| Recall@k |
Recall@k |
top-k 中真实最近邻占比,衡量 ANN 精度 |
第 5 章 |
| Collection |
Collection |
存放 Document 的具名容器(≈表) |
第 2 章 |
| Document |
Document |
数据基本单元,含 id+vectors+fields(≈行) |
第 2 章 |
| Schema |
Schema |
Collection 的结构定义 |
第 2、4 章 |
| 标量字段 |
Scalar Field |
非向量的结构化字段(字符串/数值/布尔/数组) |
第 2、4 章 |
| 倒排索引 |
Inverted Index |
值→DocID 列表,加速标量过滤 |
第 2、4 章 |
| 全文索引/检索 |
FTS |
文本分词建倒排,BM25 排序 |
第 6 章 |
| BM25 |
Okapi BM25 |
全文检索的相关性评分算法 |
第 6 章 |
| WAND |
Weak AND |
多词项检索的剪枝加速算法 |
第 6 章 |
| 分词器 |
Tokenizer |
把文本切成词项:standard/whitespace/jieba |
第 6 章 |
| 过滤表达式 |
Filter Expression |
类 SQL 的标量过滤条件 |
第 6 章、附录 B |
| 混合检索 |
Hybrid Search |
多路检索 + 重排序融合 |
第 7 章 |
| 重排序器 |
Reranker |
融合多路结果的策略:Weighted/RRF |
第 7 章 |
| RRF |
Reciprocal Rank Fusion |
倒数排名融合,仅看排名不看分数 |
第 7 章 |
| optimize |
optimize |
把 Flat 暂存区合并进正式索引 |
第 8 章 |
| Flat 暂存区 |
Flat buffer |
新向量先入此区,保证写入吞吐与实时可查 |
第 8 章 |
| mmap |
memory-mapped I/O |
内存映射文件,加速数据访问 |
第 4、8 章 |
| DDL |
Data Definition Language |
在线改 Schema 的语句(Column/Index DDL) |
第 4 章 |
| 端侧 RAG |
Edge / On-Device RAG |
全链路本地化、数据不出设备的 RAG |
第 9 章 |
附录 B 过滤表达式速查
过滤表达式用于 query(filter=...) 和 delete_by_filter(filter=...),是类 SQL 的布尔表达式。
B.1 比较运算符
| 运算符 |
含义 |
支持类型 |
示例 |
< <= > >= |
大小比较 |
整数/浮点/字符串 |
price <= 29.99、author <= 'M' |
= != |
等于/不等于 |
整数/浮点/字符串/布尔 |
in_stock = true、status != 'archived' |
is null / is not null |
空值判断 |
所有类型 |
email is null |
字符串比较用字典序;字符串字面量用单/双引号;布尔用 true/false。
B.2 成员运算符
| 运算符 |
含义 |
示例 |
in / not in |
属于/不属于集合 |
status in ('active','pending') |
contain_any |
数组含至少一个 |
tags contain_any ('bug','urgent') |
contain_all |
数组含全部 |
tags contain_all ('bug','urgent') |
array_length |
数组长度条件 |
array_length(tags) > 2 |
值列表必须用括号 () 包裹。
B.3 字符串模式
| 运算符 |
含义 |
示例 |
like |
通配符匹配(%) |
name like 'Smart%'(前缀)、file like '%.log'(后缀) |
中缀/后缀模式(%abc、abc%def)需建倒排索引并开 enable_extended_wildcard=True 才高效;多通配符模式(%a%b%)开销大慎用。
B.4 逻辑运算符
| 运算符 |
含义 |
示例 |
and |
与 |
status = 'active' and score > 90 |
or |
或 |
role = 'admin' or perm = 'write' |
() |
分组 |
a = 1 and (b = 2 or c = 3) |
B.5 FTS query_string 语法(全文检索高级模式)
| 语法 |
含义 |
示例 |
term |
匹配词项 |
vector |
"phrase" |
精确短语 |
"machine learning" |
+term / -term |
必须含/必须不含 |
+vector -slow |
AND / OR / NOT |
布尔 |
vector AND search |
(expr) |
分组 |
(a OR b) AND c |
优先级:AND/NOT 高于 OR;不支持前置否定(NOT term 需配合肯定词项)。
B.6 性能要点
- 过滤字段必须建倒排索引,否则退化为逐条扫描,显著变慢。
- 范围查询开
enable_range_optimization=True。
- 复杂通配符开
enable_extended_wildcard=True。
- 未索引字段能过滤但慢——只给"经常过滤"的字段建索引。
附录 C 索引选型决策表
C.1 五种索引对比
| 索引 |
原理 |
查询复杂度 |
内存 |
Recall |
平台限制 |
最佳场景 |
| Flat |
暴力全扫 |
O(N) |
中 |
100% |
无 |
调试/小数据(<几万)/精确基线 |
| HNSW |
分层图 |
O(log N) |
高 |
高 |
无 |
生产首选,内存够的常规 RAG |
| HNSW-RaBitQ |
图+量化 |
O(log N) |
低 |
中高 |
x86_64+AVX2 |
大规模、要省内存 |
| IVF |
聚类倒排桶 |
O(N/n_list×n_probe) |
低 |
中(参数敏感) |
无 |
海量、内存敏感、愿调参 |
| DiskANN |
磁盘图+PQ |
含磁盘I/O |
极低 |
高 |
仅Linux+libaio |
十亿级、内存装不下 |
C.2 选型决策树
数据规模 / 约束
│
├─ 调试、小数据(< 几万)、要绝对精确
│ └─► Flat
│
├─ 数据能装进内存
│ ├─ 内存充裕 ──► HNSW (RAG 默认)
│ └─ 内存吃紧(x86+AVX2)──► HNSW-RaBitQ 或 HNSW + 量化
│
└─ 数据远超内存(十亿级,仅 Linux)
└─► DiskANN
C.3 关键参数速查
| 索引 |
构建参数 |
查询参数 |
召回第一旋钮 |
| HNSW |
m、ef_construction、quantize_type |
ef、radius、is_using_refiner |
查询时 ef ↑ |
| HNSW-RaBitQ |
total_bits、num_clusters |
ef |
查询时 ef ↑ |
| IVF |
n_list、n_iters |
n_probe、radius |
查询时 n_probe ↑ |
| DiskANN |
max_degree、list_size、pq_chunk_num |
list_size |
查询时 list_size ↑ |
C.4 度量选择速查
| 场景 |
度量 |
分数方向 |
备注 |
| 文本稠密向量(主流模型) |
COSINE |
越小越相似(距离) |
RAG 默认,与 OpenAI/BGE/e5 对齐 |
| 已归一化向量 |
IP |
越大越相似 |
等价余弦,更快 |
| 稀疏向量(词项权重) |
IP |
越大越相似 |
加权点积衡量匹配度 |
| 部分图像/音频 Embedding |
L2 |
越小越相似 |
看模型卡 |
铁律:度量必须与 Embedding 模型训练度量对齐,否则召回质量断崖式下跌(详见第 3 章)。
附录 D RAG 检索方式速查
| 需求 |
用什么 |
关键代码 |
| 纯语义检索 |
单向量路线 |
Query(field_name="dense", vector=...) |
| 按属性缩小范围 |
标量过滤 |
filter="publish_year >= 2024" |
| 语义 + 属性限定 |
向量 + 过滤 |
两者叠加 |
| 关键词精确匹配 |
全文检索 |
Query(field_name="content", fts=Fts(match_string=...)) |
| 召回率上限 |
混合检索 |
多 Query + RrfReRanker / WeightedReRanker |
| 复用已存向量 |
按 id 查询 |
Query(field_name="dense", id="book_1") |
| 只取必要字段 |
output_fields |
output_fields=["text","source"] |
本教程到此完结。回到 README 查看完整章节列表与阅读顺序。