← 返回专栏

向量知识库产品实战操作手册

如果要从零搭一个企业级向量知识库产品,每一步该做什么、怎么选——这是一份可执行的决策清单。

向量库RAG产品设计实战

本文从"如果要创建一个企业级向量知识库产品"的视角,梳理每一步该做什么、用到什么原理。


阶段一:基础设施选型

步骤1:选择向量库

要做的事:

  • 评估数据规模(当前 + 未来3年预估)
  • 确认数据安全要求(能否上云)
  • 评估团队运维能力
  • 确认已有技术栈

决策输出:

场景推荐
国内B端、千万级、有运维团队Milvus
团队小、百万级、快速上线Qdrant
已有 PostgreSQL、向量搜索非核心pgvector
原型验证阶段Chroma

此决策影响后续所有环节,变更成本高。


步骤2:选择向量模型

要做的事:

  • 确认主要语言(纯中文 / 中英混合)
  • 确认部署方式(本地 / API)
  • 评估维度与成本的平衡
  • 用实际业务数据做小规模测试,对比几个候选模型的检索效果

决策输出:

场景推荐
纯中文、私有化部署bge-large-zh(1024维)
中英混合、私有化部署bge-m3(1024维)
可接受数据出外网OpenAI text-embedding-3-small(1536维)

一旦选定,迁移 = 全部数据重新向量化,成本极高。


步骤3:选择 Chat 模型

要做的事:

  • 确认生成质量要求
  • 确认部署方式(本地 / API)
  • 向量模型和 Chat 模型通常独立部署,可分别选型

决策输出示例:

  • 私有化 + 质量要求高:本地部署 ChatGLM / Qwen + GPU 服务器
  • 可上云:Claude API / OpenAI API

阶段二:数据工程

步骤4:数据源接入

要做的事:

  • 盘点所有需要接入的数据源(OA、文档系统、数据库、邮件等)
  • 为每种数据源确定解析方式
  • 设计增量同步机制(什么时候同步、怎么发现数据变更)

各数据源的解析方式:

数据源解析方式难度
Markdown直接读文本
PDFPDF 解析库,扫描件需 OCR中~高
Word/Exceldocx/xlsx 库提取
数据库记录拼成自然语言再向量化
网页爬取 HTML,清理标签
图片OCR 识别文字

步骤5:设计元数据结构

要做的事:

  • 根据业务需求确定每条数据需要带哪些元数据
  • 区分自动生成的和需要业务系统提供的

典型的元数据结构:

{
  "source": "文件名或数据来源",
  "chunk_index": 0,
  "department": "华东销售部",
  "doc_type": "审批/报告/制度",
  "author": "张三",
  "created_date": "2024-10-15",
  "access_level": "部门内/全公司/机密"
}

元数据结构一旦定了不容易改(历史数据要补字段),需要前期充分讨论。


步骤6:设计切片策略

要做的事:

  • 按知识库(或文档类型)分别确定切片策略
  • 切片长度不能超过向量模型的最大输入长度

决策参考:

文档类型推荐策略参数参考
通用文档递归切片300-500字,重叠50-100字
规章制度按条款/章节切以自然分隔符为边界
对话记录按轮次切一问一答为一个切片
API文档按接口/函数切每个接口定义为一个切片
结构不规则的内容语义切片相似度阈值约0.5

验证方式: 准备 20-30 个真实测试问题,每种策略跑一遍对比效果。


步骤7:设计隔离策略

要做的事:

  • 确定哪些业务需要应用隔离(不同集合)
  • 确定集合内部用元数据做数据隔离的规则
  • 多租户场景是否需要物理隔离

决策参考:

隔离需求方式实现
不同业务模块应用隔离不同 Collection
同一模块内不同用户权限数据隔离元数据过滤
不同客户/租户物理隔离独立向量库实例

应用隔离不只是为了安全,还影响搜索质量、索引效率、运维灵活性。


阶段三:检索与生成

步骤8:配置检索策略

完整检索流水线:

用户提问
    │
    ▼
⓪ 元数据过滤(缩小搜索范围)
    │  只保留符合条件的文档子集
    │
    ├──────────────┐
    ▼              ▼
① 向量检索      ② BM25 检索
   语义召回         关键词召回
   Top 20          Top 20
    │              │
    └──────┬───────┘
           ▼
③ RRF 融合排序(合并多路结果,统一打分)
           │
           ▼
④ 规则加权(可选,业务逻辑调分)
           │
           ▼
⑤ Rerank 模型精排(可选,逐条精读重排)
           │
           ▼  Top 3
⑥ 喂给 LLM 生成回答

各环节说明:

顺序环节靠什么实现必须吗
元数据过滤向量库原生能力(WHERE 条件)可选,有元数据时建议开启
向量检索Embedding 模型(如 bge-large-zh-v1.5)必须
BM25 关键词检索经典算法,无需模型建议开启(与向量互补)
RRF 融合排序经典算法,无需模型多路召回时自动使用
规则加权自定义代码逻辑可选,需自建程序
Rerank 模型Rerank 模型(如 bge-reranker-v2-m3)可选,追求高精度时开启

多路召回的价值(为什么不只用向量检索):

  • 向量检索擅长语义理解:用户问"怎么处理表格数据" → 能找到"Excel读写"相关文档
  • BM25 擅长精确匹配:用户问"pandas read_excel 报错 FileNotFoundError" → 精准命中含该报错的文档
  • 两路互补盲区,RRF 融合后效果优于任何单路

Dify 中的对应关系:

Dify 检索模式实际覆盖的环节
向量检索仅 ①
全文检索仅 ②
混合检索① + ② + ③
混合检索 + Rerank① + ② + ③ + ⑤

决策参考:

场景推荐配置Dify 设置
基础版纯向量搜索,Top 5向量检索
标准版向量 + 关键词多路召回,Top 5混合检索(语义 0.7 / 关键词 0.3)
高精度版多路召回 + Rerank,Top 3混合检索 + Rerank 模型

步骤9:设计 Prompt 模板

要做的事:

  • 设计把检索结果拼入 Prompt 的模板
  • 设定回答规则(引用来源、不编造、格式要求)
  • 根据不同业务场景可能需要不同模板

基础模板示例:

请根据以下参考资料回答用户的问题。
要求:
1. 只基于参考资料中的内容回答,不要编造
2. 如果资料不足以回答,请说明
3. 回答时引用来源文件名

参考资料:
{检索到的切片内容}

用户问题:{用户的问题}

步骤10:多集合路由(如需要)

要做的事:

  • 确定路由方式(用户手选 / 规则路由 / 大模型判断)
  • 如果用大模型判断,设计路由 Prompt
  • 确保所有集合使用同一个向量模型(否则相似度分数不可比较)

阶段四:产品化(待深入)

步骤11:效果评估体系

  • 搜索准确率怎么衡量
  • 测试集怎么建
  • 持续优化闭环

步骤12:数据同步与运维

  • 增量同步机制
  • 监控与告警
  • 备份与恢复

步骤13:性能调优

  • 索引参数调优
  • 分片与扩容
  • 缓存策略

快速索引:遇到问题查哪里

问题查哪里
搜索结果不准步骤6(切片策略)→ 步骤8(检索策略)→ 步骤2(模型选择)
搜索太慢步骤1(向量库选型)→ 步骤13(性能调优)
不同业务数据互相干扰步骤7(隔离策略)
数据更新后搜不到新内容步骤12(数据同步)
回答质量差但搜索结果对步骤9(Prompt 模板)→ 步骤3(Chat 模型选择)
成本太高步骤2(模型维度)→ 检索策略(Top K 数量)