本节摘要:把 8.1/8.2 的观察变成自己团队的决策。四条轴先画清楚:数据边界(私有代码能否出域——一票否决轴)、定制深度(chunk 策略、重排判据、评测闭环是不是你的核心竞争力)、规模与延迟(仓库体量、查询 QPS、交互式还是后台式)、维护预算(谁长期伺候这套系统)。三条路线各有账本:全自建(本书管线:首建 12 人周,持续 0.10.2 FTE,经验值——大头不是首建而是评测与回归);开源拼装(Zoekt 扛字面保真 + 自建只做语义层:省掉最重的精确路基建,多运维一个外部组件);采购 SaaS(Greptile/Sourcegraph/Copilot 企业版:按 seat 计费、当天可用,定制需求会撞墙、数据要出域)。最常见的终态是混合:字面路用 Zoekt、语义路自建、评测无论如何自建。末尾一个反直觉提醒:"先买后自建"常比"先自建后买"贵——采购快速验证需求,自建兑现定制,顺序该由数据边界决定,而不是由"造轮子羞耻症"或"不是发明 here 综合征"决定。
阅读完本节,你应当能够:
| 轴 | 关键问题 | 影响 |
|---|---|---|
| 数据边界 | 代码能否发送到第三方?合规/安全有无硬约束? | 一票否决:不能出域则 SaaS 直接出局 |
| 定制深度 | chunk 策略/重排判据/查询改写是否需要随业务频繁调? | 定制深则 SaaS 撞墙;第 5~7 章的旋钮都是定制点 |
| 规模与延迟 | 仓库行数级?查询是交互式(亚秒)还是后台式(分钟可忍)? | 决定 4.1 的选型与 4.3 的策略;规模决定基建投入 |
| 维护预算 | 谁长期伺候?(嵌入模型升级、索引运维、评测回归) | 自建的最大隐性成本在此,不在首建 |
定位方法(半小时的工作量):
| 维度 | 全自建(本书管线) | 开源拼装(Zoekt + 自建语义层) | 采购 SaaS |
|---|---|---|---|
| 数据边界 | 完全在内 | 完全在内 | 代码出域(视厂商部署选项) |
| 首建成本 | 1~2 人周(跟着第 7 章走) | 约 1 人周(Zoekt 托管字面路) | 近零(接入即用) |
| 持续成本 | 0.1~0.2 FTE(经验值) | 0.1 FTE + 一个外部组件的运维 | 按 seat 计费 |
| 定制自由 | 全开:5~7 章每个旋钮都能拧 | 语义路全开,字面路受 Zoekt 能力边界 | 厂商路线图决定 |
| 质量上限 | 取决于你的评测与调优(第 9 章) | 字面路接近工业级现成 | 厂商工程团队的水平 |
| 新鲜度 | 自己做增量(7.2) | Zoekt 自带增量分片 | 厂商负责(如 Copilot 秒级) |
| 适合 | 检索是产品核心竞争力 | 要快又要保真的中间态 | 检索是工具、不是战场 |
(成本数字为经验值示意,供量级判断;认真决策时用自己的团队速率替换。)
TCO 草图的讲法:三年口径下,SaaS 的 seat 费线性涨、自建的人力费前高后平(首建期过后是维护期)——交叉点通常出现在第 6~18 个月(经验值,seat 单价与人力成本差异极大)。但比交叉点更重要的是账本里容易被漏记的两笔:①自建的评测与回归(第 9 章)——没有它,质量会无声退化,等于定期返工;②SaaS 的迁移成本——上下文长度、返回格式、权限模型绑得越深,走的时候越疼。
时间轴上的示意(量级参考,认真决策用自己团队的速率替换):
| 时点 | 全自建 | 开源拼装 | 采购 SaaS |
|---|---|---|---|
| 首月 | 1~2 人周首建 | 约 1 人周 | 接入即用 |
| 第 6 月 | 0.1~0.2 FTE 维护 + 一次评测回归 | 0.1 FTE + 组件运维 | seat 费线性涨 |
| 第 18 月 | 累计成本逼近交叉点(经验值) | 同左 | 多数规模下已过交叉点(经验值) |
查询 ──┬── 意图/语义查询 ──► 自建语义路(第 2~5 章:嵌入+向量+融合) │ │ ├── 字面/正则/子串 ──► Zoekt(开源,保真 grep 语义,自带增量分片) │ │ └────── 两路融合(5.1 RRF / 级联置顶)──► 结果 │ 评测集 + 指标仪表盘(第 9 章)◄──┘ 无论哪条路都自建、都别外包
三段各自的理由:
决策顺序的口诀:数据边界一票否决 → 定制深度定阵营 → 规模延迟定档位 → 预算定时机。顺序错了会买到不合规的产品(先看功能后看合规),或为不存在的规模自建重炮(先看档位后看边界)。
💡 采购的另一重价值常被低估:快速校准预期。先用 SaaS 跑两周,看看"工业级语义检索"在你仓库上的真实体感——这比任何横评都准,还顺手产出了评测集的种子(不满意的结果就是坏例矿)。校准完再决定要不要自建,自建的目标也从"做个检索"变成"做到/超过那个体感"。
⚠️ 两个反直觉提醒:①"先买后自建"通常比"先自建后买"便宜——采购验证需求(两周)远快于自建试错(两月),除非数据边界一票否决;②不要拿本书教学管线直接上生产——7.2 的增量是文件级、检索是 numpy 暴力、错误处理面向教学。生产化的检查单:4.1 的换库触发条件、4.2 的 chunk 级差分、6.3 的工具鉴权与限流、第 9 章的回归护栏。
路线选完,无论哪条,下一步都一样:装上仪表盘。下一章讲评测——指标怎么算、评测集怎么造、迭代循环怎么转。