プログラマー向けモードで表示中ビジネスユーザー向けへ
Bright Data 学習ポータル
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 の精度だけでなく再クロール頻度と削除ポリシーも同じくらい重要です。

関連リンク