使用 Google ADK 與 Vertex AI 建構強大的 RAG 代理 – IPFLY 代理實現無限制的網路資料存取

18次閱讀

檢索增強生成(RAG)代理結合大型語言模型(LLM)與外部網路資料的力量,提供準確且富含情境的回應——這對於市場研究、客戶支援與競爭分析等企業使用案例至關重要。使用 Google ADK(代理開發套件)與 Vertex AI 建構 RAG 代理可簡化工作流程協調與 LLM 整合,但最大的瓶頸在於不受限制地存取高品質的網路資料。

IPFLY 的優質代理解決方案(遍佈 190 多個國家的 9000 多萬個全球 IP、靜態/動態住宅代理及資料中心代理)解決了這個問題:多層 IP 過濾可繞過反爬蟲措施,全球覆蓋範圍解鎖區域特定資料,99.9% 的正常運作時間確保資料擷取的一致性。本指南將逐步引導您建構 RAG 代理——從設定 Google Cloud 工具到整合 IPFLY 進行網路資料收集、向量化資料,以及部署可上線的代理。

使用 Google ADK 與 Vertex AI 建構強大的 RAG 代理 – IPFLY 代理實現無限制的網路資料存取

介紹 RAG 代理、Google ADK、Vertex AI 與 IPFLY 的角色

RAG 代理消除了傳統 LLM 的「知識截止」問題,透過檢索即時且相關的網路資料來增強回應。例如:

  • 客戶支援 RAG 代理可以從您的網站提取最新的產品規格。
  • 市場研究代理可以爬蟲競爭對手定價與產業趨勢。
  • 銷售代理可以存取區域市場資料以個人化推銷內容。

Google ADK 與 Vertex AI 簡化了 RAG 開發:

  • Google ADK:使用預建工具協調工作流程(網路爬蟲、資料擷取、LLM 提示)以處理代理邏輯。
  • Vertex AI:託管強大的 LLM(Gemini Pro/Ultra)與向量資料庫(Vertex AI Vector Search),以實現快速、可擴展的知識檢索。

但有一個問題:為 RAG 收集網路資料經常遇到障礙——IP 封鎖、地理限制和反爬蟲工具(例如驗證碼、WAF)限制了資料品質與範圍。這就是 IPFLY 不可或缺的原因。

IPFLY 的代理基礎架構專為企業級 RAG 需求而建:

  • 動態住宅代理:依請求輪換以模仿真實使用者行為,避免在爬蟲敏感的網站(例如 LinkedIn、產業部落格)上被偵測。
  • 靜態住宅代理:永久的 ISP 分配 IP,可持續存取可信賴的來源(例如政府資料集、公司網站)。
  • 資料中心代理:高速、獨享 IP,用於大規模資料處理(例如大量產業報告)。
  • 完整的協定支援(HTTP/HTTPS/SOCKS5)可與 Google ADK 的爬蟲工具無縫整合。

簡而言之,IPFLY 是您 RAG 代理的「資料管線骨幹」——確保您擁有訓練和驅動準確回應所需的乾淨、多樣化網路資料。

先決條件

開始之前,請確保您擁有:

  1. 啟用 Vertex AI 的 Google Cloud Platform(GCP)帳戶(在此註冊免費試用)。
  2. 已安裝 Google ADK(請遵循 GCP 的官方設定指南)。
  3. IPFLY 帳戶(可存取您偏好的代理類型:靜態/動態住宅或資料中心)。
  4. 向量資料庫(我們將使用 Vertex AI Vector Search,但也可以使用 Pinecone 或 Weaviate)。
  5. 基本 Python 知識(用於設定爬蟲和代理工作流程)。
  6. GCP 服務帳戶金鑰(具有 Vertex AI、Cloud Storage 和 ADK 的權限)。

💡 專業提示:先用小型爬蟲腳本測試 IPFLY 代理,驗證連線能力以避免後續設定延遲。

使用 Google ADK、Vertex AI 與 IPFLY 建構 RAG 代理的逐步指南

我們將建構一個市場研究 RAG 代理,它會爬蟲產業趨勢、競爭對手資料和區域市場洞察——然後使用 Vertex AI 的 Gemini Pro 回答商業問題。IPFLY 將為所有網路資料收集提供動力。

