# 索引只有Google的1/10，召回率99.9%：Brave搜索20人团队的施工图

> Cognitive Revolution No. 145 中文精读

- 原标题：Building Brave: Private Search, One AI Layer at a Time with Josep M. Pujol
- 发布日期：2024-06-15
- 主持：Nathan Labenz
- 网页版：https://cogrev.1mmt.com/ep/145-building-brave-private-search-one-ai-layer-at-a-time-with-jo-S3y1R5.html
- 精读字数：约 5433 字（阅读约 12 分钟）

> 本文为 cogrev.1mmt.com 基于原始访谈的 AI 改写中文精读，非官方翻译；引用请注明出处并链接网页版。

索引规模只有 Google 的十分之一，召回率却做到 99.9%。干成这件事的搜索团队，连质量评估员算上，一共 20 个人。

这些数字来自 Brave 首席搜索负责人 Josep M. Pujol 在播客 Cognitive Revolution 上的一期对谈。Brave 每小时处理超过 100 万次搜索，平均每秒 300 次。主持人 Nathan Labenz 本人是 AI 创业者和投资人，自己也在做 RAG 产品，这期他问得极细，Josep 也答得极实：数据怎么收、索引怎么建、模型怎么换、效果怎么测，一个搜索引擎的施工图基本摊在了桌面上。

先交代一个细节：这是 Cognitive Revolution 第一期赞助单集，Brave 是节目赞助商，Nathan 开场就挑明了。他后来自己拿 Brave Search API 和 Google、Bing 逐项对比测试，结论是确实能打，还推荐给了自己公司的产品团队。赞助归赞助，干货是干货。

## 20个人，和一份「天生匿名」的数据

先说公司。Brave 由 JavaScript 之父、Firefox 联合创始人 Brendan Eich 和 Brian Bondy 创立，产品线包括浏览器、VPN、广告网络、聊天助手 Leo，现在加上独立搜索引擎，全公司约 200 人。搜索这条线，工程加质量评估，核心就 20 人。Josep 三年半前加入，此前在一家叫 Clicks 的搜索创业公司从零做搜索引擎，公司因融资和疫情倒闭，团队拿着几个 offer 选中 Brave，理由很直接：价值观一致，都想做一套不依赖大厂的技术全家桶。

数据来源是 Brave 搜索最有意思的部分。用户可以自愿加入一个叫 Web Discovery Project 的计划，上传浏览行为数据。听起来吓人，设计上却下了狠功夫：**数据天生匿名，省掉了「先收集再匿名化」那一步**。这个区别巨大。匿名化、假名化的数据留着还原后门，天生匿名的数据从源头就没法还原。

具体做法：不用任何用户 ID，数据经混合网络抹掉网络指纹，消息格式统一，还要过一道「法定人数」机制，同样的数据必须由超过 N 个不同的人发送，Brave 才接收。结果就是，任何一条数据都查不到来源，两条数据也关联不到同一个人，技术上叫「记录不可关联」。

代价是数据只能回答单一问题：某个页面热不热，某个查询之后用户点了哪个结果。想追问「这个人还去过哪」，做不到。Josep 说他们专门推演过最坏情况：

> 哪怕数据被黑客拿走，或者被政府机构调走，也没法定位、画像任何一个具体的人。

他的核心观点：**「要数据还是要隐私」是个伪二选一，关键看数据的用途和收集方式**。Google、微软同样在收这类数据，问题出在同一份数据被复用于无数场景，能回答合法问题，也能回答非法问题。Brave 的选择是一问一收，数据不可复用。

## PageRank是个神话，Google赢在锚文本

聊到搜索技术史，Josep 丢了个炸弹。Nathan 以为 PageRank 好歹还有点用，Josep 直接说：

> PageRank 是个神话。

他读博那年 Google 刚发布，他用 Google 比google.com 上线还早，当时还挂在斯坦福域名下。他的考证很硬：Google 发过两篇论文，一篇讲 PageRank，另一篇技术报告《大型搜索引擎的解剖》才是干货。**Google 赢在锚文本，PageRank 只是锦上添花的噱头**。

逻辑是这样的：Larry Page 和 Sergey Brin 借斯坦福的资源，第一次暴力抓取了整个网页，硬盘多到没处放，只能拿乐高积木搭架子。抓全网的真正价值在反向链接，而反向链接上挂着锚文本，等于全世界的其他网站替你的网站写了描述。在那之前，AltaVista 们只有站长自己写的页面简介。哪种信号噪音更小，一目了然。至于 PageRank，无非是拿到邻接矩阵后算个特征向量，论文漂亮，记者爱写，「一个算法改变一切」的故事好讲，真实的技术史没这么线性。

他从这段历史提炼出的方法论：**真正的创新往往藏在不起眼的方法论里，时髦的算法反倒只是故事素材**。Brave 自己走的就是这条路。

