Hacker News 中文摘要

RSS订阅

Show HN: 用30亿神经嵌入从零构建网页搜索引擎 -- Show HN: Building a web search engine from scratch with 3B neural embeddings

文章摘要

作者在两个月内从零开始构建了一个基于30亿神经嵌入的网页搜索引擎,旨在解决现有搜索引擎中SEO垃圾信息泛滥和内容相关性下降的问题。他利用Transformer文本嵌入模型提升语言理解能力,力求在复杂或微妙的查询中提供更高质量的结果,超越传统的关键词匹配,实现更接近人类智能的搜索体验。

文章总结

标题:用30亿神经嵌入在两个月内从零构建一个网页搜索引擎

主要内容:

作者在两个月内从零开始构建了一个网页搜索引擎,主要动机是当前搜索引擎的质量下降,充斥着SEO垃圾信息,且缺乏相关的高质量内容。作者希望通过基于Transformer的文本嵌入模型,提升搜索引擎的智能化水平,使其能够理解用户意图,而不仅仅是关键词匹配。

项目亮点: - 使用200个GPU集群生成了30亿个SBERT嵌入。 - 高峰期,数百个爬虫每秒抓取5万个页面,最终索引达到2.8亿个。 - 端到端查询延迟约为500毫秒。 - 使用RocksDB和HNSW进行分片,分布在200个核心、4TB内存和82TB的SSD上。

架构概述: - 实验场:验证神经嵌入是否优于传统搜索。 - 规范化:从抓取的页面中提取语义文本,去除无关的HTML标签和噪音。 - 分块:将文本分块,保留语义上下文,避免信息丢失。 - 爬虫:构建了一个高效的Node.js爬虫,处理大量请求并避免内存泄漏。 - 管道:使用Rust协调服务高效处理任务状态转换。 - 存储:最初使用PostgreSQL,后转向RocksDB以优化写入性能。 - 服务网格:使用mTLS和HTTP/2进行安全通信,简化服务发现和调用。 - GPU扩展:使用Runpod的高性价比GPU进行嵌入推理,确保高效利用。 - 分片HNSW:将HNSW索引分片,以支持更大规模的向量搜索。 - 优化延迟:通过Cloudflare Argo和服务器端渲染减少查询延迟。 - 知识图谱:利用Wikipedia和Wikidata构建知识面板,提供丰富的上下文信息。 - 搜索结果页(SERP):设计简洁的搜索结果页面,减少SEO垃圾信息,提供高质量的搜索结果。 - AI助手:集成LLM,提供快速答案和对话功能,增强搜索体验。 - 搜索质量:强调爬取和过滤的重要性,确保搜索结果的相关性和质量。 - 成本优化:通过选择高性价比的硬件和服务,大幅降低了项目成本。

结论与未来方向: 作者认为神经嵌入在搜索中的潜力巨大,能够帮助用户找到高质量的内容和见解。未来,作者计划探索更聚焦的索引,针对特定领域和意图提供更准确和相关的搜索结果。此外,作者还计划进一步优化爬虫、嵌入模型和存储系统,以提升搜索引擎的性能和效率。

相关资源: - 项目演示 - CoreNN向量数据库

评论总结

评论内容总结:

  1. 对项目的积极评价与商业化建议

    • 评论1(abraxas):“Very nice project. Do you have plans to commercialize it next?”(非常好的项目。你下一步有计划商业化吗?)
    • 评论6(Imustaskforhelp):“Please open source it and lets hope that the community tries to figure out a way around some ways of monetization/crowd funding to actually make it sustainable.”(请开源它,希望社区能找到一些盈利或众筹的方式,使其可持续发展。)
  2. 对搜索引擎质量的讨论

    • 评论2(giancarlostoro):“Google search used to be razor sharp, then it degraded in the late 2000s and early 2010s and now its meh.”(谷歌搜索曾经非常精准,但在2000年代末和2010年代初开始退化,现在表现平平。)
    • 评论7(1gn15):“Creating a search engine that beats Google in quality in just 2 months and less than a thousand dollars.”(在两个月内,花费不到一千美元就创建了一个质量超过谷歌的搜索引擎。)
  3. 对技术细节的提问与赞赏

    • 评论3(randomcatuser):“A question on the service mesh - is building your own typically the best way to do things?”(关于服务网格的问题——自己构建通常是最好的方式吗?)
    • 评论8(AndrewKemendo):“That stack element is amazing. I wish more people showed their whole exploded stack like that and in an elegant way.”(那个技术栈展示非常棒。希望更多人能以如此优雅的方式展示他们的完整技术栈。)
  4. 对数据与开源的期待

    • 评论4(ccgreg):“I love seeing the worked out example at scale -- I’m surprised at how cost effective the vector database was.”(我喜欢看到大规模的实际例子——我对向量数据库的成本效益感到惊讶。)
    • 评论6(Imustaskforhelp):“Please, actually follow up on that common crawl promise and maybe even archive.org or other websites too.”(请务必跟进Common Crawl的承诺,或许还可以包括archive.org或其他网站。)
  5. 对项目潜力的高度评价

    • 评论6(Imustaskforhelp):“Not going to lie, But this feels like a little magic and I am all for it.”(说实话,这感觉像是一种魔法,我完全支持它。)
    • 评论9(lysecret):“Just wow. My greatest respect! Also an incredible write up.”(哇,我最大的敬意!这篇文章也非常棒。)