1. 設定 IPFLY 代理以進行網路資料收集

首先,設定 IPFLY 以處理您 RAG 代理的網路爬蟲。我們將使用 IPFLY 的動態住宅代理以獲得高匿名性和輪換——非常適合爬蟲多樣化的市場資料來源。

步驟 1.1:取得 IPFLY 代理憑證

登入您的 IPFLY 帳戶並提取:

  • 代理端點(例如 http://proxy.ipfly.com:8080)。
  • 使用者名稱/密碼(用於身份驗證)。
  • 代理類型(我們將為此專案使用 dynamic_residential)。

步驟 1.2:建立具有 IPFLY 整合的爬蟲

使用 Python 的 requests 函式庫(與 Google ADK 相容)建構一個從目標網站(例如產業部落格、競爭對手網站、市場研究入口網站)提取資料的爬蟲。整合 IPFLY 的代理以繞過封鎖。

Python

import requests
from bs4 import BeautifulSoup
import json

# IPFLY 代理設定
IPFLY_PROXY = {
    "http": "http://[IPFLY_USERNAME]:[IPFLY_PASSWORD]@proxy.ipfly.com:8080",
    "https": "http://[IPFLY_USERNAME]:[IPFLY_PASSWORD]@proxy.ipfly.com:8080"
}

# 市場研究資料的目標網站(根據您的使用案例自訂)
TARGET_SITES = [
    "https://www.forbes.com/industries/technology",
    "https://techcrunch.com/startups/",
    "https://www.statista.com/topics/3374/artificial-intelligence-ai/"
]

def scrape_with_ipfly(url):
    """使用 IPFLY 代理爬蟲網路資料以避免封鎖。"""
    try:
        # 使用 IPFLY 代理傳送請求
        response = requests.get(
            url,
            proxies=IPFLY_PROXY,
            timeout=30,
            headers={
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                            "AppleWebKit/537.36 (KHTML, like Gecko) "
                            "Chrome/120.0.0.0 Safari/537.36"
            }
        )
        response.raise_for_status()  # 針對 HTTP 問題拋出錯誤
        
        # 解析內容(根據網站結構自訂)
        soup = BeautifulSoup(response.text, "html.parser")
        articles = soup.find_all("article")  # 調整目標網站的選擇器
        
        scraped_data = []
        for article in articles[:5]:  # 示範限制為前 5 篇文章
            title = article.find("h2").get_text(strip=True) if article.find("h2") else None
            summary = article.find("p").get_text(strip=True) if article.find("p") else None
            date = article.find("time")["datetime"] if article.find("time") else None
            
            if title and summary:
                scraped_data.append({
                    "title": title,
                    "summary": summary,
                    "source_url": url,
                    "scraped_date": json.dumps(datetime.utcnow(), default=str),
                    "ipfly_proxy_used": "dynamic_residential"
                })
        
        return scraped_data
    
    except Exception as e:
        print(f"爬蟲 {url} 失敗:{str(e)}")
        return []

# 爬蟲所有目標網站
all_scraped_data = []
for site in TARGET_SITES:
    data = scrape_with_ipfly(site)
    all_scraped_data.extend(data)

# 將資料儲存為 JSON(以供擷取到向量資料庫)
with open("ipfly_scraped_market_data.json", "w") as f:
    json.dump(all_scraped_data, f, indent=2)

print(f"使用 IPFLY 代理成功爬蟲 {len(all_scraped_data)} 筆記錄!")

IPFLY 在此的關鍵優勢:

  • 反爬蟲繞過:IPFLY 的多層 IP 過濾確保不使用列入黑名單的 IP,避免在 Forbes 或 TechCrunch 等網站上被封鎖。
  • 全球覆蓋:如果您需要區域資料(例如亞洲科技趨勢),只需更新代理端點即可切換至 IPFLY 的亞洲 IP(支援 190 多個國家)——無需重寫程式碼。
  • 無限併發:IPFLY 的專用伺服器可處理高流量爬蟲(擴展至 100 多個目標網站而不會減速),對企業級 RAG 代理至關重要。

2. 設定 Vertex AI Vector Search(知識庫)

RAG 代理依賴向量資料庫來儲存和檢索相關的網路資料。我們將使用 Vertex AI Vector Search 以與 Google ADK 和 Gemini 無縫整合。

步驟 2.1:在 Vertex AI 中建立向量索引

  1. 前往 Vertex AI 主控台。
  2. 導覽至 Vector Search > Indexes,然後點擊 Create Index。
  3. 設定:
    • 索引名稱:rag-market-research-index
    • 嵌入模型:使用 Vertex AI 的 text-embedding-004(1536 維向量)。
    • 儲存空間:Cloud Storage 儲存桶(建立新的或現有的)。

步驟 2.2:嵌入並擷取 IPFLY 爬蟲的資料

使用 Vertex AI 的嵌入 API 將爬蟲的文字(標題、摘要)轉換為向量,然後將其擷取到向量索引中。

Python

from google.cloud import aiplatform
from google.oauth2 import service_account

# 使用 GCP 進行身份驗證
credentials = service_account.Credentials.from_service_account_file(
    "gcp-service-account-key.json"
)
aiplatform.init(
    credentials=credentials,
    project="[YOUR_GCP_PROJECT_ID]",
    region="[YOUR_REGION]"
)

# 載入 IPFLY 爬蟲的資料
with open("ipfly_scraped_market_data.json", "r") as f:
    scraped_data = json.load(f)

# 使用 Vertex AI Embedding API 嵌入資料
def embed_text(text):
    """使用 Vertex AI 為文字生成嵌入。"""
    embedding_client = aiplatform.EmbeddingClient(model_name="text-embedding-004")
    response = embedding_client.embed_text([text])
    return response.embeddings[0].values

# 為向量索引準備資料
vector_records = []
for item in scraped_data:
    combined_text = f"Title: {item['title']} | Summary: {item['summary']}"
    embedding = embed_text(combined_text)
    
    vector_records.append({
        "id": item["title"].replace(" ", "-").lower(),
        "embedding": embedding,
        "metadata": {
            "summary": item["summary"],
            "source_url": item["source_url"],
            "scraped_date": item["scraped_date"],
            "proxy_type": item["ipfly_proxy_used"]
        }
    })

# 擷取到 Vertex AI Vector Search
index = aiplatform.MatchingEngineIndex(
    index_name="[YOUR_VECTOR_INDEX_RESOURCE_NAME]"
)
index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
    index_endpoint_name="[YOUR_INDEX_ENDPOINT_NAME]"
)

