UC-DEV-007DeveloperLv4
Weaviate 連携 RAG
Weaviate に取り込む前処理として Crawl API を使い、RAG の検索精度を上げる。
WeaviateCrawl API
KPI 例
- ベクトル件数
- 検索適合率
- 鮮度
Bright Data と Weaviate の組み合わせは、「検索で候補 URL を見つける」「本文を取る」「ベクトル化して検索する」を分離したい RAG で有効です。Bright Data 公式 Blog の Weaviate 例でも、SERP API で記事 URL を見つけ、Web Unlocker で本文を取得し、Weaviate でハイブリッド検索と生成を行う構成が紹介されています。
誰の課題か
- PDF や社内ドキュメントだけでなく、公開 Web の最新情報も RAG に入れたい AI エンジニア
- URL を固定せず、トピックから記事を毎回見つけて取り込みたいチーム
- ベクトル検索だけでなく、元 URL を残した引用付き回答まで一気通貫で作りたい担当者
推奨製品セット
| 製品 | 役割 | このページでの使い方 |
|---|---|---|
| SERP API | 記事 URL 発見 | トピックから候補記事を見つける |
| Web Unlocker | 本文取得 | 見つけた URL の HTML / 本文を取る |
| Weaviate | ベクトル保存と検索 | ハイブリッド検索と生成を担当する |
| Cohere などの埋め込み基盤 | ベクトル化 | Weaviate 側の自動ベクトル化に使う |
- Bright Data 側の主な役割は URL 発見と本文取得です。
- Weaviate 側では、ハイブリッド検索と生成を 1 リクエストで行う構成も取れます。
最小実装イメージ
Bright Data 側で「見つける」と「取る」を分ける
Bright Data Blog の Weaviate 例では、次の役割分担です。
- SERP API がトピックに関する記事 URL を見つける
- Web Unlocker が見つけた記事本文を取得する
- ローカルでチャンク化したあと Weaviate へ投入する
Weaviate へ接続してコレクションに入れる
import weaviate
from weaviate.classes.init import Auth
client = weaviate.connect_to_weaviate_cloud(
cluster_url="YOUR_WEAVIATE_URL",
auth_credentials=Auth.api_key("YOUR_WEAVIATE_API_KEY"),
headers={"X-Cohere-Api-Key": "YOUR_COHERE_API_KEY"},
skip_init_checks=True,
)
assert client.is_ready()ハイブリッド検索と生成をまとめて呼ぶ
collection = client.collections.use("WebContent")
response = collection.generate.hybrid(
query="What changed in the AI race this month?",
alpha=0.7,
limit=5,
grouped_task="""Based on the retrieved documents below, answer the question and cite source URLs.""",
)
print(response.generated)- Weaviate 側では
generate.hybrid()により、検索と生成をまとめて実行できます。 - Bright Data で取得した段階から URL、ドメイン、取得時刻を残しておくと、最終回答に引用を付けやすくなります。
運用ポイント
- URL 発見と本文取得を分離しておくと、検索クエリの見直しと取得失敗の切り分けを別々に進められます。
- Bright Data Blog の例は Web Unlocker + BeautifulSoup ですが、本文中心の RAG で raw HTML が不要なら Crawl API を検討する余地もあります。
- Weaviate に入れる前に、本文だけでなく URL、ドメイン、取得日時、コンテンツ種別をメタデータとして持たせてください。
- ハイブリッド検索の
alphaは万能な既定値があるわけではないので、評価データで調整したほうがよいです。 - 「最新性」が重要な RAG では、ベクトル DB の精度だけでなく再クロール頻度と削除ポリシーも同じくらい重要です。