黑客说 2.0 已经整体迁移完毕,搜索是一个很重要的入口,但目前搜索功能还是残废状态,主要原因是现在实现的方案太复杂、效果太差,我直接关闭了。
整理下来搜索方案有几种(成本从低到高排序):
- postgresql/mysql 全文搜索(0$)
- SaaS 版:类似 algolia 的搜索服务(0-15$/month)
- 自部署 elasticsearch + DB sync(50$/month)
- OpenAI embedding API + vector database/self hosted faiss(100-200$/month)
- 托管版 es(aws opensearch/aliyun search)(200$/month)
- 无服务器:aws opensearch serverless(700$/month)
- 自主设计搜索系统:多模态、多路召回、用户反馈系统等(10000$/month)
早期尝试
Hackertalk 最早的搜索版本是用阿里云的 elasticsearch + 数据同步实现的,机器成本大概每月 200$,每次改动 table 都要重建索引,重新同步,维护成本很高,由于我没有深度优化 es,搜索质量也不行,后来项目越来越多,每个都要这样做,运维成本太高了,于是打算切换方案,自部署 es 的方案因为维护成本更高,从始至终都没考虑过。
之后尝试 mysql nlp 全文搜索,效果实在太差,分词方式不友好,定制能力差,在 2.0 切换到 pg 之后尝试类似的方式,效果预计有所提升,需要不少开发工作,还在观望中。
SaaS + AI
algolia 的服务也不错,成本低,只需要对接 API 即可,开发方便,但语义搜索能力还不是很满意,猜测背后是用 es 集群做的多租户模式 + 少量改进。
在 chatGPT 火起来之后,因为 gpt 模型的语义理解能力很强,我也考虑用 OpenAI embedding API + 向量数据库实现搜索功能,embedding API 的成本非常低(一次性),成本都在向量数据库上,方案简洁,实现简单,最终效果非常惊艳,语义搜索效果很好,错别字、近义词匹配的很不错,这是我最能接受的方案,缺点是向量数据库还不够好用,SaaS 版成本还是太高,今年向量数据库也是一个很火的创业方向,预计之后会有明显的成本下降。
Serverless
AWS 的 Opensearch Serverless 版本也是一个很大的亮点,SDK 好用质量高,实现简洁,但启动成本较高,最少 4 个 OCU(可以多项目共享),700$/month,至少上线 5 个搜索项目才能体验到明显的成本下降。
最后一种需要一支搜索团队才能实现,不是我能够搞定的,不考虑。以上就是一些搜索方案的尝试,Hackertalk 之后应该会在 4、6 中选一种实现。