組織でのスマートな意思決定のためのRAGシステムを構築します
今日のペースの速いビジネス環境では、組織には決定を促進し、運用を最適化し、競争力を維持するデータが浸水しています。ただし、このデータから実用的な洞察を抽出することは、依然として重要なハードルのままです。 Agentic AIと統合された場合の検索総生成(RAG)システムは、関連する情報を取得するだけでなく、コンテキストアウェアの洞察をリアルタイムで処理して配信することにより、この課題に取り組みます。この組み合わせにより、企業はデータセットを自律的に照会し、製品機能、統合、および運用に関する洞察を抽出するインテリジェントエージェントを作成できます。
RAGとエージェントAIを統合することにより、企業は意思決定を強化し、散在したデータを貴重なインテリジェンスに変換できます。このブログでは、エージェントAIを使用したRAGパイプラインを構築するプロセスを調査し、組織でのスマートな意思決定を強化するための技術的な洞察とコード例を提供します。学習目標
- Pythonとスクレイピングツールを使用して複数のWebソースから関連するデータを自動的に抽出およびスクレイする方法を学び、会社のインテリジェンスプラットフォームの基礎を形成します。
- AI駆動型の手法を使用して、製品機能、統合、トラブルシューティングステップなどのキーポイントを抽出することにより、スクレイプされたデータを貴重で実用的な洞察に処理する方法を学びます。 RAGをドキュメント取得および自然言語生成と統合する方法を学び、広大なデータセットからコンテキスト認識の回答を提供できるインテリジェントクエリシステムを構築します。
- データスクレイピング、知識抽出、リアルタイムクエリ処理を組み合わせたエージェントAIシステムを構築する方法を理解し、ビジネスが実用的な洞察を自律的に抽出できるようにします。 クラウドプラットフォームと分散アーキテクチャを使用して、このようなシステムをスケーリングして展開する方法を理解し、大きなデータセットと高クエリ負荷を効果的に処理できるようにします。
- この記事は、
データサイエンスブログの一部として公開されました。 output
BFSを使用して関連するリンクを抽出したら、次のステップはこれらのページからコンテンツをスクレイプすることです。 RAGシステムの構造化されたデータセットを構築するのに役立つ製品機能、統合、その他の関連データなどの重要な情報を探します。
このステップでは、抽出されたリンクのリストをループし、ページのタイトルやそのメインコンテンツなどのキーコンテンツをスクレイプします。このコードを調整して、必要に応じて追加のデータポイントを削減できます(製品機能、価格設定、またはFAQ情報など)。
output
AIエージェントを使用した情報抽出の自動化 ステップ1:スクレイプされたデータの読み込み ここでは、Pythonの組み込みJSONライブラリを使用して、データセット全体をメモリにロードします。データセット内の各エントリには、ソースのURLとText_Contentフィールドが含まれています。これには、RAW SCRAPEDテキストが保持されます。このコンテンツは、次のステップで処理するものです。
この時点で、input_text変数には、さらに処理するためにAIモデルに送信する生のテキストコンテンツが含まれています。各エントリを処理する前に必要なキーの存在を確保することが重要です。
生のコンテンツを抽出した後、構造化された抽出のためにエージェントAIモデルに送信します。 GROQ APIと対話して、事前定義されたプロンプトに基づいて構造化された洞察を要求します。 AIモデルはコンテンツを処理し、製品機能、統合、トラブルシューティング手順などの重要な側面をカバーする整理された情報を返します。
ここで、コードはGROQへのAPI呼び出しを開始し、メッセージペイロードの一部として入力_Textと命令を送信します。システムメッセージは、実行する正確なタスクについてAIモデルに指示され、ユーザーメッセージは処理するコンテンツを提供します。生成された出力のランダム性と長さを制御するために、温度、MAX_TOKENS、およびTOP_Pパラメーターを使用します。
API呼び出し構成:
モデル: PM_POINTS変数にコンテンツを連結し、完全な構造化された洞察セットをもたらします。これらの洞察を、利害関係者がさらなる分析のために簡単に消費または使用できる形式で抽出します。以下は、元のコードの出力スクリーンショットで、整合性を維持するために機密情報がマスクされています。
ステップ5:データの整合性の取り扱いと維持エラー コードスニペット:
このTry-Exectectブロックは、エラーをキャッチおよびログに記録し、システムが他のエントリの処理を継続するようにします。特定のエントリが問題を引き起こす場合、システムは全体的なプロセスを停止せずにレビューのためにマークします。
AIがコンテンツを処理し、構造化された洞察を返すと、最後のステップはこのデータを後で使用するために保存することです。構造化された結果をJSONファイルに書き戻し、すべてのエントリがさらに分析のために保存されている独自の情報を確保するようにします。
このコードは、処理されたデータを効率的に保存し、後で簡単にアクセスできるようになります。それはそれぞれの構造化されたポイントで各エントリを保存し、抽出された情報の検索と分析を簡単にします。
output
上記のコードを実行した後、処理されたJSONファイルには、各エントリの抽出されたポイントが含まれます。 Fields PM_POINTSは、製品機能、統合、トラブルシューティングの手順などに関連する構造化された情報を保持し、ワークフローへのさらなる分析または統合の準備ができています。
前のセクションでは、Webページからのデータ抽出とJSONなどの構造化された形式に変換することに焦点を当てました。また、関連するデータを抽出およびクリーニングする手法を実装し、より深い分析の準備ができたデータセットを生成できるようにしました。
最初に、RAGパイプラインに必要なすべての依存関係をインストールしましょう。
ステップ2:抽出されたデータのロード 次に、JSONLoaderを使用して前のセクションで抽出および処理された構造化データをロードします。たとえば、このデータは、特定のトピックや質問に関連するキー価値ペアを使用して、構造化されたJSONとしてWebページから削られた可能性があります。
生データが揃ったので、recursiveCharacterTextSplitterを使用してドキュメントを小さなチャンクに分割します。これにより、言語モデルのトークン限界を超える単一のチャンクが保証されます。
ステップ4:ドキュメントチャンクの埋め込みを生成 SentenceTransformerは、テキストチャンクの埋め込みを生成するために使用され、セマンティック情報をキャプチャする密なベクトル表現を作成します。関数embed_documentsは複数のドキュメントを処理し、埋め込みを返しますが、embed_Queryはユーザークエリの埋め込みを生成します。ベクターストアであるChromaは、これらの埋め込みを管理し、類似性に基づいて効率的な検索を可能にし、高速かつ正確なドキュメントまたはクエリマッチングを可能にします。 今度はレトリバーを構成します。このコンポーネントは、ユーザーのクエリに基づいて、最も関連性の高いテキストのチャンクを検索します。クエリに対して最も類似したドキュメントのチャンクをトップKを取得します。
ChatPromptTemplateは、特定のコンテキストのみに基づいて答えが必要であることを強調する方法でモデルの入力をフォーマットします。
Webスクレイピング、データ抽出、および高度な検索の高度発電(RAG)技術を組み合わせることにより、会社のインテリジェンスのための強力でスケーラブルなフレームワークを作成しました。リンクを抽出してデータを削減する最初のステップにより、Webから関連する最新の情報を収集することが保証されます。 2番目のセクションでは、特定の製品関連の詳細の特定に焦点を当て、データを効率的に分類および処理しやすくすることに焦点を当てています。 最後に、RAGを活用することで、膨大なデータセットからコンテキスト情報を取得および合成することにより、複雑なクエリに動的に応答することができます。これらのコンポーネントは、企業に関する実用的な洞察を収集、処理、提供できるエージェントプラットフォームの構築に使用できる包括的なセットアップを形成します。このフレームワークは、高度なインテリジェンスシステムを開発するための基盤として機能し、組織が競争力のある分析を自動化し、市場動向を監視し、業界について情報を提供できるようにすることができます。
これは、分散ベクトルストアを活用して検索プロセスを最適化し、パイプラインが重い使用法でも応答性が高く速く維持されるようにすることで実現できます。適切なインフラストラクチャと最適化手法が整っていると、エージェントプラットフォームは大規模な操作をサポートし、リアルタイムの洞察を可能にし、会社のインテリジェンスの競争力を維持することができます。
q1。 このセットアップで検索された生成(RAG)を使用する目的は何ですか? RAGは、情報検索と生成AIを組み合わせることにより、AIモデルがコンテキストを意識した応答を提供する能力を高めます。大規模なデータセットをよりスマートにクエリすることができ、基本的なキーワード検索を実行するだけでなく、正確で関連する回答を簡単に取得できます。 ブログに記載されているシステムを構築するには、どのツールとライブラリが必要ですか?使用される主要なツールとライブラリには、Python、WebスクレイピングのためのBeautifulSoup、ドキュメント検索の管理のためのLangchain、自然言語処理のためのOpenaiモデル、およびベクトル化されたドキュメントを保存するためのChromaが含まれます。これらのコンポーネントは、包括的な企業インテリジェンスプラットフォームを作成するために連携しています。 このシステムでは、ポインター抽出プロセスはどのように機能しますか?ポインター抽出には、製品機能、統合、トラブルシューティングのヒントなど、削られたコンテンツから特定の情報を特定することが含まれます。データは、プロンプト駆動型システムを使用して処理され、情報を構造化された実用的な洞察に整理します。これは、AIモデルとカスタムプロンプトの組み合わせを使用して達成されます。 RAGおよびAIエージェントは会社のインテリジェンスをどのように改善しますか? RAGおよびAIエージェントは、データの取得、処理、分析を自動化することにより、会社のインテリジェンスを強化し、ビジネスがリアルタイムで実用的な洞察を抽出できるようにします。なぜデータスクレイピングが会社の知性にとって重要であるのですか?データスクレイピングは、情報に基づいた意思決定のために複数のソースから貴重な情報を収集および構築することにより、強力な この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。目次
URLを追跡するためのキューを維持し、対応する深さとともに訪問し、効率的なトラバーサルを確保します。訪問されたセットは、同じURLを複数回再訪するのを防ぐために使用されます。各URLについて、BeautifulSoupを使用してHTMLを解析し、すべてのリンク(HREF属性を持つタグ)を抽出します。このプロセスでは、BFSトラバーサルを使用し、各URLのコンテンツを再帰的に取得し、リンクを抽出し、深さ制限に達するまでさらに探索します。このアプローチにより、冗長性なしにWebを効率的に探索することが保証されます。
ステップ2:抽出されたリンクからの削減
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.")
Extracted 1500 links.
コードスニペット:
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.")
次に、データセットを繰り返して、各エントリに関連するtext_contentを抽出します。これにより、必要なコンテンツを含む有効なエントリのみを使用することが保証されます。プロセスの整合性を維持するために、無効または不完全なエントリがスキップされます。
コードスニペット:Extracted 1500 links.
コードスニペット:
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.")
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.")
処理中、不完全なコンテンツやネットワークの問題など、エラーに遭遇する可能性が常にあります。エラー処理メカニズムを使用することにより、すべての有効なエントリに対してプロセスがスムーズに継続するようにします。
Extracted 1500 links.
コードスニペット:
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.")
検索された生成パイプラインの実装
[
{
"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:環境のセットアップ
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.")
ステップ3:ドキュメントをより小さなチャンクに分割する
Extracted 1500 links.
次に、Sentencetransformerを使用して、テキストの各塊を埋め込みに変換します。これらの埋め込みは、高次元のベクトル空間におけるテキストの意味を表しています。これは、関連文書の検索と取得に役立ちます。
ステップ5:レトリーバーのセットアップ
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.")
レトリーバーは類似性検索を使用して、ベクターストアから最も関連性の高いチャンクを見つけます。
次に、言語モデルの入力をフォーマットするプロンプトテンプレートを作成します。このテンプレートには、コンテキスト(取得されたチャンク)とユーザーのクエリの両方が含まれており、提供されたコンテキストのみに基づいて回答を生成するようにモデルを導きます。
Extracted 1500 links.
ステップ7:言語モデルのセットアップ
効率的な処理のために、より複雑なタスクには大きなモデルを使用できますが、より小さなモデル「GPT-4O-MINI」を使用します。
ステップ8:ラグパイプラインの構築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.")
最後に、さまざまなユーザークエリでパイプラインをテストします。クエリごとに、システムは関連するドキュメントチャンクを取得し、言語モデルに渡し、応答を生成します。
[
{
"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出力のスクリーンショットです。機密情報は、完全性を維持するためにマスクされています
会社のインテリジェンスシステムが構築されたら、次のステップは、生産用に展開してスケーリングすることです。柔軟性とスケーラビリティを得るために、AWSやGCPなどのクラウドプラットフォームにシステムを展開したり、データプライバシーが優先事項である場合はオンプレミスソリューションを選択できます。システムをよりユーザーフレンドリーにするには、ユーザーがプラットフォームと対話し、洞察を簡単に取得できる簡単なAPIまたはUIの構築を検討してください。システムがより大きなデータセットとより高いクエリ負荷の処理を開始するため、効率的にスケーリングすることが不可欠です。 今日のデータ駆動型の世界では、構造化されていない企業データから実用的な洞察を抽出することが重要です。検索された生成(RAG)システムは、データのスクレイピング、ポインター抽出、およびインテリジェントクエリを組み合わせて、企業インテリジェンスの強力なプラットフォームを作成します。重要な情報を整理し、リアルタイムでコンテキスト固有の応答を可能にすることにより、RAGシステムは組織でのスマートな意思決定を強化し、企業がデータに包まれた適応可能な意思決定を支援します。
このスケーラブルなソリューションは、ニーズとともに成長し、正確性を維持しながら、複雑なクエリとより大きなデータセットを処理します。適切なインフラストラクチャを備えたこのAI駆動型プラットフォームは、よりスマートな運用の基礎となり、組織がデータを活用し、競争力を維持し、組織でのスマートな意思決定を通じてイノベーションを推進できるようになります。キーテイクアウト
システムを構築するのに役立ちます。
以上が組織でのスマートな意思決定のためのRAGシステムを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











メタのラマ3.2:マルチモーダルとモバイルAIの前進 メタは最近、ラマ3.2を発表しました。これは、モバイルデバイス向けに最適化された強力なビジョン機能と軽量テキストモデルを特徴とするAIの大幅な進歩です。 成功に基づいてo

ねえ、忍者をコーディング!その日はどのようなコーディング関連のタスクを計画していますか?このブログにさらに飛び込む前に、コーディング関連のすべての問題について考えてほしいです。 終わり? - &#8217を見てみましょう

今週のAIの風景:進歩、倫理的考慮、規制の議論の旋風。 Openai、Google、Meta、Microsoftのような主要なプレーヤーは、画期的な新しいモデルからLEの重要な変化まで、アップデートの急流を解き放ちました

Shopify CEOのTobiLütkeの最近のメモは、AIの能力がすべての従業員にとって基本的な期待であると大胆に宣言し、会社内の重大な文化的変化を示しています。 これはつかの間の傾向ではありません。これは、pに統合された新しい運用パラダイムです

導入 鮮やかな絵画や彫刻に囲まれたアートギャラリーを歩くことを想像してください。さて、各ピースに質問をして意味のある答えを得ることができたらどうでしょうか?あなたは尋ねるかもしれません、「あなたはどんな話を言っていますか?

導入 Openaiは、待望の「Strawberry」アーキテクチャに基づいて新しいモデルをリリースしました。 O1として知られるこの革新的なモデルは、推論能力を強化し、問題を通じて考えられるようになりました

私のコラムに新しいかもしれない人のために、具体化されたAI、AI推論、AIのハイテクブレークスルー、AIの迅速なエンジニアリング、AIのトレーニング、AIのフィールディングなどのトピックなど、全面的なAIの最新の進歩を広く探求します。

SQLの変更テーブルステートメント:データベースに列を動的に追加する データ管理では、SQLの適応性が重要です。 その場でデータベース構造を調整する必要がありますか? Alter Tableステートメントはあなたの解決策です。このガイドの詳細は、コルを追加します
