搜索功能的实现成本有多高?

黑客说 2.0 已经整体迁移完毕,搜索是一个很重要的入口,但目前搜索功能还是残废状态,主要原因是现在实现的方案太复杂、效果太差,我直接关闭了。

整理下来搜索方案有几种(成本从低到高排序):

  1. postgresql/mysql 全文搜索(0$)
  2. SaaS 版:类似 algolia 的搜索服务(0-15$/month)
  3. 自部署 elasticsearch + DB sync(50$/month)
  4. OpenAI embedding API + vector database/self hosted faiss(100-200$/month)
  5. 托管版 es(aws opensearch/aliyun search)(200$/month)
  6. 无服务器:aws opensearch serverless(700$/month)
  7. 自主设计搜索系统:多模态、多路召回、用户反馈系统等(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 中选一种实现。

Comments
登录后评论
Sign In
·

以上为最小系统成本,如果正式使用,需要至少 3 倍(开发、测试、生产环境)

·

可以直接跳转到 bing 搜索 , 用 内容+空格+site: 后面加网站域名

内容 site:hackertalk.net

一个例子

·

10G 以下的数据一个 2C4G 的单机 ES 就够了,成本不高

去年帮一个老板做搜索+推荐,10w 多条数据,不到 2G,4C8G 部署了 ES+Kibana, ES 只给了4G 内存,稳定运行一年多毫无问题