LLM用の高速ウェブサイトパーサーを14メガバイトのRAMで動かす方法
最後にRAGパイプライン用にWebスクレイピングのローカルスタックをデプロイしようとしたとき、私の貧相なVPSはあっさり悲鳴を上げました。ブラウザエンジン、タスクキュー、重いランタイムの組み合わせが、瞬時にギガバイト単位のメモリを食い尽くしたのです。Firecrawlのような人気のソリューションをセルフホストしようとしたことがある方は、きっとあのシステム要件を覚えているでしょう。
最近、fastCRWプロジェクトが目にとまりました(リポジトリでは単にcrwと呼ばれています)。著者は馴染みのあるスクレイピングとクローリングの機能をRustで書き直し、すべてをコンパクトなバイナリに収めました。
このプロジェクトできること
fastCRWはFirecrawlやTavilyへの直接的な代替として構想されました。URLでWebページを取得し、言語モデルがすぐに使えるクリーンなMarkdown、または構造化されたJSONとして提供します。
このツールは4つの主要なタスクを処理します:
- スクレイプ: ページをMarkdown、生のHTML、またはスクリーンショットに変換します。
- クロール: robots.txtを尊重しながら、内部リンク経由でサイトページを体系的に巡回します。
- マップ: 各ページを完全に読み込まずにリソースのリンクマップを構築します。
- 検索: インターネットを検索し、結果を即座にエクスポートします。
リポジトリのベンチマークによると、1000件のアドレスのオープンデータセットでは、fastCRWは良好な読み込み速度とデータ抽出の完全性を示し、アイドル時のバイナリはわずか約14メガバイトのRAMを使用します。
使い方
登録なしでローカルでユーティリティを試すか、フリープランのクラウドバックエンドに接続できます。
ターミナルでのインストール:
curl -fsSL https://fastcrw.com/install | sh
これにより、CLIが利用可能になります。シンプルな呼び出しで、解析されたMarkdownを出力ストリームに直接返します:
crw https://example.com
コードへの統合
開発者向けに、 готовыеライブラリが用意されています。Pythonでのデータ収集の例:
from crw import CrwClient
client = CrwClient()
page = client.scrape("https://example.com", formats=["markdown"])
print(page["markdown"])
Node.jsの場合も構文はほとんど同じです:
import { CrwClient } from "crw-sdk";
const client = new CrwClient();
const page = await client.scrape("https://example.com", {
formats: ["markdown"],
});
console.log(page.markdown);
MCP経由でのAIアシスタントへの接続
追加の利点はModel Context Protocolのサポートです。つまり、このユーティリティはClaude Desktop、Cursor、またはその他のエージェントのツールとして素早く接続できます。
自動MCP設定のコマンド:
npx -y crw-mcp@latest install
インストール後、モデルは外部スクリプトの回避策なしで自律的にWebを検索し、ページを読み取ることができます。
デプロイオプションとライセンス
プロジェクトには2つの使用パスがあります。1つはLinuxまたはmacOSで自有サーバーにローカルバイナリを実行する方法です。2番目は、重いJavaScriptレンダリングと検索 готовыеのクラウドAPIです。
プロダクション環境にツールをデプロイする予定がある場合は、ライセンスを確認することが重要です。エンジン自体とMCPサーバーは厳格なAGPL-3.0ライセンスの下で配布されています。PythonとTypeScriptのクライアントライブラリは、親しみやすいMITの下でオープンソースです。
誰が役立つか
RAGシステムの構築、モデルのファインチューニング用のデータ収集、自律型AIエージェントの作成を行っていて、fastCRWは優れた選択肢です。このプロジェクトにより、記事やドキュメントからプレーンテキストを抽出するためだけに、重いブラウザの fleet を維持する必要がなくなります。
重いパーサーにサーバーのリソースの半分を費やすることに厌倦しているなら、crwをローカルで実行してみてください—メモリ消費の違いは最初の数秒から顕著です。
関連プロジェクト