Этот репозиторий содержит реализацию бота ИИ, созданного с использованием модели трансформатора ( gpt2 ), от обнимающего лица. Чатбот использует FAISS для хранилища векторной базы данных, чтобы эффективно соответствовать пользовательским запросам с соответствующими данными. Данные, используемые для обучения и генерации ответов, были сорваны из официального курса Стэнфордского LLM.
gpt2 от обнимающего лица. Сокращение данных : данные соскабливаются из различных лекций курса Stanford LLM. Теги h2 , h3 и <strong> служат клавишами, а соответствующий контент классифицируется на параграфы, таблицы, ссылки, уравнения, упорядоченные списки и неупорядоченные списки.
Векторная база данных (FAISS) : Клавики хранятся в векторной базе данных FAISS с использованием расстояния L2 для эффективного поиска. Когда пользовательский запрос получен, FAISS находит 2 лучших ближайших клавиш подходящих на основе сходства вектора.
Генерация приглашения : чат -бот строит структурированную подсказку, используя данные, полученные из FAISS. Эта подсказка включает в себя параграфы, таблицы, уравнения, ссылки, упорядоченные списки и неупорядоченные списки, относящиеся к соответствующим клавишам.
Генерация ответов : построенная подсказка подается в модель GPT-2 для создания последовательного и соответствующего ответа на пользовательский запрос.
Данные, сосказываемые из лекций курса Stanford LLM, имеют следующую схему:
key1:{
{
'paragraphs': [],
'tables': [],
'links': [],
'equations': [],
'ordered_lists': [],
'unordered_lists': []
} }
key2:{
{
'paragraphs': [],
'tables': [],
'links': [],
'equations': [],
'ordered_lists': [],
'unordered_lists': []
} }
Каждый ключ соответствует тегам h2 , h3 или <strong> со страниц лекции. Данные, связанные с каждым ключом, включают в себя параграфы, таблицы, ссылки, уравнения, упорядоченные списки и неупорядоченные списки, если они существуют.
Пользовательский запрос : «Что такое преимущества и вред?»
Поиск FAISS : запрос сопоставлен с двумя лучшими ближайшими ключами в векторной базе данных с использованием расстояния L2.
Быстрое строительство :
# 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.
Модель была обучена Kaggle с использованием ресурсов процессора.
Взносы приветствуются! Пожалуйста, откройте проблему или отправьте запрос на привлечение на любые улучшения или новые функции.
Этот проект лицензирован по лицензии MIT. Смотрите файл лицензии для получения подробной информации.