検索
ホームページテクノロジー周辺機器AI組織でのスマートな意思決定のためのRAGシステムを構築します

今日のペースの速いビジネス環境では、組織には決定を促進し、運用を最適化し、競争力を維持するデータが浸水しています。ただし、このデータから実用的な洞察を抽出することは、依然として重要なハードルのままです。 Agentic AIと統合された場合の検索総生成(RAG)システムは、関連する情報を取得するだけでなく、コンテキストアウェアの洞察をリアルタイムで処理して配信することにより、この課題に取り組みます。この組み合わせにより、企業はデータセットを自律的に照会し、製品機能、統合、および運用に関する洞察を抽出するインテリジェントエージェントを作成できます。

RAGとエージェントAIを統合することにより、企業は意思決定を強化し、散在したデータを貴重なインテリジェンスに変換できます。このブログでは、エージェントAIを使用したRAGパイプラインを構築するプロセスを調査し、組織でのスマートな意思決定を強化するための技術的な洞察とコード例を提供します。

学習目標

    Pythonとスクレイピングツールを使用して複数のWebソースから関連するデータを自動的に抽出およびスクレイする方法を学び、会社のインテリジェンスプラットフォームの基礎を形成します。
  • AI駆動型の手法を使用して、製品機能、統合、トラブルシューティングステップなどのキーポイントを抽出することにより、スクレイプされたデータを貴重で実用的な洞察に処理する方法を学びます。
  • RAGをドキュメント取得および自然言語生成と統合する方法を学び、広大なデータセットからコンテキスト認識の回答を提供できるインテリジェントクエリシステムを構築します。
  • データスクレイピング、知識抽出、リアルタイムクエリ処理を組み合わせたエージェントAIシステムを構築する方法を理解し、ビジネスが実用的な洞察を自律的に抽出できるようにします。
  • クラウドプラットフォームと分散アーキテクチャを使用して、このようなシステムをスケーリングして展開する方法を理解し、大きなデータセットと高クエリ負荷を効果的に処理できるようにします。
  • この記事は、

データサイエンスブログの一部として公開されました。

