LLM Application/LangChain

RAG App 개발 - Open Source 모델 사용

carrotweb 2026. 7. 23. 17:44
728x90
반응형

기존 소스에서 OpenAI 모델 대신 Hugging Face (허깅 페이스)에 있는 intfloat/multilingual-e5-large-instruct을 사용하여 임베딩을 하겠습니다.

 

Indexing (인덱싱) – Embed (임베드, 임베딩 모델)

1. project3에 QnA1.ipynb 파일에 텍스트 문서 임베딩 코드를 변경합니다.

[Markdown]
일반 텍스트 문서 임베딩 (huggingface)

[Code]
%pip install langchain-huggingface

[Code]
%pip install sentence-transformers

[Code]
from langchain_huggingface import HuggingFaceEmbeddings

embeddings_model = HuggingFaceEmbeddings(model_name="intfloat/multilingual-e5-large-instruct")

#embeddings = embeddings_model.embed_documents([text.page_content for text in texts])

#len(embeddings)

 

2. 첫번째 [Code]를 실행하여 langchain-huggingface를 설치합니다.

 

3. 두번째 [Code]를 실행하여 sentence-transformers를 설치합니다.

 

4. 텍스트 문서 임베딩 코드를 실행합니다.

모듈 저장 위치 : C:\Users\{사용자계정}\.cache\huggingface\hub

 

Indexing (인덱싱) – Store (저장)

 

이번에는 Chroma 대신 Faiss를 사용해보도록 하겠습니다.

 

Faiss (https://ai.meta.com/tools/faiss/)

Facebook AI Research에 의해 개발된 라이브러리로, 대규모 벡터 데이터셋에서 유사도 검색을 빠르고 효율적으로 수행할 수 있게 해줍니다. 메모리 사용량을 최소화하면서도 검색 속도를 극대화하는 특징이 있습니다.

 

Vector Stores (https://python.langchain.com/docs/how_to/vectorstores/)

 

1. project3에 QnA1.ipynb 파일에 벡터 스토어 저장 코드를 변경합니다. 벡터 스토어가 저장될 faiss_db 폴더를 생성합니다.

 

[Markdown]
벡터 스토어 저장 (Faiss)

[Code]
%pip install faiss-cpu

[Code]
from langchain_community.vectorstores import FAISS

vector_store = FAISS.from_documents(
    documents=texts,# 분할된 Document 객체 리스트
    embedding=embeddings_model # 사용할 임베딩 모델
)

# 저장될 디렉토리, 인덱스 명
vector_store.save_local("./faiss_db", "test_db")

 

2. 첫번째 [Code]를 실행하여 faiss-cpu를 설치합니다.

 

3. 벡터 스토어 저장 코드를 실행합니다. faiss_db 폴더에 벡터 스토어가 생성됩니다.

 

4. 벡터 스토어 쿼리 코드를 실행합니다.

 

 

Retrieval (검색) – Search (검색)

 

Faiss (https://python.langchain.com/docs/integrations/vectorstores/faiss/)

 

1. project3에 QnA2.ipynb 파일을 생성하고 벡터 스토어 검색 코드를 추가합니다.

[Markdown]
벡터 스토어 검색 (Faiss)

[Code]
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS

embeddings_model = HuggingFaceEmbeddings(model_name="intfloat/multilingual-e5-large-instruct")

loaded_vector_store = FAISS.load_local(
    folder_path="./faiss_db", # 저장된 디렉토리
    index_name="test_db", # 저장된 인덱스 명
    embeddings=embeddings_model, # 사용할 임베딩 모델
    allow_dangerous_deserialization=True # pickle 파일 역직렬화 허용 
)

retriever = loaded_vector_store.as_retriever(search_kwargs={"k": 5})

result_texts = retriever.invoke("중학생의 수학 기초학력 미달률은?")
result_texts

 

2. 벡터 스토어 검색 코드를 실행합니다.

 

벡터 스토어 검색 결과입니다.

[Document(id='fb8315b4-483c-4763-b361-af94b8e80ce0', metadata={'source': 'data/test.txt'}, page_content='교육부의 ‘2023 국가수준 학업성취도평가’에 따르면 중학생의 기초학력 미달률은 9.1%, 영어 6.0%, 수학 13.0%였으며 고등학생은 국어 8.6%, 영어 8.7%, 수학'),
 Document(id='6dcbfe08-1013-45d4-8d20-fcdbaae62393', metadata={'source': 'data/test.txt'}, page_content='8.6%, 영어 8.7%, 수학 16.6%로 집계됐다. 특히 수학의 기초학력 부진이 가장 높아 학습 격차 해소를 위한 지원이 필요한 상황이다.'),
 Document(id='241efdba-09b4-4e44-a74b-bcbd645eeb1e', metadata={'source': 'data/test.txt'}, page_content='테크빌교육 체더스, 기초학력 부진 해결을 위한 코스웨어 기획전 진행'),
 Document(id='babccbd5-7557-4c20-85ff-46534ad2b69b', metadata={'source': 'data/test.txt'}, page_content='기초 학력 향상에 특화된 에듀테크 솔루션을 특별 할인가로 제공한다.'),
 Document(id='2790ef3b-dab5-4a0e-8595-c054b6cdce53', metadata={'source': 'data/test.txt'}, page_content='이번 기획전에서는 AI 수학 학습 플랫폼 ‘매쓰홀릭 T’, AI 영어 학습 솔루션 ‘원아워’, 국어 문해력 학습 프로그램 ‘리드포스쿨’ 등 기초 학력 향상에 특화된 에듀테크')]

 

 

Generation (생성) – LLM (답변 생성)

1. 프롬프트 실행 코드를 실행합니다.

 

프롬프트를 여러번 실행한 결과입니다.

중학생의 수학 기초학력 미달률은 13.0%입니다. 이는 다른 과목에 비해 가장 높은 수치로, 학습 격차 해소를 위한 지원이 필요하다는 점이 강조되고 있습니다.
중학생의 수학 기초학력 미달률은 13.0%입니다. 이는 고등학생의 수학 기초학력 미달률인 16.6%보다 낮지만, 여전히 학습 격차 해소를 위한 지원이 필요합니다.

 

728x90
반응형