# 批次擷取(每次最多支援 1 萬筆記錄)
index_endpoint.upsert_embeddings(embeddings=vector_records)

print(f"已將 {len(vector_records)} 個向量記錄擷取到 Vertex AI Vector Search!")

3. 使用 Google ADK 建構 RAG 工作流程

Google ADK 協調 RAG 管線:使用者查詢 → 檢索相關向量 → 增強 LLM 提示 → 生成回應。我們將使用 ADK 的 Agent 和 Tool 類別來定義工作流程。

步驟 3.1:定義檢索工具(連接至向量索引)

建立一個查詢 Vertex AI Vector Search 索引的工具,以檢索使用者的相關網路資料。

Python

from google.agent.builder import Agent, Tool
from google.agent.builder.tool import ToolResult

class VectorSearchRetrievalTool(Tool):
    """從 Vertex AI Vector Search 檢索相關資料的工具。"""

    def __init__(self, index_endpoint):
        super().__init__(
            name="vector_search_retriever",
            description="從網路來源檢索相關市場研究資料(使用 IPFLY 代理爬蟲)。"
                       "使用此工具回答有關產業趨勢、競爭對手洞察或市場統計的問題。",
            input_schema={"query": "string"}
        )
        self.index_endpoint = index_endpoint
    
    def run(self, query: str) -> ToolResult:
        # 嵌入使用者查詢
        query_embedding = embed_text(query)
        
        # 搜尋向量索引(前 3 個相關結果)
        response = self.index_endpoint.match(
            query_embeddings=[query_embedding],
            num_neighbors=3,
            return_full_documents=True
        )
        
        # 格式化結果
        retrieved_context = ""
        for match in response.matches[0].matches:
            metadata = match.metadata
            retrieved_context += f"來源:{metadata['source_url']}\n"
                                f"摘要:{metadata['summary']}\n\n"
        
        return ToolResult(output=retrieved_context)

