21CTO导读:只要你有10美元和1GB的存储空间,Marlin可以让你优先抓取你真正关心的网络内容。
若你厌倦了搜索结果淹没你真正关心的内容,你可以像这位开发者那样,构建自己的搜索索引。
来自英国诺丁汉的开发者 Alex Morley-Finch 为自己创建了名为Marlin 的开源项目 ,该项目以大约 10 美元租用的云 GPU 时间,以及不到 1 GB 的磁盘存储空间,并对大约 560,000 个网站主页进行了编目。
GitHub:https://github.com/alexmorleyfinch/marlin
Morley-Finch 在一篇关于该项目的文章中写出自己的想法源头,他本来想要一个搜索引擎,用来搜索他关心的事物,例如“作品集、杂志、奇怪的小型艺术项目、单人软件”,以及其他一些“人们在做事情”并在互联网上分享的内容。
他如此解释道:“这很简单,只需要一个只抓取首页的爬虫,一个小型本地语言模型,读取每个首页并写入名称、两三句话、一个类别和几个标签。不进行 IP 扫描,不使用 Redis,不存储完整的页面 HTML,不使用重新抓取调度器,也不使用任何多租户功能。”
Morley-Finch 构建 Marlin 时,围绕这四个流程:一个抓取域名的获取器、一个调用小型 OpenAI 兼容语言模型的执行器、一个防止不良页面进入索引的管理器,以及一个带有 Web UI 的 API,他可以通过该 UI 跟踪流程并实际执行索引搜索,并带有过滤器。
当然,我们不能指望这种事情第一次尝试就能完美无缺。
“第一个版本几个小时就运行起来了。把它指向一些域名样本,看着内容被汇总,然后进行搜索。这太棒了,”他在项目报告中写道。“周日下午(他是在周日开始开发 Marlin 的),我查看了实际编目的内容,发现那不是我想要的网站。”
Morley-Finch 没有屏蔽某些域名,而是建立了一个权重系统,将某些页面推到抓取队列的顶部,而将其他页面尽可能地推到列表的底部。
Morley-Finch 租用了一台云端 GPU 来处理大部分繁重的处理工作,在抓取了大约 56 万页内容后停止了爬取,因为他优先抓取的类别已经全部抓取完毕,开始抓取“原始互联网”的内容。他租用这台云端 GPU 花费了大约 10 美元。
他遇到的一个主要问题,也是任何其他试图复制他的项目的人可能都会遇到的问题,就是标记和分类——如果交给语言模型来处理,这些重要的元素就会变得有点混乱。
“我让模型自由地创造自己的类别和标签名称,因为理论上它可以教会我分类法,而不是让我事先猜测,”他解释说,并指出这有助于快速入门,但“最终我得到了 671 个不同的类别,其中许多类别只使用了一次,以及超过 121,000 个标签,其中一半以上只使用了一次。”
Morley-Finch 不得不构建一个手动合并工具来清理混乱局面,这让他宣称他的设计可能无法扩展到业余爱好者项目之外,因为“‘让模型自由发挥’很快就会让你付出代价”。
不过,他认为搜索还有粗糙的地方,但不应该吓退任何愿意花一个周末时间去摆弄它的人。
“我认为这完全可以在一个周末内完成,而且成本相当低,所以显卡费用不会成为放弃尝试的理由,”Morley-Finch 这样写道。“代码将以开源形式发布,因此你可以根据自己的好奇心自由去探索。”
Marlin GitHub 代码库中包含大量的操作指南和详细信息,方便用户根据自身优先级创建自定义权重列表,如果硬件性能不足,还可以选择来租用云端 GPU。
作者:场长
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。