关于 vector-db
vector-db 是面向检索系统设计与运维的技能,适用于构建语义搜索、推荐和 RAG 系统的人员。内容涵盖嵌入、索引、分块、混合检索及评估。
主要功能
- 01嵌入模型选择与评估
- 02HNSW、IVF 等索引策略
- 03文档分块与预处理
- 04向量与关键词混合检索
- 05RAG 流程设计与评测
适用场景
- 01为特定领域选择嵌入模型
- 02设计向量索引与分块方案
- 03结合向量搜索和 BM25 检索
- 04评估 RAG 检索质量
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill vector-db安装后在 Claude Code 中输入/vector-db确认已加载。
详细介绍
向量数据库专家
精通检索系统,深入了解嵌入模型、向量索引算法和检索增强生成(RAG)架构。此技能为语义搜索、推荐引擎和大模型知识增强所依赖的向量搜索系统提供设计与运维指导,涵盖嵌入模型选择、索引策略、分块、混合搜索和生产环境部署。
核心原则
- 根据领域和检索任务选择嵌入模型;通用模型适用于广泛的场景,但针对特定领域微调的嵌入模型能显著提升专业内容的召回率
- 选择与嵌入模型训练目标相匹配的距离度量:归一化嵌入使用余弦相似度,考虑向量大小时使用点积,计算空间距离时使用 L2(欧几里得距离)
- 谨慎对文档分块;块大小会直接影响检索质量,因为块过大会稀释相关性,而块过小则会丢失上下文
- 索引选择决定了搜索速度、内存使用量和召回准确率之间的权衡;选择前应了解 HNSW、IVF 和扁平索引的特点
- 在生产系统中结合稠密向量搜索和稀疏关键词搜索(混合检索);单独使用任何一种方法都无法优化处理所有查询类型
技术
- 根据成本和质量要求,使用 OpenAI text-embedding-3-small、Cohere embed-v3 或开源 sentence-transformers(all-MiniLM-L6-v2、BGE、E5)等模型生成嵌入
- 为 HNSW 索引配置合适的 M(每个节点的连接数,通常为 16-64)和 efConstruction(构建质量,通常为 100-200)参数;较高的参数值能提升召回率,但会增加内存占用和构建时间
- 实施分块策略:固定大小并设置重叠(例如,512 个 token,重叠 50 个 token)、在段落或章节边界进行语义分块,或采用尊重文档结构的递归切分
- 通过执行向量相似度查询和 BM25/关键词查询来构建混合搜索,再使用倒数排名融合(RRF)或 Cohere Rerank、交叉编码器模型等学习型重排器合并结果
- 在查询时使用元数据(日期范围、类别、访问权限)筛选结果;大多数向量数据库都支持预过滤或后过滤,两者的性能特征不同
- 设计 RAG 流程:查询嵌入、检索(top-k 候选项)、可选的重排、附带来源引用的上下文组装,以及在提示词中加入检索上下文后由大模型生成内容
常见模式
- 父子检索:对较小的块进行嵌入以实现精准匹配,但将较大的父文档或章节作为上下文返回给大模型,从而保留周边信息
- 多向量表示:为每篇文档生成多个嵌入(标题、摘要、全文),并搜索所有表示,以提升对不同查询方式的召回率
- 上下文检索:在每个块进行嵌入前,添加文档级摘要或元数据,使向量同时捕获局部内容和全局上下文
- 评估流程:使用带标注的相关性数据集,通过 precision@k、recall@k 和 NDCG 衡量检索质量;随着嵌入模型和分块策略变化,持续跟踪这些指标
应避免的问题
- 不要在未经基准测试的情况下将单一嵌入模型用于所有场景;嵌入质量在不同领域、语言和查询类型之间差异很大
- 不要在未经预处理的情况下为文档建立索引:删除模板文本、规范空白字符,并将表格和代码块作为结构化内容处理,而不是原始文本
- 不要在生产环境的 RAG 系统中跳过重排序;初始向量检索优先考虑速度,而交叉编码器重排序器能显著提高最终结果的精确度
- 不要只存储向量而不保留原始文本和元数据;组装大模型上下文、调试和审查检索结果都需要源内容
评论
支持 Markdown