Brave 的排序重度依赖查询日志：用户搜了什么词、点了哪个页面。查询日志本质上是用别人的查询给页面做的另一种锚文本。Brave 搜索起步时更像一个推荐系统，攒够查询日志再做语义扩展：没见过「Lady Gaga 多大了」，但见过「Lady Gaga 的年龄」，语义相近，结果复用。查询相似度系统里存着超过 90 亿条去重查询，新查询进来，20 毫秒内返回历史相似查询集。然后逐步上 n-gram、索引页面内容，一步比一步贵，但每一步都踩在前一步的收益上。

> 降噪是你唯一必须做到极致的事。噪音不只影响模型输出质量，还影响可扩展性和运行成本。

还有个常被忽略的变量：硬件。Clicks 时代索引要全放内存，当时服务器顶配 16GB 内存，放 2TB 数据得几千台机器，工程上不可行。后来 Amazon 推出 1TB 内存机型，4 台机器组个集群就搞定了。Brave 搜索能存在，还靠 NVMe 硬盘，查找延迟远低于普通闪存，没有它成本压不下来。**Brave 搜索是增量堆出来的，每一步都在利用当时世界刚好提供的条件**。

## 没有银弹：两种向量、一个集成

对做 RAG 应用的人，这期最值钱的是 Josep 反复敲黑板的一句话：**没有任何单一技术能解决一个值得解决的问题，永远是多种技术组合，上面再做一个集成**。

Brave 的现状：页面内容同时跑两种向量。稠密向量 384 维、每维 2 字节，基于 BERT 类 transformer，负责语义匹配，每页 1 到 5 个；稀疏向量 16000 维、每维 1 比特，负责字面匹配。搜索时两者都用。为什么？搜「Trump Tower」的时候，用户就要 Trump Tower，语义模型给你「Trump 加点别的东西」，全是噪音。Josep 拿自己名字举例：Josep Pujol 和加变音符的加泰罗尼亚拼法，在任何语义模型里距离都极近，但那是两个人。

纯语义方案还有个统计学大坑。假设嵌入模型每一万次出一次错，在 10 万条文档的小库里你根本察觉不到；放到 200 亿条文档的规模上，错误会大量涌进召回集。召回 2000 条，一成是噪音，剩下的技术必须能把噪音捞出来。

团队还踩过一个坑。创业早期人少，想过把搜索拆成 100 个垂直领域，天气一个、名人一个、汽车一个。结果 100 个垂直都做得很完美，拼不到一起，问题被推迟到「混合模块」上，而那才是真正的难题：**「Ted」在电影垂直里只有一个意思，放到全网，它是电影、是人名、是会议、是零件**。通用搜索难，就难在噪音。Nathan 补了个真实案例：他在做的项目要把老式管道零件手册做成可搜索的数据库，零件编号压根没有语义，最后也是语义检索加精确匹配两条腿走路。Josep 听完点头，这正是标准答案。

最终架构：200 到 300 个特征，喂给梯度提升决策树做最终排序。Nathan 问这算混合专家（MoE）吗，Josep 说原理一样，就是个「很烂的 MoE」。给开发者的建议更直接：**试 10 种不同的嵌入模型然后做集成，好过找一个完美嵌入**。前提是模型彼此不相关，有的偏语义、有的偏字面、有的多语言，相关性高的加了等于白加。

> 工程的重点在问题，工具只是顺手就用上的东西。该爱上的是问题本身，别爱上某个框架或方法论。

## 什么能随便换，什么永远别动

模型迭代怎么管理，Josep 给了一条分界线，非常实用：**无状态的组件随便换，和数据绑定的组件别碰，只能加**。

无状态的典型是摘要功能的 LLM。Brave 的 AI 摘要覆盖大约 25% 到 30% 的查询，第一版用 Flan-T5，几个月内换了三次模型。第二代上线时用 Mixtral，两周后 Llama 3 发布，跑了一遍测试集，质量相当，一周完成切换。模型只是管道里的一个零件。

数据绑定的典型是嵌入。2019 年用 StarSpace 训的查询嵌入至今在线上跑，Josep 的原话是「永远不会被替换」。原因很硬：内容嵌入用 transformer 算，单卡全优化后每页 2 毫秒、每秒 500 页，这速度已经快得离谱，但全量数据跑一遍仍要一年半。重算一次嵌入要烧几个月的 GPU 和真金白银，没人会每季度干一次。

所以策略是叠加：嵌入 v1、v2、v3 并存，新旧系统各算各的距离，一起进 GBDT 当特征。**加永远没问题，替换才是灾难**。加一个嵌入等于给最终排序器加一组特征，收益是纯增量。

## 评测这件事，最后还得靠人

换模型容易，判断换得好不好难。Brave 的质量评估没有完全自动化，靠三层：

- 一支人类评估员团队，人工评估摘要、排序和准确性，产出量不大，质量极高，是 ground truth；
- 查询日志，拿自己的结果和 Google、Bing、Yandex 比对，算 NDCG、看结果集交集，某类查询跟 Google 差异大，就抽样人工复盘，判断是自己错了还是标准不同；
- 一批查询只掌握在质量团队手里，工程团队看不到，专门防过拟合，因为调超参本身就能悄悄过拟合。

