카테고리 없음

스파르타 AI-8기 TIL(11/21) -> 처음부터 계속하기

kimjunki-8 2024. 11. 21. 21:14
LangChain 계속
기본 LLM 체인의 구성 요소
프롬프트(Prompt): 사용자 또는 시스템에서 제공하는 입력으로, LLM에게 특정 작업을 수행하도록 요청하는 지시문입니다. 

LLM(Large Language Model): GPT, Gemini 등 대규모 언어 모델로, 대량의 텍스트 데이터에서 학습하여 언어를 이해하고 생성할 수 있는 인공지능 시스템입니다.

일반적인 작동 방식

프롬프트 생성: 사용자의 요구 사항이나 특정 작업을 정의하는 프롬프트를 생성합니다. 이 프롬프트는 LLM에게 전달되기 전, 작업의 목적과 맥락을 명확히 전달하기 위해 최적화될 수 있습니다.

LLM 처리: LLM은 제공된 프롬프트를 분석하고, 학습된 지식을 바탕으로 적절한 응답을 생성합니다. 이 과정에서 LLM은 내부적으로 다양한 언어 패턴과 내외부 지식을 활용하여, 요청된 작업을 수행하거나 정보를 제공합니다.

응답 반환: LLM에 의해 생성된 응답은 최종 사용자에게 필요한 형태로 변환되어 제공됩니다. 이 응답은 직접적인 답변, 생성된 텍스트, 요약된 정보 등 다양한 형태를 취할 수 있습니다.
import warnings
import os
import openai
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import PyPDFLoader
from uuid import uuid4
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
import faiss
from langchain_core.output_parsers import StrOutputParser
openai.api_key = os.getenv("OPENAI_API_KEY")
warnings.filterwarnings(action='ignore')

load1 = PyPDFLoader('C:/Users/kevinkim/Downloads/project/OS.pdf')
load2 = PyPDFLoader('C:/Users/kevinkim/Downloads/project/DL.pdf')
try:
    doc1 = load1.load()
    doc2 = load2.load()
except Exception as e:
        print(f'PDF 파일에 에러가 있습니다: {e}')


splitter = RecursiveCharacterTextSplitter(chunk_size = 1000, chunk_overlap = 100, length_function = len, is_separator_regex = False)
splitted_doc1 = splitter.split_documents(doc1)
splitted_doc2 = splitter.split_documents(doc2)

document = splitted_doc1 + splitted_doc2
uuids = [str(uuid4()) for _ in range(len(document))]

embeddings = HuggingFaceEmbeddings(model_name = 'sentence-transformers/all-MiniLM-L6-v2')
faiss = FAISS.from_documents(documents = document, embedding = embeddings, ids = uuids)

query = '딥러닝은 무엇인가요? 딥러닝과 머신러닝의 차이는?'
result = faiss.similarity_search(query, k = 3)

print(result)


사실 오늘부터 팀과제..TIL을 적을 시간이나 있을까???

일단 오늘치 전처리 작업까지는 완료했다... 과연...그래도 전처리에 대해 조금이나마 알게된 날이다.