打开网易新闻 查看精彩图片

每个在AWS生态里泡过的开发者,电脑里都有一组永不关闭的浏览器标签页——GitHub仓库、官方文档、Stack Overflow问答、2019年的技术博客,平均47个起步。Francis TR,一位AWS Community Builder,最近把这个数字压缩到了1个搜索框。

他做了一个AI搜索引擎,专门索引AWS官方GitHub组织的10,000多个仓库,10秒内给出带上下文的结果。

GitHub搜索的"2000个结果零上下文"困境

GitHub搜索的"2000个结果零上下文"困境

AWS的GitHub版图极其分散。官方组织包括aws-samples、aws-labs、awslabs、amazon-archives等,每个下面又有数百个仓库。GitHub原生搜索返回2000条结果时,不会告诉你哪个是上周更新的、哪个需要三天部署、哪个其实已经被官方弃用。

ChatGPT更离谱。它会在回答里"自信地"推荐根本不存在的仓库,开发者点过去404,回来再问,它换另一个编造的链接。Stack Overflow的答案则像考古现场——2017年的Lambda配置代码,放在2024年直接报错。

Francis TR的解法是把检索拆成两层。第一层用BM25抓精确匹配,第二层用FAISS(Facebook AI Similarity Search,Facebook AI相似度搜索)抓语义意图,权重7:3。这个比例是测出来的,不是拍脑袋定的。

为什么要 hybrid(混合)?AWS的服务命名太精确了。"Lambda"就是Lambda,不是"serverless compute"(无服务器计算),不是"function-as-a-service"(函数即服务)。纯向量搜索会把这些当同义词处理,结果里混进一堆不相干的serverless项目。BM25卡住关键词,FAISS理解你想找的是"事件驱动架构的参考实现",各干各的活。

打开网易新闻 查看精彩图片

22个元数据字段:不只是"找到",还要"能不能用"

22个元数据字段:不只是"找到",还要"能不能用"

开发者搜仓库的真正问题从来不是"有没有",而是"能不能抄"。

Francis用Amazon Bedrock的Nova Pro模型给每个仓库打标签,22个维度:解决方案类型、用到的AWS服务、复杂度评级、新鲜度、预估搭建时间、是否有IaC(Infrastructure as Code,基础设施即代码)模板、是否包含CI/CD流水线、许可协议、最后提交时间、开放issue数量等等。

这套分类是自动跑的,每天两次,通过EventBridge触发。AWS官方凌晨发布新仓库,中午就能被搜到。作为对比,Google索引一个新页面平均需要4天到4周。

22个字段里,"预估搭建时间"最费心思。Nova Pro需要读取README、代码结构、依赖清单,然后输出"15分钟""2小时""需要SRE团队"这样的分级。Francis说这部分还在迭代,目前准确率约70%——足够帮你过滤掉那些"看起来很美、实际上需要重构整个VPC"的陷阱项目。

6美元/月的成本账:为什么不用OpenSearch

6美元/月的成本账:为什么不用OpenSearch

技术选型里藏着产品的生存逻辑。

打开网易新闻 查看精彩图片

OpenSearch Serverless(亚马逊托管的搜索服务)有个最小计费单元,7×24小时跑,不管有没有查询都要付钱。对于个人项目,这是死刑。

Francis的架构是:FAISS向量索引存在S3,搜索时加载到Lambda内存里跑。整个搜索组件月成本不到6美元。作为AWS Community Builder,他本可以拿积分白嫖OpenSearch,但他选择把架构做成"任何人都能复制"的成本结构。

这个选择也限制了功能。FAISS不支持实时更新,必须定期重建索引。EventBridge的"每天两次"不是最优解,是成本约束下的可行解。Francis在评论区公开问:有没有人用FAISS做过增量更新?这是真在讨教,不是客套。

免费层的商业设计:3次搜索 vs 10次搜索

免费层的商业设计:3次搜索 vs 10次搜索

产品目前免费开放:不注册能搜3次,注册后每天10次。这个配额设计得很刁钻。

3次足够你验证"这东西能不能找到那个我找了半年的Lambda-DynamoDB流处理示例",但不够日常用。10次覆盖轻度需求,重度用户——比如每天需要查五六个架构方案的架构师——自然会产生付费意愿。Francis说正在考虑订阅层,但还没定价格。

搜索质量是他现在的主攻方向。22个元数据字段只是开始,他在测试更细粒度的相关性评分:比如同样匹配"EKS ingress",一个仓库是官方维护的aws-load-balancer-controller,另一个是个人开发者两年没更新的实验项目,怎么让前者排在前面?

目前的权重混合了字段匹配度、新鲜度、star数量、最后提交时间,但"官方维护"这个信号还没被充分编码。AWS的GitHub组织有层级,aws-samples和aws-labs的权威性不同,这些细微差别需要人工标注来训练。

产品页面底部有个细节:Francis放了自己的LinkedIn和GitHub链接,但没有放捐赠按钮。AWS Community Builder的身份给了他初始信任,但他显然想把这个项目做成可持续的东西,而不是依赖打赏。