目次

  • BFSを使用したデータ抽出とデータのスクレイピング
  • AIエージェントによる情報抽出の自動データ抽出
  • 会社のインテリジェンスのための堅牢なRAGシステムを構築する最初のステップは、必要なデータを収集することです。データはさまざまなWebソースから生じる可能性があるため、効率的に削除して整理することが重要です。関連するページを発見して収集するための効果的な手法の1つは、幅広い検索(BFS)です。 BFSは、メインページから始まるリンクを再帰的に発見し、検索をより深いレベルに徐々に拡大するのに役立ちます。これにより、システムを不必要なデータで圧倒することなく、関連するすべてのページを収集することが保証されます。 このセクションでは、BFSを使用してWebサイトからリンクを抽出する方法を説明し、その後、それらのページからコンテンツを削除します。 BFSを使用して、Webサイトを体系的に通過し、データを収集し、RAGパイプラインで処理するための意味のあるデータセットを作成します。
  • ステップ1:BFSを使用したリンク抽出
  • 開始するには、特定のWebサイトから関連するすべてのリンクを収集する必要があります。 BFSを使用して、ホームページのリンクを探索できます。そこから、他のページのリンクを指定された深さまで再帰的に進みます。この方法により、製品機能、統合、その他の重要な詳細など、関連する企業データが含まれる可能性のあるすべての必要なページをキャプチャできます。
  • 以下のコードは、BFSを使用して開始URLからのリンク抽出を実行します。メインページを取得することから始まり、すべてのリンク(< a>タグをHREF属性を使用して抽出し、次のリンクに従って後続のページに従い、特定の深さ制限に基づいて検索を再帰的に拡張します。
  • これがリンク抽出を実行するコードです:

URLを追跡するためのキューを維持し、対応する深さとともに訪問し、効率的なトラバーサルを確保します。訪問されたセットは、同じURLを複数回再訪するのを防ぐために使用されます。各URLについて、BeautifulSoupを使用してHTMLを解析し、すべてのリンク(HREF属性を持つタグ)を抽出します。このプロセスでは、BFSトラバーサルを使用し、各URLのコンテンツを再帰的に取得し、リンクを抽出し、深さ制限に達するまでさらに探索します。このアプローチにより、冗長性なしにWebを効率的に探索することが保証されます。

output

このコードは、指定された深さまで、ウェブサイトから抽出されたリンクのリストを出力します。

出力は、システムが最初のWebサイトから1500リンクを見つけて収集したことを示しています。リンクされたページは3の深さまでです。https://www.example.comを実際のターゲットURLに置き換えます。以下は、元のコードの出力スクリーンショットです。機密情報は、完全性を維持するためにマスクされています

ステップ2:抽出されたリンクからの削減

BFSを使用して関連するリンクを抽出したら、次のステップはこれらのページからコンテンツをスクレイプすることです。 RAGシステムの構造化されたデータセットを構築するのに役立つ製品機能、統合、その他の関連データなどの重要な情報を探します。 このステップでは、抽出されたリンクのリストをループし、ページのタイトルやそのメインコンテンツなどのキーコンテンツをスクレイプします。このコードを調整して、必要に応じて追加のデータポイントを削減できます(製品機能、価格設定、またはFAQ情報など)。

リスト内の各URLについて、HTTPリクエストを送信してページのコンテンツを取得し、BeautifulSoupを使用してタイトルとメインコンテンツを抽出します。抽出されたデータを辞書のリストに保存します。それぞれにURL、タイトル、コンテンツが含まれています。最後に、スクレイプされたデータをJSONファイルに保存し、ラグパイプラインでの後で処理できるようにします。このプロセスにより、関連するデータの効率的な収集と保存が保証され、さらに使用します。

output

このコードの出力は、リンクから削られたデータを含む保存されたJSONファイル(Scraped_data.json)になります。データ構造の例は次のようになる可能性があります:
import requests
from bs4 import BeautifulSoup
from collections import deque

# Function to extract links using BFS
def bfs_link_extraction(start_url, max_depth=3):
    visited = set()  # To track visited links
    queue = deque([(start_url, 0)])  # Queue to store URLs and current depth
    all_links = []

    while queue:
        url, depth = queue.popleft()

        if depth > max_depth:
            continue

        # Fetch the content of the URL
        try:
            response = requests.get(url)
            soup = BeautifulSoup(response.content, 'html.parser')

            # Extract all links in the page
            links = soup.find_all('a', href=True)
            for link in links:
                full_url = link['href']
                if full_url.startswith('http') and full_url not in visited:
                    visited.add(full_url)
                    queue.append((full_url, depth + 1))
                    all_links.append(full_url)
        except requests.exceptions.RequestException as e:
            print(f"Error fetching {url}: {e}")

    return all_links

# Start the BFS from the homepage
start_url = 'https://www.example.com'  # Replace with the actual homepage URL
all_extracted_links = bfs_link_extraction(start_url)
print(f"Extracted {len(all_extracted_links)} links.")

このJSONファイルには、スクレイプした各ページのURL、タイトル、およびコンテンツが含まれています。この構造化されたデータは、生成の埋め込みやRAGシステムへの質問回答など、さらなる処理に使用できるようになりました。以下は、元のコードの出力スクリーンショットです。機密情報は、完全性を維持するためにマスクされています

AIエージェントを使用した情報抽出の自動化

Extracted 1500 links.
前のセクションでは、幅広い検索(BFS)戦略を使用して、リンクをスクレイピングして生のWebコンテンツを収集するプロセスについて説明しました。必要なデータが削られたら、この生のコンテンツから実用的な洞察を整理および抽出するための堅牢なシステムが必要です。これは、エージェントAIが次のように介入します。削られたデータを処理することにより、情報を意味のあるセクションに自動的に構成します。 このセクションでは、エージェントAIが削り取られたデータから関連する製品情報を抽出する方法に焦点を当て、利害関係者の消費の準備ができていることを確認します。データのロードから処理まで、最終的に結果を構造化された形式で保存するまで、関連する重要な手順を分類します。

ステップ1:スクレイプされたデータの読み込み

このプロセスの最初のステップは、生の削り取ったコンテンツをシステムにロードすることです。前に見たように、スクレイプされたデータはJSON形式で保存され、各エントリにはURLと関連するコンテンツが含まれています。このデータがAIが処理するための適切な形式であることを確認する必要があります。

組織でのスマートな意思決定のためのRAGシステムを構築しますコードスニペット:

import requests
from bs4 import BeautifulSoup
from collections import deque

# Function to extract links using BFS
def bfs_link_extraction(start_url, max_depth=3):
    visited = set()  # To track visited links
    queue = deque([(start_url, 0)])  # Queue to store URLs and current depth
    all_links = []

    while queue:
        url, depth = queue.popleft()

        if depth > max_depth:
            continue

        # Fetch the content of the URL
        try:
            response = requests.get(url)
            soup = BeautifulSoup(response.content, 'html.parser')

            # Extract all links in the page
            links = soup.find_all('a', href=True)
            for link in links:
                full_url = link['href']
                if full_url.startswith('http') and full_url not in visited:
                    visited.add(full_url)
                    queue.append((full_url, depth + 1))
                    all_links.append(full_url)
        except requests.exceptions.RequestException as e:
            print(f"Error fetching {url}: {e}")

    return all_links

# Start the BFS from the homepage
start_url = 'https://www.example.com'  # Replace with the actual homepage URL
all_extracted_links = bfs_link_extraction(start_url)
print(f"Extracted {len(all_extracted_links)} links.")

ここでは、Pythonの組み込みJSONライブラリを使用して、データセット全体をメモリにロードします。データセット内の各エントリには、ソースのURLとText_Contentフィールドが含まれています。これには、RAW SCRAPEDテキストが保持されます。このコンテンツは、次のステップで処理するものです。

ステップ2:生のテキストコンテンツの抽出

次に、データセットを繰り返して、各エントリに関連するtext_contentを抽出します。これにより、必要なコンテンツを含む有効なエントリのみを使用することが保証されます。プロセスの整合性を維持するために、無効または不完全なエントリがスキップされます。

コードスニペット:

この時点で、input_text変数には、さらに処理するためにAIモデルに送信する生のテキストコンテンツが含まれています。各エントリを処理する前に必要なキーの存在を確保することが重要です。

ステップ3:処理のためにAIエージェントにデータを送信します
Extracted 1500 links.

生のコンテンツを抽出した後、構造化された抽出のためにエージェントAIモデルに送信します。 GROQ APIと対話して、事前定義されたプロンプトに基づいて構造化された洞察を要求します。 AIモデルはコンテンツを処理し、製品機能、統合、トラブルシューティング手順などの重要な側面をカバーする整理された情報を返します。

コードスニペット:

ここで、コードはGROQへのAPI呼び出しを開始し、メッセージペイロードの一部として入力_Textと命令を送信します。システムメッセージは、実行する正確なタスクについてAIモデルに指示され、ユーザーメッセージは処理するコンテンツを提供します。生成された出力のランダム性と長さを制御するために、温度、MAX_TOKENS、およびTOP_Pパラメーターを使用します。 API呼び出し構成:

import json

# Function to scrape and extract data from the URLs
def scrape_data_from_links(links):
    scraped_data = []

    for link in links:
        try:
            response = requests.get(link)
            soup = BeautifulSoup(response.content, 'html.parser')

            # Example: Extract 'title' and 'content' (modify according to your needs)
            title = soup.find('title').get_text()
            content = soup.find('div', class_='content').get_text()  # Adjust selector

            # Store the extracted data
            scraped_data.append({
                'url': link,
                'title': title,
                'content': content
            })
        except requests.exceptions.RequestException as e:
            print(f"Error scraping {link}: {e}")

    return scraped_data

# Scrape data from the extracted links
scraped_contents = scrape_data_from_links(all_extracted_links)

# Save scraped data to a JSON file
with open('/content/scraped_data.json', 'w') as outfile:
    json.dump(scraped_contents, outfile, indent=4)

print("Data scraping complete.")

モデル:

使用するモデルを指定します。この場合、テキストデータを処理し、応答を生成できるように言語モデルが選択されます。
  • 温度: 応答の創造性を制御します。より高い値はより創造的な反応につながりますが、値が低いとそれらはより決定的になります。
  • max_tokens:生成された応答の最大長を設定します
  • top_p:
  • トークン選択の累積確率分布を決定し、応答の多様性を制御します。 ステップ4:結果の処理と収集
  • AIモデルがコンテンツを処理すると、構造化された情報のチャンクを返します。これらのチャンクを収集して連結して結果を完全に作成し、データが失われず、最終出力が完了したことを確認します。
  • コードスニペット:
    import requests
    from bs4 import BeautifulSoup
    from collections import deque
    
    # Function to extract links using BFS
    def bfs_link_extraction(start_url, max_depth=3):
        visited = set()  # To track visited links
        queue = deque([(start_url, 0)])  # Queue to store URLs and current depth
        all_links = []
    
        while queue:
            url, depth = queue.popleft()
    
            if depth > max_depth:
                continue
    
            # Fetch the content of the URL
            try:
                response = requests.get(url)
                soup = BeautifulSoup(response.content, 'html.parser')
    
                # Extract all links in the page
                links = soup.find_all('a', href=True)
                for link in links:
                    full_url = link['href']
                    if full_url.startswith('http') and full_url not in visited:
                        visited.add(full_url)
                        queue.append((full_url, depth + 1))
                        all_links.append(full_url)
            except requests.exceptions.RequestException as e:
                print(f"Error fetching {url}: {e}")
    
        return all_links
    
    # Start the BFS from the homepage
    start_url = 'https://www.example.com'  # Replace with the actual homepage URL
    all_extracted_links = bfs_link_extraction(start_url)
    print(f"Extracted {len(all_extracted_links)} links.")
    このコードスニペットは、各チャンクから

    PM_POINTS変数にコンテンツを連結し、完全な構造化された洞察セットをもたらします。これらの洞察を、利害関係者がさらなる分析のために簡単に消費または使用できる形式で抽出します。以下は、元のコードの出力スクリーンショットで、整合性を維持するために機密情報がマスクされています。 ステップ5:データの整合性の取り扱いと維持エラー

    処理中、不完全なコンテンツやネットワークの問題など、エラーに遭遇する可能性が常にあります。エラー処理メカニズムを使用することにより、すべての有効なエントリに対してプロセスがスムーズに継続するようにします。

    コードスニペット:

    このTry-Exectectブロックは、エラーをキャッチおよびログに記録し、システムが他のエントリの処理を継続するようにします。特定のエントリが問題を引き起こす場合、システムは全体的なプロセスを停止せずにレビューのためにマークします。

    ステップ6:処理されたデータの保存
    Extracted 1500 links.

    AIがコンテンツを処理し、構造化された洞察を返すと、最後のステップはこのデータを後で使用するために保存することです。構造化された結果をJSONファイルに書き戻し、すべてのエントリがさらに分析のために保存されている独自の情報を確保するようにします。

    コードスニペット:

    このコードは、処理されたデータを効率的に保存し、後で簡単にアクセスできるようになります。それはそれぞれの構造化されたポイントで各エントリを保存し、抽出された情報の検索と分析を簡単にします。 output 上記のコードを実行した後、処理されたJSONファイルには、各エントリの抽出されたポイントが含まれます。 Fields PM_POINTSは、製品機能、統合、トラブルシューティングの手順などに関連する構造化された情報を保持し、ワークフローへのさらなる分析または統合の準備ができています。

    以下は、元のコードの出力スクリーンショットです。機密情報は、完全性を維持するためにマスクされています
    import json
    
    # Function to scrape and extract data from the URLs
    def scrape_data_from_links(links):
        scraped_data = []
    
        for link in links:
            try:
                response = requests.get(link)
                soup = BeautifulSoup(response.content, 'html.parser')
    
                # Example: Extract 'title' and 'content' (modify according to your needs)
                title = soup.find('title').get_text()
                content = soup.find('div', class_='content').get_text()  # Adjust selector
    
                # Store the extracted data
                scraped_data.append({
                    'url': link,
                    'title': title,
                    'content': content
                })
            except requests.exceptions.RequestException as e:
                print(f"Error scraping {link}: {e}")
    
        return scraped_data
    
    # Scrape data from the extracted links
    scraped_contents = scrape_data_from_links(all_extracted_links)
    
    # Save scraped data to a JSON file
    with open('/content/scraped_data.json', 'w') as outfile:
        json.dump(scraped_contents, outfile, indent=4)
    
    print("Data scraping complete.")

    検索された生成パイプラインの実装

    前のセクションでは、Webページからのデータ抽出とJSONなどの構造化された形式に変換することに焦点を当てました。また、関連するデータを抽出およびクリーニングする手法を実装し、より深い分析の準備ができたデータセットを生成できるようにしました。

    その上で、このセクションでは、ドキュメントの検索と言語モデルの生成を組み合わせて抽出された情報に基づいて質問に答えることを組み合わせた検索された生成(RAG)パイプラインを実装します。
    [
        {
            "url": "https://www.example.com/page1",
            "title": "Page 1 Title",
            "content": "This is the content of the first page. It contains 
            information about integrations and features."
        },
        {
            "url": "https://www.example.com/page2",
            "title": "Page 2 Title",
            "content": "Here we describe the functionalities of the product. 
            It includes various use cases and capabilities."
        }
    ]
    以前にスクレイプおよび処理した構造化されたデータを統合することにより、このラグパイプラインは、最も関連性の高いドキュメントチャンクを取得するだけでなく、そのコンテキストに基づいて正確で洞察に満ちた応答を生成します。

    ステップ1:環境のセットアップ

    最初に、RAGパイプラインに必要なすべての依存関係をインストールしましょう。

    import requests
    from bs4 import BeautifulSoup
    from collections import deque
    
    # Function to extract links using BFS
    def bfs_link_extraction(start_url, max_depth=3):
        visited = set()  # To track visited links
        queue = deque([(start_url, 0)])  # Queue to store URLs and current depth
        all_links = []
    
        while queue:
            url, depth = queue.popleft()
    
            if depth > max_depth:
                continue
    
            # Fetch the content of the URL
            try:
                response = requests.get(url)
                soup = BeautifulSoup(response.content, 'html.parser')
    
                # Extract all links in the page
                links = soup.find_all('a', href=True)
                for link in links:
                    full_url = link['href']
                    if full_url.startswith('http') and full_url not in visited:
                        visited.add(full_url)
                        queue.append((full_url, depth + 1))
                        all_links.append(full_url)
            except requests.exceptions.RequestException as e:
                print(f"Error fetching {url}: {e}")
    
        return all_links
    
    # Start the BFS from the homepage
    start_url = 'https://www.example.com'  # Replace with the actual homepage URL
    all_extracted_links = bfs_link_extraction(start_url)
    print(f"Extracted {len(all_extracted_links)} links.")
    これらのパッケージは、Langchain内のドキュメント処理、ベクトル化、およびOpenAIモデルを統合するために重要です。 JQは軽量のJSONプロセッサであり、Langchainは言語モデルパイプラインを構築するためのコアフレームワークとして機能します。 Langchain-Openaiは、GPTなどのOpenaiモデルの統合を促進し、Langchain-Chromaはドキュメントの埋め込みを管理するためのクロマベースのベクターストアを提供します。 さらに、Sente-Transformersを使用して、事前に訓練されたトランスモデルを使用してテキスト埋め込みを生成し、効率的なドキュメントの処理と取得を可能にします。

    ステップ2:抽出されたデータのロード

    次に、JSONLoaderを使用して前のセクションで抽出および処理された構造化データをロードします。たとえば、このデータは、特定のトピックや質問に関連するキー価値ペアを使用して、構造化されたJSONとしてWebページから削られた可能性があります。

    このステップでは、以前に抽出されたデータ(おそらく製品機能、統合、および機能が含まれている)は、さらなる処理のためにロードされます。

    ステップ3:ドキュメントをより小さなチャンクに分割する

    生データが揃ったので、recursiveCharacterTextSplitterを使用してドキュメントを小さなチャンクに分割します。これにより、言語モデルのトークン限界を超える単一のチャンクが保証されます。

    Extracted 1500 links.
    recursiveCharacterTextSplitterは、ドキュメントをより小さなセグメントに分割し、より良いコンテキスト理解のためにチャンクオーバーラップが保存されるようにします。 Chunk_sizeパラメーターは各チャンクのサイズを決定し、Chunk_Overlapは隣接するチャンク全体で重要な情報が保持されることを保証します。さらに、ADD_START_INDEXは、インデックスを含めることにより、ドキュメントの注文を維持し、各チャンクが元のドキュメントで発生した場所を簡単に追跡できるようにするのに役立ちます。

    ステップ4:ドキュメントチャンクの埋め込みを生成

    次に、Sentencetransformerを使用して、テキストの各塊を埋め込みに変換します。これらの埋め込みは、高次元のベクトル空間におけるテキストの意味を表しています。これは、関連文書の検索と取得に役立ちます。

    SentenceTransformerは、テキストチャンクの埋め込みを生成するために使用され、セマンティック情報をキャプチャする密なベクトル表現を作成します。関数embed_documentsは複数のドキュメントを処理し、埋め込みを返しますが、embed_Queryはユーザークエリの埋め込みを生成します。ベクターストアであるChromaは、これらの埋め込みを管理し、類似性に基づいて効率的な検索を可能にし、高速かつ正確なドキュメントまたはクエリマッチングを可能にします。

    ステップ5:レトリーバーのセットアップ

    今度はレトリバーを構成します。このコンポーネントは、ユーザーのクエリに基づいて、最も関連性の高いテキストのチャンクを検索します。クエリに対して最も類似したドキュメントのチャンクをトップKを取得します。

    import requests
    from bs4 import BeautifulSoup
    from collections import deque
    
    # Function to extract links using BFS
    def bfs_link_extraction(start_url, max_depth=3):
        visited = set()  # To track visited links
        queue = deque([(start_url, 0)])  # Queue to store URLs and current depth
        all_links = []
    
        while queue:
            url, depth = queue.popleft()
    
            if depth > max_depth:
                continue
    
            # Fetch the content of the URL
            try:
                response = requests.get(url)
                soup = BeautifulSoup(response.content, 'html.parser')
    
                # Extract all links in the page
                links = soup.find_all('a', href=True)
                for link in links:
                    full_url = link['href']
                    if full_url.startswith('http') and full_url not in visited:
                        visited.add(full_url)
                        queue.append((full_url, depth + 1))
                        all_links.append(full_url)
            except requests.exceptions.RequestException as e:
                print(f"Error fetching {url}: {e}")
    
        return all_links
    
    # Start the BFS from the homepage
    start_url = 'https://www.example.com'  # Replace with the actual homepage URL
    all_extracted_links = bfs_link_extraction(start_url)
    print(f"Extracted {len(all_extracted_links)} links.")
      レトリーバーは類似性検索を使用して、ベクターストアから最も関連性の高いチャンクを見つけます。
    • パラメーターk = 6は、クエリに最も関連する上位6チャンクを返すことを意味します。
    • ステップ6:プロンプトテンプレートの作成
    次に、言語モデルの入力をフォーマットするプロンプトテンプレートを作成します。このテンプレートには、コンテキスト(取得されたチャンク)とユーザーのクエリの両方が含まれており、提供されたコンテキストのみに基づいて回答を生成するようにモデルを導きます。

    ChatPromptTemplateは、特定のコンテキストのみに基づいて答えが必要であることを強調する方法でモデルの入力をフォーマットします。

    {コンテキスト}は関連するテキストチャンクに置き換えられ、{質問}はユーザーのクエリに置き換えられます。
    Extracted 1500 links.
      ステップ7:言語モデルのセットアップ
    • このステップでは、OpenAI GPTモデルを初期化します。このモデルは、レトリバーが提供する構造化されたコンテキストに基づいて回答を生成します。
    • Chatopenaiモデルを初期化します。これにより、プロンプトを処理して回答を生成します。
    効率的な処理のために、より複雑なタスクには大きなモデルを使用できますが、より小さなモデル「GPT-4O-MINI」を使用します。

    ステップ8:ラグパイプラインの構築

    ここでは、すべてのコンポーネント(Retriver、Prompt、LLM)をまとまりのあるRagパイプラインに統合します。このパイプラインは、クエリを取得し、関連するコンテキストを取得し、モデルを通過し、応答を生成します。
    import json
    
    # Function to scrape and extract data from the URLs
    def scrape_data_from_links(links):
        scraped_data = []
    
        for link in links:
            try:
                response = requests.get(link)
                soup = BeautifulSoup(response.content, 'html.parser')
    
                # Example: Extract 'title' and 'content' (modify according to your needs)
                title = soup.find('title').get_text()
                content = soup.find('div', class_='content').get_text()  # Adjust selector
    
                # Store the extracted data
                scraped_data.append({
                    'url': link,
                    'title': title,
                    'content': content
                })
            except requests.exceptions.RequestException as e:
                print(f"Error scraping {link}: {e}")
    
        return scraped_data
    
    # Scrape data from the extracted links
    scraped_contents = scrape_data_from_links(all_extracted_links)
    
    # Save scraped data to a JSON file
    with open('/content/scraped_data.json', 'w') as outfile:
        json.dump(scraped_contents, outfile, indent=4)
    
    print("Data scraping complete.")
    • runnablepassthroughは、ク​​エリがプロンプトに直接渡されるようにします。
    • stroutputparserは、モデルからの出力を文字列形式にクリーニングおよびフォーマットするために使用されます。
    • ステップ9:RAGパイプラインのテスト

    最後に、さまざまなユーザークエリでパイプラインをテストします。クエリごとに、システムは関連するドキュメントチャンクを取得し、言語モデルに渡し、応答を生成します。

    システムは各クエリを繰り返し、パイプラインを呼び出し、生成された答えを印刷します。
    [
        {
            "url": "https://www.example.com/page1",
            "title": "Page 1 Title",
            "content": "This is the content of the first page. It contains 
            information about integrations and features."
        },
        {
            "url": "https://www.example.com/page2",
            "title": "Page 2 Title",
            "content": "Here we describe the functionalities of the product. 
            It includes various use cases and capabilities."
        }
    ]
    クエリごとに、モデルは取得したコンテキストを処理し、コンテキストに基づいた回答を提供します。
      以下は、元のコードからのRAG出力のスクリーンショットです。機密情報は、完全性を維持するためにマスクされています
    • Webスクレイピング、データ抽出、および高度な検索の高度発電(RAG)技術を組み合わせることにより、会社のインテリジェンスのための強力でスケーラブルなフレームワークを作成しました。リンクを抽出してデータを削減する最初のステップにより、Webから関連する最新の情報を収集することが保証されます。 2番目のセクションでは、特定の製品関連の詳細の特定に焦点を当て、データを効率的に分類および処理しやすくすることに焦点を当てています。

      最後に、RAGを活用することで、膨大なデータセットからコンテキスト情報を取得および合成することにより、複雑なクエリに動的に応答することができます。これらのコンポーネントは、企業に関する実用的な洞察を収集、処理、提供できるエージェントプラットフォームの構築に使用できる包括的なセットアップを形成します。このフレームワークは、高度なインテリジェンスシステムを開発するための基盤として機能し、組織が競争力のある分析を自動化し、市場動向を監視し、業界について情報を提供できるようにすることができます。

      展開とスケーリング

      会社のインテリジェンスシステムが構築されたら、次のステップは、生産用に展開してスケーリングすることです。柔軟性とスケーラビリティを得るために、AWSやGCPなどのクラウドプラットフォームにシステムを展開したり、データプライバシーが優先事項である場合はオンプレミスソリューションを選択できます。システムをよりユーザーフレンドリーにするには、ユーザーがプラットフォームと対話し、洞察を簡単に取得できる簡単なAPIまたはUIの構築を検討してください。システムがより大きなデータセットとより高いクエリ負荷の処理を開始するため、効率的にスケーリングすることが不可欠です。

      これは、分散ベクトルストアを活用して検索プロセスを最適化し、パイプラインが重い使用法でも応答性が高く速く維持されるようにすることで実現できます。適切なインフラストラクチャと最適化手法が整っていると、エージェントプラットフォームは大規模な操作をサポートし、リアルタイムの洞察を可能にし、会社のインテリジェンスの競争力を維持することができます。

      結論

      今日のデータ駆動型の世界では、構造化されていない企業データから実用的な洞察を抽出することが重要です。検索された生成(RAG)システムは、データのスクレイピング、ポインター抽出、およびインテリジェントクエリを組み合わせて、企業インテリジェンスの強力なプラットフォームを作成します。重要な情報を整理し、リアルタイムでコンテキスト固有の応答を可能にすることにより、RAGシステムは組織でのスマートな意思決定を強化し、企業がデータに包まれた適応可能な意思決定を支援します。

      このスケーラブルなソリューションは、ニーズとともに成長し、正確性を維持しながら、複雑なクエリとより大きなデータセットを処理します。適切なインフラストラクチャを備えたこのAI駆動型プラットフォームは、よりスマートな運用の基礎となり、組織がデータを活用し、競争力を維持し、組織でのスマートな意思決定を通じてイノベーションを推進できるようになります。

      キーテイクアウト

      • リンク抽出とWebスクレイピングは、最小限の労力で複数のソースからの自動で効率的なデータ収集を可能にすることにより、企業のインテリジェンスを強化します。
      • キーデータポイントの抽出は、構造化されていないコンテンツを整理された実用的な知識に変換し、AI主導の洞察のための会社のインテリジェンスを強化します。 ラグとカスタムベクトルストアと最適化されたレトリバーを組み合わせることで、より良い意思決定のためのインテリジェントでコンテキスト対応の応答が可能になります。
      • クラウドベースのソリューションと分散ベクトルストアは、効率的なスケーリング、パフォーマンスの損失なしに大きなデータセットとクエリの負荷を処理します。
      • RAGパイプラインはリアルタイムクエリを処理し、知識ベースから直接正確で需要のある洞察を提供します。
      • ボーナス:
      • ここで説明するすべてのコードは、次のリンクで利用可能になります。合計4つのノートブックが利用可能で、各ノートブックに自明の名前が付いています。エンタープライズを探索し、開発し、革命を起こしてください!
      • よくある質問

      q1。 このセットアップで検索された生成(RAG)を使用する目的は何ですか? RAGは、情報検索と生成AIを組み合わせることにより、AIモデルがコンテキストを意識した応答を提供する能力を高めます。大規模なデータセットをよりスマートにクエリすることができ、基本的なキーワード検索を実行するだけでなく、正確で関連する回答を簡単に取得できます。 ブログに記載されているシステムを構築するには、どのツールとライブラリが必要ですか?使用される主要なツールとライブラリには、Python、WebスクレイピングのためのBeautifulSoup、ドキュメント検索の管理のためのLangchain、自然言語処理のためのOpenaiモデル、およびベクトル化されたドキュメントを保存するためのChromaが含まれます。これらのコンポーネントは、包括的な企業インテリジェンスプラットフォームを作成するために連携しています。 このシステムでは、ポインター抽出プロセスはどのように機能しますか?ポインター抽出には、製品機能、統合、トラブルシューティングのヒントなど、削られたコンテンツから特定の情報を特定することが含まれます。データは、プロンプト駆動型システムを使用して処理され、情報を構造化された実用的な洞察に整理します。これは、AIモデルとカスタムプロンプトの組み合わせを使用して達成されます。 RAGおよびAIエージェントは会社のインテリジェンスをどのように改善しますか? RAGおよびAIエージェントは、データの取得、処理、分析を自動化することにより、会社のインテリジェンスを強化し、ビジネスがリアルタイムで実用的な洞察を抽出できるようにします。なぜデータスクレイピングが会社の知性にとって重要であるのですか?データスクレイピングは、情報に基づいた意思決定のために複数のソースから貴重な情報を収集および構築することにより、強力な

      企業インテリジェンス

      システムを構築するのに役立ちます。

      この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。

以上が組織でのスマートな意思決定のためのRAGシステムを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
テスラのロブバンは、2024年のロボタクシティーザーの隠された宝石でしたテスラのロブバンは、2024年のロボタクシティーザーの隠された宝石でしたApr 22, 2025 am 11:48 AM

2008年以来、私は共有ライドバンを擁護しました。これは、「Robotjitney」と呼ばれる「後に「Vansit」と呼ばれ、都市交通の未来として擁護しました。 私はこれらの車両を21世紀の次世代トランジットソリューション、スルパとして予見します

サムのクラブは領収書の小切手を排除し、小売を強化するためにAIに賭けますサムのクラブは領収書の小切手を排除し、小売を強化するためにAIに賭けますApr 22, 2025 am 11:29 AM

チェックアウトエクスペリエンスに革命をもたらす Sam's Clubの革新的な「Just Go」システムは、既存のAIを搭載した「スキャン&ゴー」テクノロジーに基づいて構築され、ショッピング旅行中にメンバーがサムズクラブアプリを介して購入をスキャンできるようになりました。

NvidiaのAI OmniverseはGTC 2025で拡大しますNvidiaのAI OmniverseはGTC 2025で拡大しますApr 22, 2025 am 11:28 AM

GTC 2025でのNvidiaの強化された予測可能性と新製品のラインナップ AIインフラストラクチャの重要なプレーヤーであるNvidiaは、クライアントの予測可能性の向上に焦点を当てています。 これには、一貫した製品配信、パフォーマンスの期待を満たすこと、および

Google'のGemma 2モデルの機能を調査しますGoogle'のGemma 2モデルの機能を調査しますApr 22, 2025 am 11:26 AM

GoogleのGemma 2:強力で効率的な言語モデル 効率とパフォーマンスで祝われるGoogleのGemmaファミリーは、Gemma 2の到着とともに拡大しました。この最新リリースは2つのモデルで構成されています。

genaiの次の波:Kirk Borne博士との展望-AnalyticsVidhyagenaiの次の波:Kirk Borne博士との展望-AnalyticsVidhyaApr 22, 2025 am 11:21 AM

データエピソードを率いるこの主要なのは、主要なデータサイエンティスト、天体物理学者、TEDXスピーカーであるカークボーン博士を特徴としています。 ビッグデータ、AI、および機械学習の有名な専門家であるボルネ博士は、現在の状態と将来のトラジェについて非常に貴重な洞察を提供しています

ランナーとアスリート向けのAI:私たちは素晴らしい進歩を遂げていますランナーとアスリート向けのAI:私たちは素晴らしい進歩を遂げていますApr 22, 2025 am 11:12 AM

このスピーチには、人工知能が人々の運動をサポートするのに非常に優れている理由を示すエンジニアリングに関するバックグラウンド情報には、非常に洞察に満ちた視点がいくつかありました。 各寄稿者の観点からコアアイデアを概説し、スポーツにおける人工知能の適用の調査の重要な部分である3つの設計側面を実証します。 エッジデバイスと生の個人データ 人工知能に関するこのアイデアには、実際には2つのコンポーネントが含まれています。1つは大きな言語モデルを配置する場所に関連しており、もう1つは人間の言語と、リアルタイムで測定したときにバイタルサインが「表現」する言語の違いに関連しています。 アレクサンダー・アミニはランニングとテニスについて多くのことを知っていますが、彼はまだ

Caterpillarでのテクノロジー、才能、変革に関するJamie EngstromCaterpillarでのテクノロジー、才能、変革に関するJamie EngstromApr 22, 2025 am 11:10 AM

Caterpillarの最高情報責任者であり、その上級副社長であるJamie Engstromは、28か国の2,200人以上のITプロフェッショナルのグローバルチームを率いています。 彼女の現在の役割で4年半を含むCaterpillarで26年間、Engst

新しいGoogleフォトの更新は、ウルトラHDR品質の写真をポップにします新しいGoogleフォトの更新は、ウルトラHDR品質の写真をポップにしますApr 22, 2025 am 11:09 AM

Google Photosの新しいUltra HDRツール:クイックガイド Google Photosの新しいUltra HDRツールで写真を強化し、標準画像を活気に満ちた高ダイナミックレンジの傑作に変換します。ソーシャルメディアに最適なこのツールは、あらゆる写真の影響を高め、

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。