이 저장소에는 Hugging Face의 변압기 모델 ( gpt2 )을 사용하여 구축 된 AI 봇의 구현이 포함되어 있습니다. 챗봇은 벡터 데이터베이스 스토리지 용 FAISS를 활용하여 사용자 쿼리와 관련 데이터와 효율적으로 일치합니다. 교육 및 응답 생성에 사용되는 데이터는 공식 Stanford LLM 과정에서 긁 혔습니다.
gpt2 모델을 사용합니다. 데이터 스크래핑 : 데이터는 Stanford LLM 과정의 다양한 강의에서 긁 힙니다. h2 , h3 및 <strong> 태그는 키 역할을하며 해당 컨텐츠는 단락, 테이블, 링크, 방정식, 주문 목록 및 비정규 목록으로 분류됩니다.
벡터 데이터베이스 (FAISS) : 키는 효율적인 검색을 위해 L2 거리를 사용하여 FAISS 벡터 데이터베이스에 저장됩니다. 사용자 쿼리가 수신되면 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 거리를 사용하여 벡터 데이터베이스에서 가장 가까운 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 모델은 프롬프트를 사용하여 자세한 응답을 생성합니다.

이 스크린 샷은 챗봇이 LLM의 기본 사항에 대한 사용자 쿼리에 응답하는 예제 상호 작용을 보여줍니다.
이 모델은 CPU 리소스를 사용하여 Kaggle에 대한 교육을 받았습니다.
기부금을 환영합니다! 개선 또는 새로운 기능에 대한 문제를 열거 나 풀 요청을 제출하십시오.
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.