步驟 3.2:整合 IPFLY 進行隨選爬蟲

使用隨選爬蟲工具擴充工作流程——如果向量索引缺少相關資料,代理會使用 IPFLY 代理爬蟲新資料。

Python

class IPFlyOnDemandScraperTool(Tool):
    """使用 IPFLY 代理爬蟲新網路資料的工具,用於隨選查詢。"""

    def __init__(self):
        super().__init__(
            name="ipfly_on_demand_scraper",
            description="使用 IPFLY 代理從網路來源爬蟲新市場研究資料。"
                       "如果向量搜尋工具未回傳相關結果,請使用此工具。",
            input_schema={"query": "string", "target_url": "string"}
        )

    def run(self, query: str, target_url: str) -> ToolResult:
        # 使用 IPFLY 爬蟲新資料
        fresh_data = scrape_with_ipfly(target_url)
        
        # 格式化結果
        fresh_context = ""
        for item in fresh_data[:3]:  # 前 3 個新結果
            fresh_context += f"來源:{item['source_url']}\n"
                            f"標題:{item['title']}\n"
                            f"摘要:{item['summary']}\n\n"
        
        # 選擇性:將新資料擷取到向量索引以供未來查詢
        # (在此處新增嵌入和 upsert fresh_data 的程式碼)
        
        return ToolResult(output=fresh_context)

步驟 3.3:使用 Google ADK 與 Vertex AI LLM 組裝 RAG 代理

將工具與 Gemini Pro(透過 Vertex AI)結合,建構完整的 RAG 代理。

Python

def build_rag_agent(index_endpoint):
    """使用 Google ADK、Vertex AI LLM 和 IPFLY 工具建構 RAG 代理。"""
    # 初始化工具
    retrieval_tool = VectorSearchRetrievalTool(index_endpoint)
    scraping_tool = IPFlyOnDemandScraperTool()

    # 定義代理提示(使用 IPFLY 爬蟲的內容增強)
    agent_prompt = """
    您是由 Google ADK、Vertex AI 和 IPFLY 代理驅動的市場研究 RAG 代理。
    請使用以下步驟回答使用者查詢:
    1. 首先,使用 vector_search_retriever 工具尋找相關的現有網路資料(使用 IPFLY 爬蟲)。
    2. 如果未找到相關資料,請使用 ipfly_on_demand_scraper 工具爬蟲新資料。
    3. 使用檢索/爬蟲的內容來增強您的回應——務必引用來源。
    4. 保持回應簡潔、資料驅動,並專注於使用者的查詢。
    
    請勿捏造資訊——僅使用 IPFLY 爬蟲來源的資料。
    """

    # 使用 Gemini Pro LLM 建立代理
    agent = Agent(
        prompt=agent_prompt,
        tools=[retrieval_tool, scraping_tool],
        llm=aiplatform.ChatModel(model_name="gemini-pro"),
        temperature=0.3  # 降低以獲得事實性回應
    )
    
    return agent

# 初始化代理
rag_agent = build_rag_agent(index_endpoint)
print("使用 Google ADK、Vertex AI 和 IPFLY 成功建構 RAG 代理!")

4. 測試 RAG 代理

使用市場研究查詢測試代理,以驗證資料檢索和回應品質。

Python

# 測試查詢:"AI 新創公司的最新趨勢是什麼?"
user_query = "What are the latest trends in AI startups?"
response = rag_agent.query(user_query)

print("使用者查詢:", user_query)
print("\n代理回應:", response.text)

範例輸出:

使用者查詢:What are the latest trends in AI startups?

代理回應:根據 IPFLY 從產業來源爬蟲的資料:

1. 來源:https://techcrunch.com/startups/
   摘要:專注於垂直領域特定解決方案的 AI 新創公司(例如醫療診斷、工業自動化)正吸引創紀錄的資金——2025 年第一季年增 40%。