日积月累，测试集里攒了几万条高质量人工评估、几十万到几百万条自动评估。发布标准很朴素：**结果不更差、性能不更差，就上；性能变差，开大会决定先上再优化还是整个砍掉**。Josep 的原话，best effort。

摘要的「品味」问题他答得更诚实。Nathan 问有没有一份像 OpenAI 模型规范那样的宪法，Josep 说有，但「宪法是一个人的」，就是负责这件事的那位同事，靠定期用好评结果做微调，让模型自己学标准。Llama 3 比 Mixtral 啰嗦，切换后 Brave 的摘要也跟着变长，他们调了调，没有强行掰。**不知道什么是对的时，最好先别乱动**，等攒够数据和评估资源再去影响模型。

Nathan 以为自己按查询类型换引擎的用法很正常：Perplexity 答案最短，You.com 研究模式动辄两千字，Brave 居中。Josep 泼了盆冷水，普通用户根本不这样，搜索是一站式服务，**用户带着问题来，人在事中，要的是莫吉托的配料表，谁想读两页莫吉托文化史**。Brave 在不少国家是浏览器默认搜索引擎，用户约三成在美国，其次欧洲，必须伺候最大公约数。流量小可以随便实验，流量大了不行，因为用户不奖励好体验，只惩罚坏体验：一家店对你差一次，你就不去了。他还顺带同情了 Google 的处境，流量越大越不敢实验，You.com、Perplexity 这些白纸一张的小厂反而身位领先。

菜谱网站开头挂两千字小作文的现象，他的解释也接地气：SEO 黑盒试错出来的。Google 解析器吃某类格式，站长们集体随机游走，一个套路有效，全网抄。按今年泄露的内部文档，Google 每个页面有 14000 个特征，Brave 是几百个，谁也说不清每条特征为什么存在。

## 卖API这门生意，和一份能直接抄的作业

商业模式部分，数字都在明面上。Brave 搜索上线时只能独立回答 87% 的查询，剩下走 Bing，三个月后 90%，一路爬到 94%，一年前彻底甩掉 Bing，这才有了对外卖 API 的资格，因为 Bing 的服务条款不允许转售。

API 市场上，Google Custom Search 每天上限 1 万次查询，官方定位是站内搜索，拿去做生产环境等于违反条款；真正的公开选择此前只有 Bing 一家。Brave Search API 的差异化：不要求署名，允许自由混排结果，返回的数据量明显更大。Nathan 拿自己公司 Waymark 的小企业档案生成器实测，同样的 10 条结果，Brave 返回的原始字符量经常是 Google 和 Bing 的好几倍，多段摘要加结构化数据，能直接省掉自己爬网页的步骤。价格上，含摘要功能的档位 9 美元一千次查询，Bing 最接近的档位 25 美元，省下六成多。Nathan 的计划同样是增强而非替换现有流程：用 Brave 补爬虫抓不到的 URL，加速返回，再从评论和讨论站点捞现成上下文。

成本端他也交了底：摘要平均每次查询吃约 4000 个 token，基本顶满上下文窗口，全部模型自托管，一来是独立性，二来用第三方的账单根本付不起。当前在 Amazon 上有 28 张 H100 供主 LLM 使用，外加一批跑小模型的 GPU。每天 2700 万到 3000 万次搜索，其中一到三成要过一遍 LLM。这笔钱对 200 人的公司不算小，但也没到要改商业模式的地步。他的判断：搜索引擎本来就不便宜，Google 的基础设施翻个倍就能随便跑 LLM，真正的门槛是意愿和产品形态。

对 web 的未来，他偏悲观。AI 摘要太方便，谁都得做，Brave 自己也是被推着走。内容创作者一旦既丢了广告收入又丢了名气，就没理由再生产内容。他说自己老到更偏爱 YouTube 胜过 Netflix，偏爱 Myspace 胜过 Facebook，喜欢的就是那种参差多态。AI 未必是压垮 web 的最后一根稻草，但肯定是又一次转向。方便永远有代价，最后那句话值得抄进备忘录：

> 答案算不上知识，问题才是知识。答案只是答案。当你拥有一个有问必答的神谕，其他一切就不存在了。

整期听下来，能明天就用的东西有这么几条：

- 做 RAG 别找完美嵌入。拉 5 到 10 个彼此不相关的嵌入模型，语义的、字面的、多语言的各来几个，距离一起算，丢进 GBDT 或类似排序器做集成，稠密加稀疏双路是标配。
- 升级分两类。LLM 这类无状态组件，建好测试集就大胆换；嵌入这类数据绑定组件只加不换，新旧并存当特征。
- 摘要的质量秘诀跟模型关系不大，功夫全花在挑哪些内容进 prompt，去重、去矛盾，比换模型管用。
- 评测从真实查询攒测试集，留一批只给质量团队防过拟合，自动化指标之外保留人工抽检，这条暂时没有替代品。
- 选搜索 API 可以照抄 Nathan 的笨办法：同一个查询同时打 Brave、Google、Bing 三家，比返回内容的量和质，再比价格，用数据说话。
