crawl4ai で web サイトをクロールして Markdown 形式で取得し RAG, LLM に活用したいメモ

2024/09/07に公開

背景

RAG 流行りね.
その他, LLM で活用するにあたっても web サイトぺろっとクロールしてデータ取得しておきたい
web サイトを Markdown 形式でほしい...
日本語 LLM 向けコーパス構築用にクロールして Markdown 形式でほしい(CommonCrawl dump とかだと unstructured なのでつらい)

web クロールだと最近は firecrawl が流行りっぽいけど, OSS で完結したい...

crawl4ai がありました!
(意外と firecrawl clone なくて, 2024/09 時点では crawl4ai くらいのようでした)

crawl4ai

🔥🕷️ Crawl4AI: Open-source LLM Friendly Web Crawler & Scrapper
https://github.com/unclecode/crawl4ai

基本 Selenium でクロールして, LLM 向けにいい感じに処理する感じのようです.
embedding 計算(ONNX で CPU 実行)したりもできるようです.

インストールは特に難しくありません.

サンプルとして政府広報のページを処理してみます.

https://www.gov-online.go.jp/article/202408/entry-6338.html

from crawl4ai import WebCrawler

# Create an instance of WebCrawler
crawler = WebCrawler()

# Warm up the crawler (load necessary models)
crawler.warmup()

# Run the crawler on a URL
result = crawler.run(url="https://www.gov-online.go.jp/article/202408/entry-6338.html")

# Print the extracted content
print(result.markdown)
...
## POINT

パートタイムやアルバイトとして働いている皆さん、一定の条件を満たせば、厚生年金保険や健康保険などの社会保険の加入対象となることをご存じですか。令和6年(2024年)10月から、従業員数51人以上の企業で働くかたも社会保険の加入対象に拡大されます。社会保険に加入すると、将来の年金が増えたり、医療保険の給付が充実したりするなど、より手厚い保障を受けることができます。社会保険の拡大によるメリットや対象となる方々につい てご案内します。

## 目次

  * ➊社会保険の加入対象は?
  * ➋社会保険に加入するメリットは?
  * ➌どんな手続きが必要?
  * ➍事業主の皆さんへ
  * コラム:公的年金制度の種類

## 1社会保険の加入対象は?

従業員数51人以上の企業で働くパート・アルバイトのかたにまで、加入対象が広がります。

日本に住む20歳以上のかたは、公的年金制度(国民年金や厚生年金保険)や医療保険制度(健康保険など)に加入することになっています(コラム参照)。このうち、企業などで働くかたが加入対象となるのが、厚生年金保険 や健康保険といった「社会保険」です。フルタイムで働くかたなど(参照:従業員のカウント方法)だけでなく、一定の条件(参照:対象となる従業員の要件)を満たすパートやアルバイトのかたも社会保険の加入対象で、次 のように、段階的に対象となる企業の範囲が拡大されます。

![\\"社会保険の加入対象は令和4年(2022年)10月から、従業員数501人以上から101人以上の企業で働いているパートやアルバイトの方にも加入対象が拡大され、令和6年(2024年)10月からは51人以上の企業で働いているパートやアルバイトの方に拡大となる\\"](\\"/assets/entry-6338/hiseikihoken02_1.webp\\")
...

Voila~

TODO

おまけ: vector database

embedding を保持する vector database, Milvus とかありますが,
ローカル LLM 向けによりシンプルなのほしいですよね.
sqlite-vec https://github.com/asg017/sqlite-vec がよさそうです!
機能はいくつか制限あったりしますが, 組み込みしやすそうです.

Discussion