このリポジトリには、ハグの顔から変圧器モデル( gpt2 )を使用して構築されたAIボットの実装が含まれています。チャットボットは、ベクトルデータベースストレージのFAISSをレバレッジして、ユーザークエリを関連するデータと効率的に一致させます。トレーニングと応答の生成に使用されるデータは、公式のスタンフォードLLMコースから削り取られました。
gpt2モデルを利用します。データの削減:データは、スタンフォードLLMコースのさまざまな講義から削られます。 h2 、 h3 、および<strong>タグはキーとして機能し、対応するコンテンツは段落、表、リンク、方程式、順序付けリスト、および順序付けられていないリストに分類されます。
Vectorデータベース(FAISS) :キーは、効率的な検索のためにL2距離を使用してFAISSベクトルデータベースに保存されます。ユーザークエリが受信されると、FAISSはベクトルの類似性に基づいて、トップ2の最も近いマッチングキーを見つけます。
プロンプトの生成:チャットボットは、FAISSから取得したデータを使用して構造化されたプロンプトを構築します。このプロンプトには、段落、表、方程式、リンク、順序付けられたリスト、および一致したキーに関連する順序付けられていないリストが含まれます。
応答生成:構築されたプロンプトはGPT-2モデルに供給され、ユーザークエリに対するコヒーレントで関連する応答を生成します。
スタンフォードLLMコースの講義から削られたデータには、次のスキーマがあります。
key1:{
{
'paragraphs': [],
'tables': [],
'links': [],
'equations': [],
'ordered_lists': [],
'unordered_lists': []
} }
key2:{
{
'paragraphs': [],
'tables': [],
'links': [],
'equations': [],
'ordered_lists': [],
'unordered_lists': []
} }
各キーは、講義ページのh2 、 h3 、または<strong>タグに対応しています。各キーに関連付けられているデータには、段落、表、リンク、方程式、順序付けられたリスト、およびそれらが存在する場合は順序付けられていないリストが含まれます。
ユーザークエリ:「利益と害は何ですか?」
FAISS検索:クエリは、L2距離を使用してベクトルデータベースの上位2つの最も近いキーに一致します。
迅速な構築:
# Create a structured prompt
prompt = f"**Question:** {query}nn"
# Add top 2 matched sections
prompt += f"**Sections:**n- {result_key1}n- {result_key2}nn"
# Add content to the prompt
for result_key, result_content in [(result_key1, result_content1), (result_key2, result_content2)]:
if result_content.get('paragraphs'):
prompt += "**Paragraphs:**n" + "n".join(result_content['paragraphs']) + "nn"
if result_content.get('ordered_lists'):
prompt += "**Ordered Lists:**n" + "n".join(["n".join(ol) for ol in result_content['ordered_lists']]) + "nn"
if result_content.get('unordered_lists'):
prompt += "**Unordered Lists:**n" + "n".join(["n".join(ul) for ul in result_content['unordered_lists']]) + "nn"
if result_content.get('tables'):
prompt += "**Tables:**n" + "n".join(["n".join(table) for table in result_content['tables']]) + "nn"
if result_content.get('links'):
prompt += "**Links:**n" + "n".join(result_content['links']) + "nn"
if result_content.get('equations'):
prompt += "**Equations:**n" + "n".join(result_content['equations']) + "nn"
# Add a closing statement
prompt += "Answer is :"
# Define max_length
max_length = min(len(prompt) + 100, 750)
# Generate response
response = generator(prompt[:750], max_length=max_length, num_return_sequences=1, truncation=True, pad_token_id=50256)
生成された応答:GPT-2モデルは、プロンプトを使用して詳細な応答を生成します。

このスクリーンショットは、チャットボットがLLMSの基本に関するユーザークエリに応答する相互作用の例を示しています。
このモデルは、CPUリソースを使用してKaggleでトレーニングされました。
貢献は大歓迎です!問題を開くか、改善や新機能のプルリクエストを送信してください。
このプロジェクトは、MITライセンスの下でライセンスされています。詳細については、ライセンスファイルを参照してください。