2. 來源:https://www.forbes.com/industries/technology
   摘要:用於企業工作流程自動化的生成式 AI(例如文件處理、客戶支援)是成長最快的領域,60% 的財星 500 大企業正在試用 AutomationAI 等新創公司的工具。

3. 來源:https://www.statista.com/topics/3374/artificial-intelligence-ai/
   摘要:整合邊緣運算以降低延遲的 AI 新創公司正獲得關注,特別是在 IoT 和製造業使用案例中。

所有資料都是透過 IPFLY 動態住宅代理收集,以確保不受限制地存取網路來源。

5. 使用 IPFLY 最佳化 RAG 代理

為了提升效能,請使用以下 IPFLY 專屬最佳化:

5.1:選擇正確的代理類型

  • 高匿名性需求(例如爬蟲競爭對手網站):使用 IPFLY 的動態住宅代理(依請求輪換)。
  • 持續存取(例如政府資料集):使用靜態住宅代理(永久的 ISP IP)。
  • 大規模爬蟲(例如大量產業報告):使用資料中心代理(高速、低延遲)。

5.2:安排定期資料重新整理

使用 IPFLY 的代理透過 cron 工作或 Google Cloud Scheduler 自動執行每日/每週爬蟲,讓向量索引保持更新。

5.3:利用 IPFLY 的 24/7 支援

如果您遇到爬蟲封鎖或代理問題,IPFLY 的技術支援可快速解決——這對需要 99.9% 正常運作時間的生產級 RAG 代理至關重要。

企業級 RAG 代理的關鍵考量

  1. 合規性:確保網路爬蟲符合目標網站的服務條款和法規(GDPR、CCPA)。IPFLY 的代理經過篩選以避免列入黑名單的 IP,支援合法的資料收集。
  2. 可擴展性:IPFLY 的 9000 多萬個 IP 池和無限併發能力可隨您的代理資料需求擴展——從 10 個到 1 萬個目標網站。
  3. 成本效益:IPFLY 的按量付費定價(無隱藏費用)讓爬蟲成本保持低廉,即使是大規模 RAG 代理亦然。
  4. 資料品質:IPFLY 的多層 IP 過濾消除了低品質或重複使用的 IP,確保爬蟲資料乾淨可靠。

常見問題疑難排解

問題 解決方案
目標網站的爬蟲封鎖 切換至 IPFLY 的動態住宅代理;更新 user-agent 標頭以模仿真實瀏覽器。
資料擷取速度慢 使用 IPFLY 的資料中心代理進行高速爬蟲;批次向 Vertex AI 擷取向量。
不相關的 RAG 回應 調整向量搜尋工具以回傳更多鄰近項目(例如 5 個而非 3 個);新增詮釋資料篩選器(例如爬蟲日期)。
代理連線錯誤 驗證 IPFLY 憑證;檢查 GCP 防火牆規則以允許代理流量。

結論

使用 Google ADK 與 Vertex AI 建構 RAG 代理可解鎖強大的資料驅動 AI 功能——但代理的準確度完全取決於存取高品質網路資料的能力。IPFLY 的優質代理解決了最大的瓶頸:從全球來源不受限制且可靠地收集資料。

透過將 IPFLY 整合到您的 RAG 管線中,您可以獲得:

  • 190 多個國家的覆蓋範圍以取得區域特定資料。
  • 反爬蟲繞過以存取難以觸及的網站。
  • 99.9% 的正常運作時間以實現一致的資料擷取。
  • 與 Google ADK 和 Vertex AI 的無縫相容性。

無論您是建構市場研究代理、客戶支援工具或銷售助理,IPFLY 的代理都能確保您的 RAG 代理擁有交付準確、有價值回應所需的上下文。

準備好建構您的企業級 RAG 代理了嗎?將 Google ADK、Vertex AI 與 IPFLY 的全球代理解決方案配對使用——為 AI 解鎖網路資料的全部潛力。

正文完
 0
IPFLY
IPFLY
高質量代理的領先提供商
用户数
2
文章数
1951
评论数
0
阅读量
910083